o
     Îj[ª ã                   @   s^  d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZ d dlmZmZ d dlmZ d dlmZ d dlmZ d d	lmZ zd dlZd
ZW n eyY   dZY nw G dd„ deƒZdJdd„Zdd„ Zdd„ Zdd„ Zdd„ Z dd„ Z!dd„ Z"dd„ Z#dd „ Z$d!d"„ Z%d#d$„ Z&G d%d&„ d&ej'ƒZ(G d'd(„ d(ej'ƒZ)G d)d*„ d*ej'ƒZ*G d+d,„ d,ej'ƒZ+G d-d.„ d.ej'ƒZ,G d/d0„ d0ej'ƒZ-G d1d2„ d2ej'ƒZ.G d3d4„ d4ej'ƒZ/G d5d6„ d6ej'ƒZ0G d7d8„ d8ej'ƒZ1G d9d:„ d:ej'ƒZ2G d;d<„ d<ej'ƒZ3G d=d>„ d>ej'ƒZ4G d?d@„ d@ej'ƒZ5G dAdB„ dBej'ƒZ6i fdCdD„Z7e8dEkr-dFdG„ Z9ej:dHdI dS dS )Ké    N)Ú	unhexlify)Úlist_test_cases)ÚbordÚtostrÚFileNotFoundError)ÚDerSequenceÚDerBitString)Úbytes_to_long)ÚSHAKE128)ÚECC)Ú_import_rfc5915_derTFc                   @   s   e Zd ZdS )ÚMissingTestVectorExceptionN)Ú__name__Ú
__module__Ú__qualname__© r   r   új/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/Crypto/SelfTest/PublicKey/test_import_ECC.pyr   6   s    r   Úrbc                 C   sÀ   d }z@t sttjt tj¡| ƒ‚d}tj tj	¡}tj 
tjj
|g|¢R Ž | ¡}t||ƒ}| ¡ }W d   ƒ n1 s<w   Y  W n tyS   tjdtdd Y nw |d u r^td|  ƒ‚|S )N)Z	PublicKeyr   zSkipping extended tests for ECCé   )Ú
stacklevelz
Missing %s)Útest_vectors_availabler   ÚerrnoÚENOENTÚosÚstrerrorÚpathÚdirnameÚpycryptodome_test_vectorsÚ__file__ÚjoinÚopenÚreadÚwarningsÚwarnÚUserWarningr   )Ú	file_nameÚmodeÚresultsZ	dir_compsZinit_dirZfull_file_nameZfile_inr   r   r   Ú	load_file:   s.   
þ
ÿ€
þÿr(   c                 C   s&   d  | ¡}tt|ƒ dd¡ dd¡ƒS )Nó    ú Ú ú:)r   r   r   Úreplace)ÚlinesÚextr   r   r   ÚcompactT   s   
r0   c                  C   óŽ   d} t dƒ ¡ }tt|dd… ƒƒ}t|dd… ƒ}t|d ƒdks$J ‚t|d| d … ƒ}t|| d d … ƒ}tjd	|d
tjd	||dfS )Né   zecc_p192.txtr   é   é   é	   r   é   zP-192©ÚcurveÚd©r8   Zpoint_xZpoint_y©r(   Ú
splitlinesr	   r0   r   r   Ú	construct©Zkey_lenÚ	key_linesZprivate_key_dZpublic_key_xyZpublic_key_xZpublic_key_yr   r   r   Úcreate_ref_keys_p192Y   ó   ÿr@   c                  C   r1   )Né   zecc_p224.txtr   r3   r4   r5   r   r6   zP-224r7   r:   r;   r>   r   r   r   Úcreate_ref_keys_p224f   rA   rC   c                  C   óŽ   d} t dƒ ¡ }tt|dd… ƒƒ}t|dd… ƒ}t|d ƒdks$J ‚t|d	| d	 … ƒ}t|| d	 d … ƒ}tjd
|dtjd
||dfS )Né    zecc_p256.txtr   r4   é   é   r   r3   r6   zP-256r7   r:   r;   r>   r   r   r   Úcreate_ref_keys_p256s   rA   rH   c                  C   rD   )Né0   zecc_p384.txtr   rF   é   é   r   r3   r6   zP-384r7   r:   r;   r>   r   r   r   Úcreate_ref_keys_p384€   rA   rL   c                  C   rD   )NéB   zecc_p521.txtr   rJ   é   é   r   r3   r6   zP-521r7   r:   r;   r>   r   r   r   Úcreate_ref_keys_p521   rA   rP   c                  C   ó6   t dƒ ¡ } t| dd… ƒ}tjd|d}|| ¡ fS )Nzecc_ed25519.txtr4   rN   ZEd25519©r8   Úseed©r(   r<   r0   r   r=   Ú
public_key©r?   rS   Úkeyr   r   r   Úcreate_ref_keys_ed25519š   ó   rX   c                  C   rQ   )Nzecc_ed448.txtrF   é
   ZEd448rR   rT   rV   r   r   r   Úcreate_ref_keys_ed448¡   rY   r[   c                   C   s   t  ¡  d¡jS )Ns   SEED)r
   ÚnewÚupdater!   r   r   r   r   Úget_fixed_prng«   s   r^   c                 C   s*   t ƒ }| | ¡ tƒ }| |d ¡ |jS )Nr6   )r   Údecoder   Úvalue)ÚdataÚseqÚbsr   r   r   Úextract_bitstring_from_spki¯   s
   
rd   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )Ú
TestImportc                 C   s   |   ttjd¡ d S )Nr)   ©ÚassertRaisesÚ
ValueErrorr   Ú
import_key©Úselfr   r   r   Ú
test_empty¹   s   zTestImport.test_emptyc                 C   s   d}|   ttj|¡ d S )Na1  -----BEGIN PRIVATE KEY-----
MIG2AgEAMBAGByqGSM49AgEGBSuBBAAiBIGeMIGbAgEBBDAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJChZANiAAQarFRaqflo
I+d61SRvU8Za2EurxtW20eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinng
o4N+LZfQYcTxmdwlkWOrfzCjtHDix6EznPO/LlxTsV+zfTJ/ijTjeXk=
-----END PRIVATE KEY-----rf   )rk   Zmismatchr   r   r   Útest_mismatch¼   s   zTestImport.test_mismatchc                 C   ó&   d}t t|ƒd dƒ}|  |jd¡ d S )NZN302502010104205c4e4320ef260f91ed9fc597aee98c8236b60e0ced692cc7a057d5e45798a052ú1.2.840.10045.3.1.7ì   R 1/‘W¾zL%-;[6S»^,~ÙòAÉ;!N\©r   r   ÚassertEqualr9   ©rk   Zdata_hexrW   r   r   r   Ú test_import_private_rfc5915_noneÆ   ó   z+TestImport.test_import_private_rfc5915_nonec                 C   s$   d}t t|ƒd ƒ}|  |jd¡ d S )NZf303102010104205c4e4320ef260f91ed9fc597aee98c8236b60e0ced692cc7a057d5e45798a052a00a06082a8648ce3d030107rp   rq   rs   r   r   r   Ú"test_import_private_rfc5915_only_0Ì   s   z-TestImport.test_import_private_rfc5915_only_0c                 C   rn   )NZÚ306b02010104205c4e4320ef260f91ed9fc597aee98c8236b60e0ced692cc7a057d5e45798a052a14403420004a40ad59a2050ebe92479bd5fb16bb2e45b6465eb3cb2b1effe423fabe6cb7424db8219ef0bab80acf26fd70595b61fe4760d33eed80dd03d2fd0dfb27b8ce75cro   rp   rq   rs   r   r   r   Ú"test_import_private_rfc5915_only_1Ò   ru   z-TestImport.test_import_private_rfc5915_only_1N)r   r   r   rl   rm   rt   rv   rw   r   r   r   r   re   ·   s    
re   c                       ó„   e Zd Z‡ fdd„Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Z‡  ZS )ÚTestImport_P192c                    ó(   t t| ƒj|i |¤Ž tƒ \| _| _d S ©N)Úsuperry   Ú__init__r@   Úref_privateÚ
ref_public©rk   ÚargsÚkwargs©Ú	__class__r   r   r}   Ú   ó   zTestImport_P192.__init__c                 C   óV   t dƒ}t |¡}|  | j|¡ t |d ¡}|  | j|¡ t |¡}|  | j|¡ d S )Núecc_p192_public.der©r(   r   Z_import_subjectPublicKeyInforr   r   Ú_import_derri   ©rk   Úkey_filerW   r   r   r   Útest_import_public_derÞ   ó   

z&TestImport_P192.test_import_public_derc                 C   ó0   t dƒ}t|ƒ}tj|dd}|  | j|¡ d S )Nr‡   ÚP192©Z
curve_name©r(   rd   r   ri   rr   r   ©rk   r‹   r`   rW   r   r   r   Útest_import_sec1_uncompressedê   ó   z-TestImport_P192.test_import_sec1_uncompressedc                 C   rŽ   )Núecc_p192_public_compressed.derr   r   r‘   r’   r   r   r   Útest_import_sec1_compressedð   r”   z+TestImport_P192.test_import_sec1_compressedc                 C   óX   t dƒ}t |d ¡}|  | j|¡ t |d ¡}|  | j|¡ t |¡}|  | j|¡ d S )Núecc_p192_private.der©r(   r   r   rr   r~   r‰   ri   rŠ   r   r   r   Útest_import_rfc5915_derö   ó   
z'TestImport_P192.test_import_rfc5915_derc                 C   ó>   t dƒ}t |d ¡}|  | j|¡ t |¡}|  | j|¡ d S )Núecc_p192_private_p8_clear.der©r(   r   r‰   rr   r~   ri   rŠ   r   r   r   Útest_import_private_pkcs8_clear  ó
   
z/TestImport_P192.test_import_private_pkcs8_clearc                 C   ó$   t dƒ}t |¡}|  | j|¡ d S )Núecc_p192_private_p8_clear.pem©r(   r   ri   rr   r~   rŠ   r   r   r   Ú&test_import_private_pkcs8_in_pem_clear  ó   
z6TestImport_P192.test_import_private_pkcs8_in_pem_clearc                 C   ó@   t dƒ}t |d¡}|  | j|¡ t |d¡}|  | j|¡ d S )Nzecc_p192_private_p8.derÚsecretrž   rŠ   r   r   r   Ú%test_import_private_pkcs8_encrypted_1  ó
   z5TestImport_P192.test_import_private_pkcs8_encrypted_1c                 C   ó&   t dƒ}t |d¡}|  | j|¡ d S )Nzecc_p192_private_p8.pemr§   r£   rŠ   r   r   r   Ú%test_import_private_pkcs8_encrypted_2  ó   z5TestImport_P192.test_import_private_pkcs8_encrypted_2c                 C   rœ   )Nzecc_p192_x509.der©r(   r   r‰   rr   r   ri   rŠ   r   r   r   Útest_import_x509_der   r    z$TestImport_P192.test_import_x509_derc                 C   r¡   )Núecc_p192_public.pem©r(   r   ri   rr   r   rŠ   r   r   r   Útest_import_public_pem)  r¥   z&TestImport_P192.test_import_public_pemc                 C   r¡   )Núecc_p192_private.pemr£   rŠ   r   r   r   Útest_import_private_pem/  r¥   z'TestImport_P192.test_import_private_pemc                 C   óR   dD ]$}t d| ƒ}t |d¡}|  | j|¡ t t|ƒd¡}|  | j|¡ qd S )N©Údes3Úaes128Úaes192Úaes256Z
aes256_gcmzecc_p192_private_enc_%s.pemr§   ó   secret©r(   r   ri   rr   r~   r   ©rk   Úalgor‹   rW   r   r   r   Ú!test_import_private_pem_encrypted5  ó   ùz1TestImport_P192.test_import_private_pem_encryptedc                 C   r¡   )Nzecc_p192_x509.pemr°   rŠ   r   r   r   Útest_import_x509_pem?  r¥   z$TestImport_P192.test_import_x509_pem)r   r   r   r}   rŒ   r“   r–   rš   rŸ   r¤   r¨   r«   r®   r±   r³   r¾   rÀ   Ú__classcell__r   r   rƒ   r   ry   Ø   s    			
ry   c                       sŒ   e Zd Z‡ fdd„Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Z‡  ZS )ÚTestImport_P224c                    rz   r{   )r|   rÂ   r}   rC   r~   r   r€   rƒ   r   r   r}   H  r…   zTestImport_P224.__init__c                 C   r†   )Núecc_p224_public.derrˆ   rŠ   r   r   r   rŒ   L  r   z&TestImport_P224.test_import_public_derc                 C   rŽ   )NrÃ   ÚP224r   r‘   r’   r   r   r   r“   X  r”   z-TestImport_P224.test_import_sec1_uncompressedc                 C   rŽ   )Núecc_p224_public_compressed.derrÄ   r   r‘   r’   r   r   r   r–   ^  r”   z+TestImport_P224.test_import_sec1_compressedc                 C   r—   )Núecc_p224_private.derr™   rŠ   r   r   r   rš   d  r›   z'TestImport_P224.test_import_rfc5915_derc                 C   rœ   )Núecc_p224_private_p8_clear.derrž   rŠ   r   r   r   rŸ   p  r    z/TestImport_P224.test_import_private_pkcs8_clearc                 C   r¡   )Núecc_p224_private_p8_clear.pemr£   rŠ   r   r   r   r¤   y  r¥   z6TestImport_P224.test_import_private_pkcs8_in_pem_clearc                 C   r¦   )Nzecc_p224_private_p8.derr§   rž   rŠ   r   r   r   r¨     r©   z5TestImport_P224.test_import_private_pkcs8_encrypted_1c                 C   rª   )Nzecc_p224_private_p8.pemr§   r£   rŠ   r   r   r   r«   ˆ  r¬   z5TestImport_P224.test_import_private_pkcs8_encrypted_2c                 C   r¦   )Nzecc_p224_private_p8_2.derr§   rž   rŠ   r   r   r   Ú%test_import_private_pkcs8_encrypted_3Ž  r©   z5TestImport_P224.test_import_private_pkcs8_encrypted_3c                 C   rœ   )Nzecc_p224_x509.derr­   rŠ   r   r   r   r®   —  r    z$TestImport_P224.test_import_x509_derc                 C   r¡   )Núecc_p224_public.pemr°   rŠ   r   r   r   r±      r¥   z&TestImport_P224.test_import_public_pemc                 C   r¡   )Núecc_p224_private.pemr£   rŠ   r   r   r   r³   ¦  r¥   z'TestImport_P224.test_import_private_pemc                 C   r´   )Nrµ   zecc_p224_private_enc_%s.pemr§   rº   r»   r¼   r   r   r   r¾   ¬  r¿   z1TestImport_P224.test_import_private_pem_encryptedc                 C   r¡   )Nzecc_p224_x509.pemr°   rŠ   r   r   r   rÀ   ¶  r¥   z$TestImport_P224.test_import_x509_pem)r   r   r   r}   rŒ   r“   r–   rš   rŸ   r¤   r¨   r«   rÉ   r®   r±   r³   r¾   rÀ   rÁ   r   r   rƒ   r   rÂ   F  s     				
rÂ   c                       s¬   e Zd Z‡ fdd„Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Z‡  ZS )'ÚTestImport_P256c                    rz   r{   )r|   rÌ   r}   rH   r~   r   r€   rƒ   r   r   r}   ¿  r…   zTestImport_P256.__init__c                 C   r†   )Núecc_p256_public.derrˆ   rŠ   r   r   r   rŒ   Ã  r   z&TestImport_P256.test_import_public_derc                 C   rŽ   )NrÍ   ÚP256r   r‘   r’   r   r   r   r“   Ï  r”   z-TestImport_P256.test_import_sec1_uncompressedc                 C   rŽ   )Núecc_p256_public_compressed.derrÎ   r   r‘   r’   r   r   r   r–   Õ  r”   z+TestImport_P256.test_import_sec1_compressedc                 C   r—   )Núecc_p256_private.derr™   rŠ   r   r   r   rš   Û  r›   z'TestImport_P256.test_import_rfc5915_derc                 C   rœ   )Núecc_p256_private_p8_clear.derrž   rŠ   r   r   r   rŸ   ç  r    z/TestImport_P256.test_import_private_pkcs8_clearc                 C   r¡   )Núecc_p256_private_p8_clear.pemr£   rŠ   r   r   r   r¤   ð  r¥   z6TestImport_P256.test_import_private_pkcs8_in_pem_clearc                 C   r¦   )Nzecc_p256_private_p8.derr§   rž   rŠ   r   r   r   r¨   ö  r©   z5TestImport_P256.test_import_private_pkcs8_encrypted_1c                 C   rª   )Nzecc_p256_private_p8.pemr§   r£   rŠ   r   r   r   r«   ÿ  r¬   z5TestImport_P256.test_import_private_pkcs8_encrypted_2c                 C   r¦   )Nzecc_p256_private_p8_2.derr§   rž   rŠ   r   r   r   rÉ     r©   z5TestImport_P256.test_import_private_pkcs8_encrypted_3c                 C   rœ   )Nzecc_p256_x509.derr­   rŠ   r   r   r   r®     r    z$TestImport_P256.test_import_x509_derc                 C   r¡   )Núecc_p256_public.pemr°   rŠ   r   r   r   r±     r¥   z&TestImport_P256.test_import_public_pemc                 C   r¡   )Núecc_p256_private.pemr£   rŠ   r   r   r   r³     r¥   z'TestImport_P256.test_import_private_pemc                 C   ó   t dƒ}t |¡}d S )Nzecc_p256_private_ecparams.pem©r(   r   ri   rŠ   r   r   r   Ú%test_import_private_pem_with_ecparams#  ó   z5TestImport_P256.test_import_private_pem_with_ecparamsc                 C   r´   )Nrµ   zecc_p256_private_enc_%s.pemr§   rº   r»   r¼   r   r   r   r¾   (  r¿   z1TestImport_P256.test_import_private_pem_encryptedc                 C   r¡   )Nzecc_p256_x509.pemr°   rŠ   r   r   r   rÀ   2  r¥   z$TestImport_P256.test_import_x509_pemc                 C   ó<   t dƒ}t |¡}|  | j|¡ t |¡}|  | j|¡ d S )Núecc_p256_public_openssh.txt©r(   r   Ú_import_openssh_publicrr   r   ri   rŠ   r   r   r   Útest_import_openssh_public8  ó
   

z*TestImport_P256.test_import_openssh_publicc                 C   ó4   t dƒ}t dƒ}t |¡}t |¡}|  ||¡ d S )Nzecc_p256_private_openssh.pemz ecc_p256_private_openssh_old.pem©r(   r   ri   rr   ©rk   r‹   Zkey_file_oldrW   Zkey_oldr   r   r   Ú!test_import_openssh_private_clearA  ó
   

z1TestImport_P256.test_import_openssh_private_clearc                 C   ó6   t dƒ}t dƒ}t |d¡}t |¡}|  ||¡ d S )Nz ecc_p256_private_openssh_pwd.pemz$ecc_p256_private_openssh_pwd_old.pemó   passwordrà   rá   r   r   r   Ú$test_import_openssh_private_passwordI  ó
   
z4TestImport_P256.test_import_openssh_private_password)r   r   r   r}   rŒ   r“   r–   rš   rŸ   r¤   r¨   r«   rÉ   r®   r±   r³   r×   r¾   rÀ   rÝ   râ   ræ   rÁ   r   r   rƒ   r   rÌ   ½  s(    				
	rÌ   c                       ó¤   e Zd Z‡ fdd„Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Z‡  ZS )%ÚTestImport_P384c                    rz   r{   )r|   ré   r}   rL   r~   r   r€   rƒ   r   r   r}   T  r…   zTestImport_P384.__init__c                 C   r†   )Núecc_p384_public.derrˆ   rŠ   r   r   r   rŒ   X  r   z&TestImport_P384.test_import_public_derc                 C   rŽ   )Nrê   ÚP384r   r‘   r’   r   r   r   r“   d  r”   z-TestImport_P384.test_import_sec1_uncompressedc                 C   rŽ   )Núecc_p384_public_compressed.derrë   r   r‘   r’   r   r   r   r–   j  r”   z+TestImport_P384.test_import_sec1_compressedc                 C   r—   )Núecc_p384_private.derr™   rŠ   r   r   r   rš   p  r›   z'TestImport_P384.test_import_rfc5915_derc                 C   rœ   )Núecc_p384_private_p8_clear.derrž   rŠ   r   r   r   rŸ   |  r    z/TestImport_P384.test_import_private_pkcs8_clearc                 C   r¡   )Núecc_p384_private_p8_clear.pemr£   rŠ   r   r   r   r¤   …  r¥   z6TestImport_P384.test_import_private_pkcs8_in_pem_clearc                 C   r¦   )Nzecc_p384_private_p8.derr§   rž   rŠ   r   r   r   r¨   ‹  r©   z5TestImport_P384.test_import_private_pkcs8_encrypted_1c                 C   rª   )Nzecc_p384_private_p8.pemr§   r£   rŠ   r   r   r   r«   ”  r¬   z5TestImport_P384.test_import_private_pkcs8_encrypted_2c                 C   r¦   )Nzecc_p384_private_p8_2.derr§   rž   rŠ   r   r   r   rÉ   š  r©   z5TestImport_P384.test_import_private_pkcs8_encrypted_3c                 C   rœ   )Nzecc_p384_x509.derr­   rŠ   r   r   r   r®   £  r    z$TestImport_P384.test_import_x509_derc                 C   r¡   )Núecc_p384_public.pemr°   rŠ   r   r   r   r±   ¬  r¥   z&TestImport_P384.test_import_public_pemc                 C   r¡   )Núecc_p384_private.pemr£   rŠ   r   r   r   r³   ²  r¥   z'TestImport_P384.test_import_private_pemc                 C   r´   )Nrµ   zecc_p384_private_enc_%s.pemr§   rº   r»   r¼   r   r   r   r¾   ¸  r¿   z1TestImport_P384.test_import_private_pem_encryptedc                 C   r¡   )Nzecc_p384_x509.pemr°   rŠ   r   r   r   rÀ   Â  r¥   z$TestImport_P384.test_import_x509_pemc                 C   rÙ   )Núecc_p384_public_openssh.txtrÛ   rŠ   r   r   r   rÝ   È  rÞ   z*TestImport_P384.test_import_openssh_publicc                 C   rß   )Nzecc_p384_private_openssh.pemz ecc_p384_private_openssh_old.pemrà   rá   r   r   r   râ   Ñ  rã   z1TestImport_P384.test_import_openssh_private_clearc                 C   rä   )Nz ecc_p384_private_openssh_pwd.pemz$ecc_p384_private_openssh_pwd_old.pemrå   rà   rá   r   r   r   ræ   Ù  rç   z4TestImport_P384.test_import_openssh_private_password©r   r   r   r}   rŒ   r“   r–   rš   rŸ   r¤   r¨   r«   rÉ   r®   r±   r³   r¾   rÀ   rÝ   râ   ræ   rÁ   r   r   rƒ   r   ré   R  ó&    				
	ré   c                       rè   )%ÚTestImport_P521c                    rz   r{   )r|   rõ   r}   rP   r~   r   r€   rƒ   r   r   r}   ä  r…   zTestImport_P521.__init__c                 C   r†   )Núecc_p521_public.derrˆ   rŠ   r   r   r   rŒ   è  r   z&TestImport_P521.test_import_public_derc                 C   rŽ   )Nrö   ÚP521r   r‘   r’   r   r   r   r“   ô  r”   z-TestImport_P521.test_import_sec1_uncompressedc                 C   rŽ   )Núecc_p521_public_compressed.derr÷   r   r‘   r’   r   r   r   r–   ú  r”   z+TestImport_P521.test_import_sec1_compressedc                 C   r—   )Núecc_p521_private.derr™   rŠ   r   r   r   rš      r›   z'TestImport_P521.test_import_rfc5915_derc                 C   rœ   )Núecc_p521_private_p8_clear.derrž   rŠ   r   r   r   rŸ     r    z/TestImport_P521.test_import_private_pkcs8_clearc                 C   r¡   )Núecc_p521_private_p8_clear.pemr£   rŠ   r   r   r   r¤     r¥   z6TestImport_P521.test_import_private_pkcs8_in_pem_clearc                 C   r¦   )Nzecc_p521_private_p8.derr§   rž   rŠ   r   r   r   r¨     r©   z5TestImport_P521.test_import_private_pkcs8_encrypted_1c                 C   rª   )Nzecc_p521_private_p8.pemr§   r£   rŠ   r   r   r   r«   $  r¬   z5TestImport_P521.test_import_private_pkcs8_encrypted_2c                 C   r¦   )Nzecc_p521_private_p8_2.derr§   rž   rŠ   r   r   r   rÉ   *  r©   z5TestImport_P521.test_import_private_pkcs8_encrypted_3c                 C   rœ   )Nzecc_p521_x509.derr­   rŠ   r   r   r   r®   3  r    z$TestImport_P521.test_import_x509_derc                 C   r¡   )Núecc_p521_public.pemr°   rŠ   r   r   r   r±   <  r¥   z&TestImport_P521.test_import_public_pemc                 C   r¡   )Núecc_p521_private.pemr£   rŠ   r   r   r   r³   B  r¥   z'TestImport_P521.test_import_private_pemc                 C   r´   )Nrµ   zecc_p521_private_enc_%s.pemr§   rº   r»   r¼   r   r   r   r¾   H  r¿   z1TestImport_P521.test_import_private_pem_encryptedc                 C   r¡   )Nzecc_p521_x509.pemr°   rŠ   r   r   r   rÀ   R  r¥   z$TestImport_P521.test_import_x509_pemc                 C   rÙ   )Núecc_p521_public_openssh.txtrÛ   rŠ   r   r   r   rÝ   X  rÞ   z*TestImport_P521.test_import_openssh_publicc                 C   rß   )Nzecc_p521_private_openssh.pemz ecc_p521_private_openssh_old.pemrà   rá   r   r   r   râ   a  rã   z1TestImport_P521.test_import_openssh_private_clearc                 C   rä   )Nz ecc_p521_private_openssh_pwd.pemz$ecc_p521_private_openssh_pwd_old.pemrå   rà   rá   r   r   r   ræ   i  rç   z4TestImport_P521.test_import_openssh_private_passwordró   r   r   rƒ   r   rõ   â  rô   rõ   c                       rè   )%ÚTestExport_P192c                    rz   r{   )r|   rÿ   r}   r@   r~   r   r€   rƒ   r   r   r}   t  r…   zTestExport_P192.__init__c                 C   óZ   t dƒ}| j d¡}|  ||¡ | jjdd}|  ||¡ | jjddd}|  ||¡ d S )Nr‡   FÚDER©Úformat©r  Úcompress©r(   r   Z_export_subjectPublicKeyInforr   Ú
export_key©rk   r‹   Úencodedr   r   r   Ú#test_export_public_der_uncompressedx  ó   z3TestExport_P192.test_export_public_der_uncompressedc                 C   ó8   t dƒ}t |¡}|jddd}t dƒ}|  ||¡ d S )Nr‡   r  Tr  r•   ©r(   r   ri   r  rr   ©rk   r‹   Úpub_keyÚkey_file_compressedÚkey_file_compressed_refr   r   r   Ú!test_export_public_der_compressed„  ó
   
z1TestExport_P192.test_export_public_der_compressedc                 C   ó.   t dƒ}t|ƒ}| jjdd}|  ||¡ d S )Nr‡   ÚSEC1r  ©r(   rd   r   r  rr   ©rk   r‹   r`   r	  r   r   r   Ú$test_export_public_sec1_uncompressedŒ  ó   z4TestExport_P192.test_export_public_sec1_uncompressedc                 C   ó8   t dƒ}| jjddd}t dƒ}t|ƒ}|  ||¡ d S )Nr‡   r  Tr  r•   ©r(   r   r  rd   rr   ©rk   r‹   r	  r  r`   r   r   r   Ú"test_export_public_sec1_compressed“  ó
   z2TestExport_P192.test_export_public_sec1_compressedc                 C   ó>   t dƒ}| j ¡ }|  ||¡ | jjddd}|  ||¡ d S )Nr˜   r  F©r  Ú	use_pkcs8©r(   r~   Z_export_rfc5915_private_derrr   r  r  r   r   r   Útest_export_rfc5915_private_der›  ó
   
z/TestExport_P192.test_export_rfc5915_private_derc                 C   ó<   t dƒ}| j ¡ }|  ||¡ | jjdd}|  ||¡ d S )Nr   r  r  ©r(   r~   Ú_export_pkcs8rr   r  r  r   r   r   Útest_export_private_pkcs8_clear¦  ó
   
z/TestExport_P192.test_export_private_pkcs8_clearc                 C   óž   | j jddd}|  ttj|d ¡ t |d¡}|  | j |¡ | j jdddd}t |d¡}|  | j |¡ | j jdddddid	}t |d¡}|  | j |¡ d S )
Nr§   ú PBKDF2WithHMAC-SHA1AndAES128-CBC©Ú
passphraseÚ
protectionr  ©r  r-  r.  z"PBKDF2WithHMAC-SHA224AndAES192-CBCÚiteration_counté{   ©r  r-  r.  Zprot_params©	r~   r'  rg   rh   r   Z_import_pkcs8rr   r  ri   ©rk   r	  Údecodedr   r   r   Ú#test_export_private_pkcs8_encrypted±  ó&   ÿþýz3TestExport_P192.test_export_private_pkcs8_encryptedc                 C   ó`   t ddƒ ¡ }| j d¡}|  ||¡ | jjdd}|  ||¡ | jjddd}|  ||¡ d S )Nr¯   ÚrtFÚPEMr  r  ©r(   Ústripr~   Z_export_public_pemrr   r   r  r  r   r   r   Ú#test_export_public_pem_uncompressedÌ  ó   z3TestExport_P192.test_export_public_pem_uncompressedc                 C   óD   t ddƒ ¡ }t |¡}|jddd}t ddƒ ¡ }|  ||¡ d S )Nr¯   r9  r:  Tr  zecc_p192_public_compressed.pem©r(   r<  r   ri   r  rr   r  r   r   r   Ú!test_export_public_pem_compressedÚ  ó
   
z1TestExport_P192.test_export_public_pem_compressedc                 C   óF   t ddƒ ¡ }| j d ¡}|  ||¡ | jjddd}|  ||¡ d S )Nr²   r9  r:  Fr   ©r(   r<  r~   Ú_export_private_pemrr   r  r  r   r   r   Útest_export_private_pem_clearã  ó
   z-TestExport_P192.test_export_private_pem_clearc                 C   ót   | j jdd}|  ttj|¡ d|v sJ ‚t |d¡}|  | j |¡ | j jdddd}t |d¡}|  | j |¡ d S ©Nrº   )r-  zEC PRIVATE KEYr§   r:  F©r  r-  r!  ©r~   rE  rg   rh   r   ri   rr   r  r4  r   r   r   Ú!test_export_private_pem_encryptedî  ó   þz1TestExport_P192.test_export_private_pem_encryptedc                 C   óB   t ddƒ ¡ }| j ¡ }|  ||¡ | jjdd}|  ||¡ d S )Nr¢   r9  r:  r  ©r(   r<  r~   Z(_export_private_clear_pkcs8_in_clear_pemrr   r  r  r   r   r   Ú#test_export_private_pkcs8_and_pem_1  ó
   
z3TestExport_P192.test_export_private_pkcs8_and_pem_1c                 C   óv   | j jddd}|  ttj|¡ d|v sJ ‚t |d¡}|  | j |¡ | j jdddd}t |d¡}|  | j |¡ d S ©Nr§   r+  )r.  úENCRYPTED PRIVATE KEYr:  r/  ©r~   Z,_export_private_encrypted_pkcs8_in_clear_pemrg   rh   r   ri   rr   r  r4  r   r   r   Ú#test_export_private_pkcs8_and_pem_2  ó   ÿþz3TestExport_P192.test_export_private_pkcs8_and_pem_2c                 C   ót   | j jdddtƒ d}| j jdddtƒ d}|  ||¡ | j jdddtƒ d}| j jdddtƒ d}|  ||¡ d S ©Nr:  r§   r+  ©r  r-  r.  ÚrandfuncF©r  r!  r-  r[  ©r~   r  r^   rr   ©rk   Zencoded1Zencoded2r   r   r   Ú	test_prng"  ó,   ýýýýzTestExport_P192.test_prngc                 C   ó<   | j jdddtƒ d}| j jdddtƒ d}|  ||¡ d S ©Nr:  Fr§   r\  rº   r]  r^  r   r   r   Útest_byte_or_string_passphrase:  ó   ýýz.TestExport_P192.test_byte_or_string_passphrasec                 C   ó    | j t| jjdd | jjdddd | j t| jjddd | j t| jjdddd	d
 | j t| jjddd | j t| jjdddd | j t| jjddd	d d S ©NÚXXXr  r:  r§   FrJ  ©r  r-  r  r+  ©r  r-  r!  r.  r   r+   r/  ©rg   rh   r~   r  r   rj   r   r   r   Útest_error_params1E  ó,   
ÿÿýÿÿ
þz"TestExport_P192.test_error_params1c                 C   óX   d}d}t  |¡}t|jjd ƒ}|  |d¡ t  |¡}t|jjd ƒ}|  |d¡ d S )Nzâ-----BEGIN EC PRIVATE KEY-----
        MF8CAQEEGHvhXmIW95JxZYfd4AUPu9BwknjuvS36aqAKBggqhkjOPQMBAaE0AzIA
        BLJZCyTu35DQIlqvMlBynn3k1Ig+dWfg/brRhHecxptrbloqFSP8ITw0CwbGF+2X
        5g==
        -----END EC PRIVATE KEY-----zâ-----BEGIN EC PRIVATE KEY-----
        MF8CAQEEGA3rAotUaWl7d47eX6tz9JmLzOMJwl13XaAKBggqhkjOPQMBAaE0AzIA
        BG4tHlTBBBGokcWmGm2xubVB0NvPC/Ou5AYwivs+3iCxmEjsymVAj6iiuX2Lxr6g
        /Q==
        -----END EC PRIVATE KEY-----é   iæ—  iý   ©r   ri   ÚintZpointQÚyrr   ©rk   Zpem1Zpem2Úkey1Zlow16Úkey2r   r   r   Útest_compressed_curve`  ó   

z%TestExport_P192.test_compressed_curve©r   r   r   r}   r
  r  r  r  r#  r(  r6  r=  rA  rF  rL  rP  rV  r_  rc  rk  ru  rÁ   r   r   rƒ   r   rÿ   r  s&    	rÿ   c                       rè   )%ÚTestExport_P224c                    rz   r{   )r|   rx  r}   rC   r~   r   r€   rƒ   r   r   r}   {  r…   zTestExport_P224.__init__c                 C   r   )NrÃ   Fr  r  r  r  r  r   r   r   r
    r  z3TestExport_P224.test_export_public_der_uncompressedc                 C   r  )NrÃ   r  Tr  rÅ   r  r  r   r   r   r  ‹  r  z1TestExport_P224.test_export_public_der_compressedc                 C   r  )NrÃ   r  r  r  r  r   r   r   r  “  r  z4TestExport_P224.test_export_public_sec1_uncompressedc                 C   r  )NrÃ   r  Tr  rÅ   r  r  r   r   r   r  š  r  z2TestExport_P224.test_export_public_sec1_compressedc                 C   r  )NrÆ   r  Fr   r"  r  r   r   r   r#  ¢  r$  z/TestExport_P224.test_export_rfc5915_private_derc                 C   r%  )NrÇ   r  r  r&  r  r   r   r   r(  ­  r)  z/TestExport_P224.test_export_private_pkcs8_clearc                 C   sr   | j jddd}|  ttj|d ¡ t |d¡}|  | j |¡ | j jdddddid}t |d¡}|  | j |¡ d S )	Nr§   r+  r,  r  z&PBKDF2WithHMAC-SHA512-224AndAES128-CBCr0  r1  r2  r3  r4  r   r   r   r6  ¸  s   ÿýz3TestExport_P224.test_export_private_pkcs8_encryptedc                 C   r8  )NrÊ   r9  Fr:  r  r  r;  r  r   r   r   r=  Ë  r>  z3TestExport_P224.test_export_public_pem_uncompressedc                 C   r?  )NrÊ   r9  r:  Tr  zecc_p224_public_compressed.pemr@  r  r   r   r   rA  Ù  rB  z1TestExport_P224.test_export_public_pem_compressedc                 C   rC  )NrË   r9  r:  Fr   rD  r  r   r   r   rF  â  rG  z-TestExport_P224.test_export_private_pem_clearc                 C   rH  rI  rK  r4  r   r   r   rL  í  rM  z1TestExport_P224.test_export_private_pem_encryptedc                 C   rN  )NrÈ   r9  r:  r  rO  r  r   r   r   rP     rQ  z3TestExport_P224.test_export_private_pkcs8_and_pem_1c                 C   rR  rS  rU  r4  r   r   r   rV    rW  z3TestExport_P224.test_export_private_pkcs8_and_pem_2c                 C   rX  rY  r]  r^  r   r   r   r_  !  r`  zTestExport_P224.test_prngc                 C   ra  rb  r]  r^  r   r   r   rc  9  rd  z.TestExport_P224.test_byte_or_string_passphrasec                 C   re  rf  rj  rj   r   r   r   rk  D  rl  z"TestExport_P224.test_error_params1c                 C   rm  )Nzî-----BEGIN EC PRIVATE KEY-----
        MGgCAQEEHPYicBNI9nd6wDKAX2l+f3A0Q+KWUQeMqSt5GoOgBwYFK4EEACGhPAM6
        AATCL6rUIDT14zXKoS5GQUMDP/tpc+1iI/FyEZikt2roKDkhU5q08srmqaysbfJN
        eUr7Xf1lnCVGag==
        -----END EC PRIVATE KEY-----zî-----BEGIN EC PRIVATE KEY-----
        MGgCAQEEHEFjbaVPLJ3ngZyCibCvT0RLUqSlHjC5Z3e0FtugBwYFK4EEACGhPAM6
        AAT5IvL2V6m48y1JLMGr6ZbnOqNKP9hMf9mxyVkk6/SaRoBoJVkXrNIpYL0P7DS7
        QF8E/OGeZRwvow==
        -----END EC PRIVATE KEY-----rn  ijF  i£/  ro  rr  r   r   r   ru  _  rv  z%TestExport_P224.test_compressed_curverw  r   r   rƒ   r   rx  y  s&    	rx  c                       ó´   e Zd Z‡ fdd„Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Z‡  ZS ))ÚTestExport_P256c                    rz   r{   )r|   rz  r}   rH   r~   r   r€   rƒ   r   r   r}   z  r…   zTestExport_P256.__init__c                 C   r   )NrÍ   Fr  r  r  r  r  r   r   r   r
  ~  r  z3TestExport_P256.test_export_public_der_uncompressedc                 C   r  )NrÍ   r  Tr  rÏ   r  r  r   r   r   r  Š  r  z1TestExport_P256.test_export_public_der_compressedc                 C   r  )NrÍ   r  r  r  r  r   r   r   r  ’  r  z4TestExport_P256.test_export_public_sec1_uncompressedc                 C   r  )NrÍ   r  Tr  rÏ   r  r  r   r   r   r  ™  r  z2TestExport_P256.test_export_public_sec1_compressedc                 C   r  )NrÐ   r  Fr   r"  r  r   r   r   r#  ¡  r$  z/TestExport_P256.test_export_rfc5915_private_derc                 C   r%  )NrÑ   r  r  r&  r  r   r   r   r(  ¬  r)  z/TestExport_P256.test_export_private_pkcs8_clearc                 C   r*  )
Nr§   r+  r,  r  r/  z&PBKDF2WithHMAC-SHA512-256AndAES128-CBCr0  r1  r2  r3  r4  r   r   r   r6  ·  r7  z3TestExport_P256.test_export_private_pkcs8_encryptedc                 C   r8  )NrÓ   r9  Fr:  r  r  r;  r  r   r   r   r=  Ò  r>  z3TestExport_P256.test_export_public_pem_uncompressedc                 C   r?  )NrÓ   r9  r:  Tr  zecc_p256_public_compressed.pemr@  r  r   r   r   rA  à  rB  z1TestExport_P256.test_export_public_pem_compressedc                 C   rC  )NrÔ   r9  r:  Fr   rD  r  r   r   r   rF  é  rG  z-TestExport_P256.test_export_private_pem_clearc                 C   rH  rI  rK  r4  r   r   r   rL  ô  rM  z1TestExport_P256.test_export_private_pem_encryptedc                 C   rN  )NrÒ   r9  r:  r  rO  r  r   r   r   rP    rQ  z3TestExport_P256.test_export_private_pkcs8_and_pem_1c                 C   rR  rS  rU  r4  r   r   r   rV    rW  z3TestExport_P256.test_export_private_pkcs8_and_pem_2c                 C   ó\   t ddƒ}| j d¡}|  ||¡ | jjdd}|  ||¡ | jjddd}|  ||¡ d S )NrÚ   r9  FÚOpenSSHr  r  ©r(   r   Ú_export_opensshrr   r  r  r   r   r   Ú test_export_openssh_uncompressed(  ó   
z0TestExport_P256.test_export_openssh_uncompressedc                 C   óL   t ddƒ}t |¡}|jddd}t|ƒt|ƒksJ ‚|  |t |¡¡ d S )NrÚ   r9  r|  Tr  ©r(   r   ri   r  Úlenrr   ©rk   r‹   r  r  r   r   r   Útest_export_openssh_compressed6  ó
   

z.TestExport_P256.test_export_openssh_compressedc                 C   rX  rY  r]  r^  r   r   r   r_  >  r`  zTestExport_P256.test_prngc                 C   ra  rb  r]  r^  r   r   r   rc  V  rd  z.TestExport_P256.test_byte_or_string_passphrasec                 C   ó¶   | j t| jjdd | jjdddd | j t| jjddd | j t| jjdddd	d
 | j t| jjddd | j t| jjdddd | j t| jjddd	d | j t| jjddd d S ©Nrg  r  r:  r§   FrJ  rh  r  r+  ri  r   r+   r/  r|  rj  rj   r   r   r   rk  a  ó2   
ÿÿýÿÿþ
ÿz"TestExport_P256.test_error_params1c                 C   rm  )NzÍ-----BEGIN EC PRIVATE KEY-----
        MFcCAQEEIHTuc09jC51xXomV6MVCDN+DpAAvSmaJWZPTEHM6D5H1oAoGCCqGSM49
        AwEHoSQDIgACWFuGbHe8yJ43rir7PMTE9w8vHz0BSpXHq90Xi7/s+a0=
        -----END EC PRIVATE KEY-----zÍ-----BEGIN EC PRIVATE KEY-----
        MFcCAQEEIFggiPN9SQP+FAPTCPp08fRUz7rHp2qNBRcBJ1DXhb3ZoAoGCCqGSM49
        AwEHoSQDIgADLpph1trTIlVfa8NJvlMUPyWvL+wP+pW3BJITUL/wj9A=
        -----END EC PRIVATE KEY-----rn  iü¦  iWn  ro  rr  r   r   r   ru    s   

z%TestExport_P256.test_compressed_curve©r   r   r   r}   r
  r  r  r  r#  r(  r6  r=  rA  rF  rL  rP  rV  r  r…  r_  rc  rk  ru  rÁ   r   r   rƒ   r   rz  x  s*    	 rz  c                       ry  ))ÚTestExport_P384c                    rz   r{   )r|   r‹  r}   rL   r~   r   r€   rƒ   r   r   r}   š  r…   zTestExport_P384.__init__c                 C   r   )Nrê   Fr  r  r  r  r  r   r   r   r
  ž  r  z3TestExport_P384.test_export_public_der_uncompressedc                 C   r  )Nrê   r  Tr  rì   r  r  r   r   r   r  ª  r  z1TestExport_P384.test_export_public_der_compressedc                 C   r  )Nrê   r  r  r  r  r   r   r   r  ²  r  z4TestExport_P384.test_export_public_sec1_uncompressedc                 C   r  )Nrê   r  Tr  rì   r  r  r   r   r   r  ¹  r  z2TestExport_P384.test_export_public_sec1_compressedc                 C   r  )Nrí   r  Fr   r"  r  r   r   r   r#  Á  r$  z/TestExport_P384.test_export_rfc5915_private_derc                 C   r%  )Nrî   r  r  r&  r  r   r   r   r(  Ì  r)  z/TestExport_P384.test_export_private_pkcs8_clearc                 C   r*  ©
Nr§   r+  r,  r  r/  z"PBKDF2WithHMAC-SHA384AndAES128-CBCr0  r1  r2  r3  r4  r   r   r   r6  ×  r7  z3TestExport_P384.test_export_private_pkcs8_encryptedc                 C   r8  )Nrð   r9  Fr:  r  r  r;  r  r   r   r   r=  ò  r>  z3TestExport_P384.test_export_public_pem_uncompressedc                 C   r?  )Nrð   r9  r:  Tr  zecc_p384_public_compressed.pemr@  r  r   r   r   rA     rB  z1TestExport_P384.test_export_public_pem_compressedc                 C   rC  )Nrñ   r9  r:  Fr   rD  r  r   r   r   rF  	  rG  z-TestExport_P384.test_export_private_pem_clearc                 C   rH  rI  rK  r4  r   r   r   rL    rM  z1TestExport_P384.test_export_private_pem_encryptedc                 C   rN  )Nrï   r9  r:  r  rO  r  r   r   r   rP  '  rQ  z3TestExport_P384.test_export_private_pkcs8_and_pem_1c                 C   rR  rS  rU  r4  r   r   r   rV  3  rW  z3TestExport_P384.test_export_private_pkcs8_and_pem_2c                 C   r{  )Nrò   r9  Fr|  r  r  r}  r  r   r   r   r  H  r€  z0TestExport_P384.test_export_openssh_uncompressedc                 C   r  )Nrò   r9  r|  Tr  r‚  r„  r   r   r   r…  V  r†  z.TestExport_P384.test_export_openssh_compressedc                 C   rX  rY  r]  r^  r   r   r   r_  ^  r`  zTestExport_P384.test_prngc                 C   ra  rb  r]  r^  r   r   r   rc  v  rd  z.TestExport_P384.test_byte_or_string_passphrasec                 C   r‡  rˆ  rj  rj   r   r   r   rk    r‰  z"TestExport_P384.test_error_params1c                 C   rm  )Na  -----BEGIN EC PRIVATE KEY-----
MIGkAgEBBDAM0lEIhvXuekK2SWtdbgOcZtBaxa9TxfpO/GcDFZLCJ3JVXaTgwken
QT+C+XLtD6WgBwYFK4EEACKhZANiAATs0kZMhFDu8DoBC21jrSDPyAUn4aXZ/DM4
ylhDfWmb4LEbeszXceIzfhIUaaGs5y1xXaqf5KXTiAAYx2pKUzAAM9lcGUHCGKJG
k4AgUmVJON29XoUilcFrzjDmuye3B6Q=
-----END EC PRIVATE KEY-----a  -----BEGIN EC PRIVATE KEY-----
MIGkAgEBBDDHPFTslYLltE16fHdSDTtE/2HTmd3M8mqy5MttAm4wZ833KXiGS9oe
kFdx9sNV0KygBwYFK4EEACKhZANiAASLIE5RqVMtNhtBH/u/p/ifqOAlKnK/+RrQ
YC46ZRsnKNayw3wATdPjgja7L/DSII3nZK0G6KOOVwJBznT/e+zudUJYhZKaBLRx
/bgXyxUtYClOXxb1Y/5N7txLstYRyP0=
-----END EC PRIVATE KEY-----rn  i¤  iýÈ  ro  rr  r   r   r   ru     s   

z%TestExport_P384.test_compressed_curverŠ  r   r   rƒ   r   r‹  ˜  s*    	r‹  c                       ry  ))ÚTestExport_P521c                    rz   r{   )r|   r  r}   rP   r~   r   r€   rƒ   r   r   r}   ¿  r…   zTestExport_P521.__init__c                 C   r   )Nrö   Fr  r  r  r  r  r   r   r   r
  Ã  r  z3TestExport_P521.test_export_public_der_uncompressedc                 C   r  )Nrö   r  Tr  rø   r  r  r   r   r   r  Ï  r  z1TestExport_P521.test_export_public_der_compressedc                 C   sH   t dƒ}t|ƒ}| jjdd}|  ||¡ | jjdd}|  ||¡ d S )Nrö   r  r  Úrawr  r  r   r   r   r  ×  s   z4TestExport_P521.test_export_public_sec1_uncompressedc                 C   sT   t dƒ}| jjddd}t dƒ}t|ƒ}|  ||¡ | jjddd}|  ||¡ d S )Nrö   r  Tr  rø   rŽ  r  r  r   r   r   r  á  s   z2TestExport_P521.test_export_public_sec1_compressedc                 C   r  )Nrù   r  Fr   r"  r  r   r   r   r#  ì  r$  z/TestExport_P521.test_export_rfc5915_private_derc                 C   r%  )Nrú   r  r  r&  r  r   r   r   r(  ÷  r)  z/TestExport_P521.test_export_private_pkcs8_clearc                 C   sž   | j jddd}|  ttj|d ¡ t |d¡}|  | j |¡ | j jdddd}t |d¡}|  | j |¡ | j jdddddid}t |d¡}|  | j |¡ d S )	Nr§   r+  r,  r  r/  r0  r1  r2  r3  r4  r   r   r   r6    r7  z3TestExport_P521.test_export_private_pkcs8_encryptedc                 C   r8  )Nrü   r9  Fr:  r  r  r;  r  r   r   r   r=    r>  z3TestExport_P521.test_export_public_pem_uncompressedc                 C   r?  )Nrü   r9  r:  Tr  zecc_p521_public_compressed.pemr@  r  r   r   r   rA  +  rB  z1TestExport_P521.test_export_public_pem_compressedc                 C   rC  )Nrý   r9  r:  Fr   rD  r  r   r   r   rF  4  rG  z-TestExport_P521.test_export_private_pem_clearc                 C   rH  rI  rK  r4  r   r   r   rL  ?  rM  z1TestExport_P521.test_export_private_pem_encryptedc                 C   rN  )Nrû   r9  r:  r  rO  r  r   r   r   rP  R  rQ  z3TestExport_P521.test_export_private_pkcs8_and_pem_1c                 C   rR  rS  rU  r4  r   r   r   rV  ^  rW  z3TestExport_P521.test_export_private_pkcs8_and_pem_2c                 C   r{  )Nrþ   r9  Fr|  r  r  r}  r  r   r   r   r  s  r€  z0TestExport_P521.test_export_openssh_uncompressedc                 C   r  )Nrþ   r9  r|  Tr  r‚  r„  r   r   r   r…    r†  z.TestExport_P521.test_export_openssh_compressedc                 C   rX  rY  r]  r^  r   r   r   r_  ‰  r`  zTestExport_P521.test_prngc                 C   ra  rb  r]  r^  r   r   r   rc  ¡  rd  z.TestExport_P521.test_byte_or_string_passphrasec                 C   r‡  rˆ  rj  rj   r   r   r   rk  ¬  r‰  z"TestExport_P521.test_error_params1c                 C   rm  )Nal  -----BEGIN EC PRIVATE KEY-----
MIHcAgEBBEIAnm1CEjVjvNfXEN730p+D6su5l+mOztdc5XmTEoti+s2R4GQ4mAv3
0zYLvyklvOHw0+yy8d0cyGEJGb8T3ZVKmg2gBwYFK4EEACOhgYkDgYYABAHzjTI1
ckxQ3Togi0LAxiG0PucdBBBs5oIy3df95xv6SInp70z+4qQ2EltEmdNMssH8eOrl
M5CYdZ6nbcHMVaJUvQEzTrYxvFjOgJiOd+E9eBWbLkbMNqsh1UKVO6HbMbW0ohCI
uGxO8tM6r3w89/qzpG2SvFM/fvv3mIR30wSZDD84qA==
-----END EC PRIVATE KEY-----al  -----BEGIN EC PRIVATE KEY-----
MIHcAgEBBEIB84OfhJluLBRLn3+cC/RQ37C2SfQVP/t0gQK2tCsTf5avRcWYRrOJ
PmX9lNnkC0Hobd75QFRmdxrB0Wd1/M4jZOWgBwYFK4EEACOhgYkDgYYABAAMZcdJ
1YLCGHt3bHCEzdidVy6+brlJIbv1aQ9fPQLF7WKNv4c8w3H8d5a2+SDZilBOsk5c
6cNJDMz2ExWQvxl4CwDJtJGt1+LHVKFGy73NANqVxMbRu+2F8lOxkNp/ziFTbVyV
vv6oYkMIIi7r5oQWAiQDrR2mlrrFDL9V7GH/r8SWQw==
-----END EC PRIVATE KEY-----rn  i¨8  iC–  ro  rr  r   r   r   ru  Ë  s   	

z%TestExport_P521.test_compressed_curverŠ  r   r   rƒ   r   r  ½  s*    
	r  c                       rx   )ÚTestImport_Ed25519c                    rz   r{   )r|   r  r}   rX   r~   r   r€   rƒ   r   r   r}   ì  r…   zTestImport_Ed25519.__init__c                 C   r†   )Núecc_ed25519_public.derrˆ   rŠ   r   r   r   rŒ   ð  r   z)TestImport_Ed25519.test_import_public_derc                 C   rœ   )Núecc_ed25519_private.derrž   rŠ   r   r   r   Útest_import_pkcs8_derü  r    z(TestImport_Ed25519.test_import_pkcs8_derc                 C   r¦   )Nzecc_ed25519_private_p8.derr§   rž   rŠ   r   r   r   r¨   	  r©   z8TestImport_Ed25519.test_import_private_pkcs8_encrypted_1c                 C   rª   )Nzecc_ed25519_private_p8.pemr§   r£   rŠ   r   r   r   r«   	  r¬   z8TestImport_Ed25519.test_import_private_pkcs8_encrypted_2c                 C   r¦   )Nzecc_ed25519_private_p8_2.derr§   rž   rŠ   r   r   r   rÉ   	  r©   z8TestImport_Ed25519.test_import_private_pkcs8_encrypted_3c                 C   rœ   )Nzecc_ed25519_x509.derr­   rŠ   r   r   r   r®   	  r    z'TestImport_Ed25519.test_import_x509_derc                 C   r¡   )Núecc_ed25519_public.pemr°   rŠ   r   r   r   r±   &	  r¥   z)TestImport_Ed25519.test_import_public_pemc                 C   r¡   )Núecc_ed25519_private.pemr£   rŠ   r   r   r   r³   ,	  r¥   z*TestImport_Ed25519.test_import_private_pemc                 C   r´   )N©r¶   r·   r¸   r¹   zecc_ed25519_private_enc_%s.pemr§   rº   r»   r¼   r   r   r   r¾   2	  r¿   z4TestImport_Ed25519.test_import_private_pem_encryptedc                 C   r¡   )Nzecc_ed25519_x509.pemr°   rŠ   r   r   r   rÀ   <	  r¥   z'TestImport_Ed25519.test_import_x509_pemc                 C   s<   t dƒ}t |¡}|  | ¡ ¡ t |¡}|  | ¡ ¡ d S )Núecc_ed25519_public_openssh.txt)r(   r   rÜ   ZassertFalseZhas_privateri   rŠ   r   r   r   rÝ   B	  s
   

z-TestImport_Ed25519.test_import_openssh_publicc                 C   rÕ   )Nzecc_ed25519_private_openssh.pemrÖ   rŠ   r   r   r   râ   I	  rØ   z4TestImport_Ed25519.test_import_openssh_private_clearc                 C   s   t dƒ}t |d¡}d S )Nz#ecc_ed25519_private_openssh_pwd.pemrå   rÖ   rŠ   r   r   r   ræ   M	  s   z7TestImport_Ed25519.test_import_openssh_private_password)r   r   r   r}   rŒ   r’  r¨   r«   rÉ   r®   r±   r³   r¾   rÀ   rÝ   râ   ræ   rÁ   r   r   rƒ   r   r  ê  s    				
r  c                       ó|   e Zd Z‡ fdd„Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Z‡  ZS )ÚTestExport_Ed25519c                    rz   r{   )r|   r˜  r}   rX   r~   r   r€   rƒ   r   r   r}   T	  r…   zTestExport_Ed25519.__init__c                 C   óZ   t dƒ}| j d¡}|  ||¡ | jjdd}|  ||¡ | jjddd}|  ||¡ d S )Nr  Tr  r  Fr  r  r  r   r   r   Útest_export_public_derX	  r  z)TestExport_Ed25519.test_export_public_derc                 C   ó   | j t| jjdd d S ©Nr  r  ©rg   rh   r   r  rj   r   r   r   Útest_export_public_sec1d	  ó   z*TestExport_Ed25519.test_export_public_sec1c                 C   óR   t dƒ}| j ¡ }|  ||¡ | jjdd}|  ||¡ | jt| jjddd d S )Nr‘  r  r  Fr   ©r(   r~   r'  rr   r  rg   rh   r  r   r   r   r(  g	  ó   

ÿz2TestExport_Ed25519.test_export_private_pkcs8_clearc                 C   r*  )
Nr§   r+  r,  r  r/  z"PBKDF2WithHMAC-SHA256AndAES128-CBCr0  r1  r2  r3  r4  r   r   r   r6  u	  r7  z6TestExport_Ed25519.test_export_private_pkcs8_encryptedc                 C   ó0   t ddƒ ¡ }| jjdd ¡ }|  ||¡ d S )Nr“  r9  r:  r  ©r(   r<  r   r  rr   ©rk   Zkey_file_refr‹   r   r   r   Útest_export_public_pem	  ó   z)TestExport_Ed25519.test_export_public_pemc                 C   r£  )Nr”  r9  r:  r  ©r(   r<  r~   r  rr   r  r   r   r   rF  •	  r§  z0TestExport_Ed25519.test_export_private_pem_clearc                 C   óL   | j jdddd}|  ttj|¡ d|v sJ ‚t |d¡}|  | j |¡ d S ©Nr:  rº   r+  r/  rT  r§   ©r~   r  rg   rh   r   ri   rr   r4  r   r   r   rL  š	  ó   þz4TestExport_Ed25519.test_export_private_pem_encryptedc                 C   sf   t ddƒ}t |¡}d | d¡d d… ¡}| d¡}|  || ¡ ¡ |jdd}|  || ¡ ¡ d S )Nr–  r9  r*   r   Fr|  r  )	r(   r   ri   r   Úsplitr~  rr   r<  r  )rk   r‹   rU   r	  r   r   r   Útest_export_openssh§	  s   


z&TestExport_Ed25519.test_export_opensshc                 C   ó"   | j jdd}|  |tdƒ¡ d S )NrŽ  r  s@   bc85b8cf585d20a4de47e84d1cb6183f63d9ba96223fcbc886e363ffdea20cff©r   r  rr   r   ©rk   r	  r   r   r   Útest_export_raw²	  ó   z"TestExport_Ed25519.test_export_rawc                 C   ó<   | j jdddtƒ d}| j jdddtƒ d}|  ||¡ d S ©Nr:  r§   r+  rZ  r]  r^  r   r   r   r_  ¶	  ó   ýýzTestExport_Ed25519.test_prngc                 C   ó<   | j jdddtƒ d}| j jdddtƒ d}|  ||¡ d S ©Nr:  r§   r+  rZ  rº   r]  r^  r   r   r   rc  Â	  rd  z1TestExport_Ed25519.test_byte_or_string_passphrasec                 C   ót   | j t| jjdd | j t| jjddd | j t| jjdddd | j t| jjddd	d
 | j t| jjddd d S ©Nrg  r  r:  r§   rh  r+   FrJ  r+  r/  r|  ©rg   rh   r~   r  rj   r   r   r   rk  Í	  ó   ÿÿþ
ÿz%TestExport_Ed25519.test_error_params1©r   r   r   r}   rš  rž  r(  r6  r¦  rF  rL  r®  r²  r_  rc  rk  rÁ   r   r   rƒ   r   r˜  R	  s    r˜  c                       sl   e Zd Z‡ fdd„Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Z‡  ZS )ÚTestImport_Ed448c                    rz   r{   )r|   r¾  r}   r[   r~   r   r€   rƒ   r   r   r}   ã	  r…   zTestImport_Ed448.__init__c                 C   r†   )Núecc_ed448_public.derrˆ   rŠ   r   r   r   rŒ   ç	  r   z'TestImport_Ed448.test_import_public_derc                 C   rœ   )Núecc_ed448_private.derrž   rŠ   r   r   r   r’  ó	  r    z&TestImport_Ed448.test_import_pkcs8_derc                 C   r¦   )Nzecc_ed448_private_p8.derr§   rž   rŠ   r   r   r   r¨   ü	  r©   z6TestImport_Ed448.test_import_private_pkcs8_encrypted_1c                 C   rª   )Nzecc_ed448_private_p8.pemr§   r£   rŠ   r   r   r   r«   
  r¬   z6TestImport_Ed448.test_import_private_pkcs8_encrypted_2c                 C   r¦   )Nzecc_ed448_private_p8_2.derr§   rž   rŠ   r   r   r   rÉ   
  r©   z6TestImport_Ed448.test_import_private_pkcs8_encrypted_3c                 C   rœ   )Nzecc_ed448_x509.derr­   rŠ   r   r   r   r®   
  r    z%TestImport_Ed448.test_import_x509_derc                 C   r¡   )Núecc_ed448_public.pemr°   rŠ   r   r   r   r±   
  r¥   z'TestImport_Ed448.test_import_public_pemc                 C   r¡   )Núecc_ed448_private.pemr£   rŠ   r   r   r   r³   #
  r¥   z(TestImport_Ed448.test_import_private_pemc                 C   r´   )Nr•  zecc_ed448_private_enc_%s.pemr§   rº   r»   r¼   r   r   r   r¾   )
  r¿   z2TestImport_Ed448.test_import_private_pem_encryptedc                 C   r¡   )Nzecc_ed448_x509.pemr°   rŠ   r   r   r   rÀ   3
  r¥   z%TestImport_Ed448.test_import_x509_pem)r   r   r   r}   rŒ   r’  r¨   r«   rÉ   r®   r±   r³   r¾   rÀ   rÁ   r   r   rƒ   r   r¾  á	  s    				
r¾  c                       r—  )ÚTestExport_Ed448c                    rz   r{   )r|   rÃ  r}   r[   r~   r   r€   rƒ   r   r   r}   <
  r…   zTestExport_Ed448.__init__c                 C   r™  )Nr¿  Tr  r  Fr  r  r  r   r   r   rš  @
  r  z'TestExport_Ed448.test_export_public_derc                 C   r›  rœ  r  rj   r   r   r   rž  L
  rŸ  z(TestExport_Ed448.test_export_public_sec1c                 C   r   )NrÀ  r  r  Fr   r¡  r  r   r   r   r(  O
  r¢  z0TestExport_Ed448.test_export_private_pkcs8_clearc                 C   r*  rŒ  r3  r4  r   r   r   r6  ]
  r7  z4TestExport_Ed448.test_export_private_pkcs8_encryptedc                 C   r£  )NrÁ  r9  r:  r  r¤  r¥  r   r   r   r¦  y
  r§  z'TestExport_Ed448.test_export_public_pemc                 C   r£  )NrÂ  r9  r:  r  r¨  r  r   r   r   rF  ~
  r§  z.TestExport_Ed448.test_export_private_pem_clearc                 C   r©  rª  r«  r4  r   r   r   rL  ƒ
  r¬  z2TestExport_Ed448.test_export_private_pem_encryptedc                 C   r›  )Nr|  r  r  rj   r   r   r   r®  
  s   z$TestExport_Ed448.test_export_opensshc                 C   r¯  )NrŽ  r  sr   899014ddc0a0e1260cfc1085afdf952019e9fd63372e3e366e26dad32b176624884330a14617237e3081febd9d1a15069e7499433d2f55dd80r°  r±  r   r   r   r²  ”
  r³  z TestExport_Ed448.test_export_rawc                 C   r´  rµ  r]  r^  r   r   r   r_  ˜
  r¶  zTestExport_Ed448.test_prngc                 C   r·  r¸  r]  r^  r   r   r   rc  ¤
  rd  z/TestExport_Ed448.test_byte_or_string_passphrasec                 C   r¹  rº  r»  rj   r   r   r   rk  ¯
  r¼  z#TestExport_Ed448.test_error_params1r½  r   r   rƒ   r   rÃ  :
  s    rÃ  c                 C   sÔ   g }|t tƒ7 }zW|t tƒ7 }|t tƒ7 }|t tƒ7 }|t tƒ7 }|t tƒ7 }|t tƒ7 }|t tƒ7 }|t t	ƒ7 }|t t
ƒ7 }|t tƒ7 }|t tƒ7 }|t tƒ7 }|t tƒ7 }|t tƒ7 }W |S  tyi   Y |S w r{   )r   re   ry   rÂ   rÌ   ré   rõ   r  r¾  rÿ   rx  rz  r‹  r  r˜  rÃ  r   )ÚconfigZtestsr   r   r   Ú	get_testsÃ
  s,   þþrÅ  Ú__main__c                   C   s   t  tƒ ¡S r{   )ÚunittestZ	TestSuiterÅ  r   r   r   r   Ú<lambda>Ý
  s    rÈ  Úsuite)ZdefaultTest)r   );r   r   r"   rÇ  Úbinasciir   ZCrypto.SelfTest.st_commonr   ZCrypto.Util.py3compatr   r   r   ZCrypto.Util.asn1r   r   ZCrypto.Util.numberr	   ZCrypto.Hashr
   ZCrypto.PublicKeyr   ZCrypto.PublicKey.ECCr   r   r   ÚImportErrorrh   r   r(   r0   r@   rC   rH   rL   rP   rX   r[   r^   rd   ZTestCasere   ry   rÂ   rÌ   ré   rõ   rÿ   rx  rz  r‹  r  r  r˜  r¾  rÃ  rÅ  r   rÉ  Úmainr   r   r   r   Ú<module>   s‚   ÿ

!nw     	    "  '  /h Y 

þ