o
    ̳iw                    @   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   a/home/ubuntu/.local/lib/python3.10/site-packages/Cryptodome/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)	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results	dir_compsinit_dirfull_file_name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   
r5   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r=   point_xpoint_yr-   
splitlinesr	   r5   r   r   	constructkey_len	key_linesprivate_key_dpublic_key_xypublic_key_xpublic_key_yr   r   r   create_ref_keys_p192Y      rL   c                  C   r6   )N   zecc_p224.txtr   r8   r9   r:   r   r;   zP-224r<   r?   rB   rE   r   r   r   create_ref_keys_p224f   rM   rO   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   r9         r   r8   r;   zP-256r<   r?   rB   rE   r   r   r   create_ref_keys_p256s   rM   rT   c                  C   rP   )N0   zecc_p384.txtr   rR         r   r8   r;   zP-384r<   r?   rB   rE   r   r   r   create_ref_keys_p384   rM   rX   c                  C   rP   )NB   zecc_p521.txtr   rV         r   r8   r;   zP-521r<   r?   rB   rE   r   r   r   create_ref_keys_p521   rM   r\   c                  C   6   t d } t| dd }tjd|d}|| fS )Nzecc_ed25519.txtr9   rZ   Ed25519r=   seedr-   rC   r5   r   rD   
public_keyrG   r`   keyr   r   r   create_ref_keys_ed25519      re   c                  C   r]   )Nzecc_ed448.txtrR   
   Ed448r_   ra   rc   r   r   r   create_ref_keys_ed448   rf   ri   c                   C   s   t  djS )Ns   SEED)r
   newupdater"   r   r   r   r   get_fixed_prng   s   rl   c                 C   s*   t  }||  t }||d  |jS )Nr;   )r   decoder   value)dataseqbsr   r   r   extract_bitstring_from_spki   s
   
rr   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-----rt   )ry   mismatchr   r   r   test_mismatch   s   zTestImport.test_mismatchc                 C   &   d}t t|d d}| |jd d S )NN302502010104205c4e4320ef260f91ed9fc597aee98c8236b60e0ced692cc7a057d5e45798a0521.2.840.10045.3.1.7   R 1/WzL%-;[6S^,~A;!N\r   r   assertEqualr>   ry   data_hexrd   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 )Nf303102010104205c4e4320ef260f91ed9fc597aee98c8236b60e0ced692cc7a057d5e45798a052a00a06082a8648ce3d030107r   r   r   r   r   r   "test_import_private_rfc5915_only_0   s   z-TestImport.test_import_private_rfc5915_only_0c                 C   r}   )N306b02010104205c4e4320ef260f91ed9fc597aee98c8236b60e0ced692cc7a057d5e45798a052a14403420004a40ad59a2050ebe92479bd5fb16bb2e45b6465eb3cb2b1effe423fabe6cb7424db8219ef0bab80acf26fd70595b61fe4760d33eed80dd03d2fd0dfb27b8ce75cr   r   r   r   r   r   r   "test_import_private_rfc5915_only_1   r   z-TestImport.test_import_private_rfc5915_only_1N)r   r   r   rz   r|   r   r   r   r   r   r   r   rs      s    
rs   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)superr   __init__rL   ref_private
ref_publicry   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   _import_subjectPublicKeyInfor   r   _import_derrw   ry   key_filerd   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
curve_namer-   rr   r   rw   r   r   ry   r   rn   rd   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   r   r   r   rw   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   r   r   rw   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   rw   r   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   r   r   rw   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   rw   r   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aes256
aes256_gcmzecc_p192_private_enc_%s.pemr      secretr-   r   rw   r   r   r   ry   algor   rd   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   r      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  ZS )TestImport_P224c                    r   r   )r   r   r   rO   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                    r   r   )r   r   r   rT   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   rw   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_publicr   r   rw   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   rw   r   ry   r   key_file_oldrd   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                    r   r   )r   r  r   rX   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                    r   r   )r   r  r   r\   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                    r   r   )r   r  r   rL   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   _export_subjectPublicKeyInfor   
export_keyry   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   rw   r   r   ry   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-   rr   r   r   r   ry   r   rn   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   rr   r   ry   r   r"  r*  rn   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   _export_rfc5915_private_derr   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_pkcs8r   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  rG  rH  z"PBKDF2WithHMAC-SHA224AndAES192-CBCiteration_count{   r  rG  rH  prot_params	r   rA  ru   rv   r   _import_pkcs8r   r   rw   ry   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   _export_public_pemr   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   rU  rV  Tr  zecc_p192_public_compressed.pemr-   rX  r   rw   r   r   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   rU  rV  Fr9  r-   rX  r   _export_private_pemr   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   )rG  zEC PRIVATE KEYr   rV  Fr  rG  r:  r   rb  ru   rv   r   rw   r   r   rP  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   rU  rV  r  r-   rX  r   (_export_private_clear_pkcs8_in_clear_pemr   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   rE  )rH  ENCRYPTED PRIVATE KEYrV  rI  r   ,_export_private_encrypted_pkcs8_in_clear_pemru   rv   r   rw   r   r   rP  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 NrV  r   rE  r  rG  rH  randfuncFr  r:  rG  rz  r   r   rl   r   ry   encoded1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 NrV  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  rV  r   Frg  r  rG  r  rE  r  rG  r:  rH  r9  r0   rI  ru   rv   r   r   r   rx   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   rw   intpointQyr   ry   pem1pem2key1low16key2r   r   r   test_compressed_curve`     

z%TestExport_P192.test_compressed_curver   r   r   r   r#  r+  r1  r6  r=  rB  rR  rZ  r^  rc  ri  rn  ru  r  r  r  r  r   r   r   r   r   r  r  s&    	r  c                       r   )%TestExport_P224c                    r   r   )r   r  r   rO   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/  r0  r   r   r   r1    r2  z4TestExport_P224.test_export_public_sec1_uncompressedc                 C   r3  )Nr   r.  Tr  r   r4  r5  r   r   r   r6    r7  z2TestExport_P224.test_export_public_sec1_compressedc                 C   r8  )Nr   r  Fr9  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   rB    rC  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   rE  rF  r  z&PBKDF2WithHMAC-SHA512-224AndAES128-CBCrJ  rK  rL  rN  rP  r   r   r   rR    s   z3TestExport_P224.test_export_private_pkcs8_encryptedc                 C   rT  )Nr   rU  FrV  r  r  rW  r!  r   r   r   rZ    r[  z3TestExport_P224.test_export_public_pem_uncompressedc                 C   r\  )Nr   rU  rV  Tr  zecc_p224_public_compressed.pemr]  r'  r   r   r   r^    r_  z1TestExport_P224.test_export_public_pem_compressedc                 C   r`  )Nr   rU  rV  Fr9  ra  r!  r   r   r   rc    rd  z-TestExport_P224.test_export_private_pem_clearc                 C   re  rf  rh  rP  r   r   r   ri    rj  z1TestExport_P224.test_export_private_pem_encryptedc                 C   rk  )Nr   rU  rV  r  rl  r!  r   r   r   rn     ro  z3TestExport_P224.test_export_private_pkcs8_and_pem_1c                 C   rp  rq  rs  rP  r   r   r   ru    rv  z3TestExport_P224.test_export_private_pkcs8_and_pem_2c                 C   rw  rx  r|  r}  r   r   r   r  !  r  zTestExport_P224.test_prngc                 C   r  r  r|  r}  r   r   r   r  9  r  z.TestExport_P224.test_byte_or_string_passphrasec                 C   r  r  r  rx   r   r   r   r  D  r  z"TestExport_P224.test_error_params1c                 C   r  )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-----r  ijF  i/  r  r  r   r   r   r  _  r  z%TestExport_P224.test_compressed_curver  r   r   r   r   r  y  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d%d& Zd'd( Z  ZS ))TestExport_P256c                    r   r   )r   r  r   rT   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/  r0  r   r   r   r1    r2  z4TestExport_P256.test_export_public_sec1_uncompressedc                 C   r3  )Nr   r.  Tr  r   r4  r5  r   r   r   r6    r7  z2TestExport_P256.test_export_public_sec1_compressedc                 C   r8  )Nr   r  Fr9  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   rB    rC  z/TestExport_P256.test_export_private_pkcs8_clearc                 C   rD  )
Nr   rE  rF  r  rI  z&PBKDF2WithHMAC-SHA512-256AndAES128-CBCrJ  rK  rL  rN  rP  r   r   r   rR    rS  z3TestExport_P256.test_export_private_pkcs8_encryptedc                 C   rT  )Nr   rU  FrV  r  r  rW  r!  r   r   r   rZ    r[  z3TestExport_P256.test_export_public_pem_uncompressedc                 C   r\  )Nr   rU  rV  Tr  zecc_p256_public_compressed.pemr]  r'  r   r   r   r^    r_  z1TestExport_P256.test_export_public_pem_compressedc                 C   r`  )Nr   rU  rV  Fr9  ra  r!  r   r   r   rc    rd  z-TestExport_P256.test_export_private_pem_clearc                 C   re  rf  rh  rP  r   r   r   ri    rj  z1TestExport_P256.test_export_private_pem_encryptedc                 C   rk  )Nr   rU  rV  r  rl  r!  r   r   r   rn    ro  z3TestExport_P256.test_export_private_pkcs8_and_pem_1c                 C   rp  rq  rs  rP  r   r   r   ru    rv  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   rU  FOpenSSHr  r  r-   r   _export_opensshr   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   rU  r  Tr  r-   r   rw   r   lenr   ry   r   r(  r)  r   r   r   test_export_openssh_compressed6  
   

z.TestExport_P256.test_export_openssh_compressedc                 C   rw  rx  r|  r}  r   r   r   r  >  r  zTestExport_P256.test_prngc                 C   r  r  r|  r}  r   r   r   r  V  r  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 Nr  r  rV  r   Frg  r  r  rE  r  r9  r0   rI  r  r  rx   r   r   r   r  a  2   

z"TestExport_P256.test_error_params1c                 C   r  )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-----r  i  iWn  r  r  r   r   r   r    s   

z%TestExport_P256.test_compressed_curver   r   r   r   r#  r+  r1  r6  r=  rB  rR  rZ  r^  rc  ri  rn  ru  r  r  r  r  r  r  r   r   r   r   r   r  x  s*    	 r  c                       r  ))TestExport_P384c                    r   r   )r   r  r   rX   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/  r0  r   r   r   r1    r2  z4TestExport_P384.test_export_public_sec1_uncompressedc                 C   r3  )Nr  r.  Tr  r  r4  r5  r   r   r   r6    r7  z2TestExport_P384.test_export_public_sec1_compressedc                 C   r8  )Nr  r  Fr9  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   rB    rC  z/TestExport_P384.test_export_private_pkcs8_clearc                 C   rD  
Nr   rE  rF  r  rI  z"PBKDF2WithHMAC-SHA384AndAES128-CBCrJ  rK  rL  rN  rP  r   r   r   rR    rS  z3TestExport_P384.test_export_private_pkcs8_encryptedc                 C   rT  )Nr  rU  FrV  r  r  rW  r!  r   r   r   rZ    r[  z3TestExport_P384.test_export_public_pem_uncompressedc                 C   r\  )Nr  rU  rV  Tr  zecc_p384_public_compressed.pemr]  r'  r   r   r   r^     r_  z1TestExport_P384.test_export_public_pem_compressedc                 C   r`  )Nr	  rU  rV  Fr9  ra  r!  r   r   r   rc  	  rd  z-TestExport_P384.test_export_private_pem_clearc                 C   re  rf  rh  rP  r   r   r   ri    rj  z1TestExport_P384.test_export_private_pem_encryptedc                 C   rk  )Nr  rU  rV  r  rl  r!  r   r   r   rn  '  ro  z3TestExport_P384.test_export_private_pkcs8_and_pem_1c                 C   rp  rq  rs  rP  r   r   r   ru  3  rv  z3TestExport_P384.test_export_private_pkcs8_and_pem_2c                 C   r  )Nr
  rU  Fr  r  r  r  r!  r   r   r   r  H  r  z0TestExport_P384.test_export_openssh_uncompressedc                 C   r  )Nr
  rU  r  Tr  r  r  r   r   r   r  V  r  z.TestExport_P384.test_export_openssh_compressedc                 C   rw  rx  r|  r}  r   r   r   r  ^  r  zTestExport_P384.test_prngc                 C   r  r  r|  r}  r   r   r   r  v  r  z.TestExport_P384.test_byte_or_string_passphrasec                 C   r  r  r  rx   r   r   r   r    r  z"TestExport_P384.test_error_params1c                 C   r  )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-----r  i  i  r  r  r   r   r   r    s   

z%TestExport_P384.test_compressed_curver  r   r   r   r   r    s*    	r  c                       r  ))TestExport_P521c                    r   r   )r   r  r   r\   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/  r0  r   r   r   r1    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  r4  r5  r   r   r   r6    s   z2TestExport_P521.test_export_public_sec1_compressedc                 C   r8  )Nr  r  Fr9  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   rB    rC  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   rE  rF  r  rI  rJ  rK  rL  rN  rP  r   r   r   rR    rS  z3TestExport_P521.test_export_private_pkcs8_encryptedc                 C   rT  )Nr  rU  FrV  r  r  rW  r!  r   r   r   rZ    r[  z3TestExport_P521.test_export_public_pem_uncompressedc                 C   r\  )Nr  rU  rV  Tr  zecc_p521_public_compressed.pemr]  r'  r   r   r   r^  +  r_  z1TestExport_P521.test_export_public_pem_compressedc                 C   r`  )Nr  rU  rV  Fr9  ra  r!  r   r   r   rc  4  rd  z-TestExport_P521.test_export_private_pem_clearc                 C   re  rf  rh  rP  r   r   r   ri  ?  rj  z1TestExport_P521.test_export_private_pem_encryptedc                 C   rk  )Nr  rU  rV  r  rl  r!  r   r   r   rn  R  ro  z3TestExport_P521.test_export_private_pkcs8_and_pem_1c                 C   rp  rq  rs  rP  r   r   r   ru  ^  rv  z3TestExport_P521.test_export_private_pkcs8_and_pem_2c                 C   r  )Nr  rU  Fr  r  r  r  r!  r   r   r   r  s  r  z0TestExport_P521.test_export_openssh_uncompressedc                 C   r  )Nr  rU  r  Tr  r  r  r   r   r   r    r  z.TestExport_P521.test_export_openssh_compressedc                 C   rw  rx  r|  r}  r   r   r   r    r  zTestExport_P521.test_prngc                 C   r  r  r|  r}  r   r   r   r    r  z.TestExport_P521.test_byte_or_string_passphrasec                 C   r  r  r  rx   r   r   r   r    r  z"TestExport_P521.test_error_params1c                 C   r  )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-----r  i8  iC  r  r  r   r   r   r    s   	

z%TestExport_P521.test_compressed_curver  r   r   r   r   r    s*    
	r  c                       r   )TestImport_Ed25519c                    r   r   )r   r  r   re   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   assertFalsehas_privaterw   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                    r   r   )r   r  r   re   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  ru   rv   r   r   rx   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  Fr9  r-   r   rA  r   r   ru   rv   r!  r   r   r   rB  g	     

z2TestExport_Ed25519.test_export_private_pkcs8_clearc                 C   rD  )
Nr   rE  rF  r  rI  z"PBKDF2WithHMAC-SHA256AndAES128-CBCrJ  rK  rL  rN  rP  r   r   r   rR  u	  rS  z6TestExport_Ed25519.test_export_private_pkcs8_encryptedc                 C   0   t dd }| jjdd }| || d S )Nr  rU  rV  r  r-   rX  r   r   r   ry   key_file_refr   r   r   r   test_export_public_pem	     z)TestExport_Ed25519.test_export_public_pemc                 C   r  )Nr  rU  rV  r  r-   rX  r   r   r   r!  r   r   r   rc  	  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 NrV  r   rE  rI  rr  r   r   r   ru   rv   r   rw   r   rP  r   r   r   ri  	     z4TestExport_Ed25519.test_export_private_pem_encryptedc                 C   sf   t dd}t|}d|dd d }|d}| ||  |jdd}| ||  d S )Nr  rU  r/   r   Fr  r  )	r-   r   rw   r    splitr  r   rX  r   )ry   r   rb   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   r   r   ry   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 NrV  r   rE  ry  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 NrV  r   rE  ry  r   r|  r}  r   r   r   r  	  r  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 Nr  r  rV  r   r  r0   Frg  rE  rI  r  ru   rv   r   r   rx   r   r   r   r  	     
z%TestExport_Ed25519.test_error_params1r   r   r   r   r  r  rB  rR  r  rc  ri  r  r  r  r  r  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                    r   r   )r   r  r   ri   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                    r   r   )r   r  r   ri   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  rx   r   r   r   r  L
  r  z(TestExport_Ed448.test_export_public_sec1c                 C   r  )Nr  r  r  Fr9  r  r!  r   r   r   rB  O
  r  z0TestExport_Ed448.test_export_private_pkcs8_clearc                 C   rD  r  rN  rP  r   r   r   rR  ]
  rS  z4TestExport_Ed448.test_export_private_pkcs8_encryptedc                 C   r  )Nr  rU  rV  r  r  r  r   r   r   r  y
  r  z'TestExport_Ed448.test_export_public_pemc                 C   r  )Nr  rU  rV  r  r  r!  r   r   r   rc  ~
  r  z.TestExport_Ed448.test_export_private_pem_clearc                 C   r  r  r  rP  r   r   r   ri  
  r  z2TestExport_Ed448.test_export_private_pem_encryptedc                 C   r  )Nr  r  r  rx   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   r  
  r  z/TestExport_Ed448.test_byte_or_string_passphrasec                 C   r  r  r  rx   r   r   r   r  
  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   rs   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r   )configtestsr   r   r   	get_tests
  s,   r  __main__c                   C   s   t t S r   )unittest	TestSuiter  r   r   r   r   <lambda>
  s    r  suite)defaultTest)r   );r   r   r#   r  binasciir   Cryptodome.SelfTest.st_commonr   Cryptodome.Util.py3compatr   r   r   Cryptodome.Util.asn1r   r   Cryptodome.Util.numberr	   Cryptodome.Hashr
   Cryptodome.PublicKeyr   Cryptodome.PublicKey.ECCr   r   r   ImportErrorrv   r   r-   r5   rL   rO   rT   rX   r\   re   ri   rl   rr   TestCasers   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r   r  mainr   r   r   r   <module>   s   

!nw     	    "  '  /h Y 

