
    ¿igw                       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 	 d dlZd
Zn# e$ r dZY nw xY w G d de          Zd=dZd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z& G d dej'                  Z( G d dej'                  Z) G d dej'                  Z* G d  d!ej'                  Z+ G d" d#ej'                  Z, G d$ d%ej'                  Z- G d& d'ej'                  Z. G d( d)ej'                  Z/ G d* d+ej'                  Z0 G d, d-ej'                  Z1 G d. d/ej'                  Z2 G d0 d1ej'                  Z3 G d2 d3ej'                  Z4 G d4 d5ej'                  Z5 G d6 d7ej'                  Z6i fd8Z7e8d9k    rd: Z9 ej:        d;<           dS dS )>    N)	unhexlify)list_test_cases)bordtostrFileNotFoundError)DerSequenceDerBitString)bytes_to_long)SHAKE128)ECC)_import_rfc5915_derTFc                       e Zd ZdS )MissingTestVectorExceptionN)__name__
__module____qualname__     i/var/www/html/afkarena/venv/lib/python3.11/site-packages/Cryptodome/SelfTest/PublicKey/test_import_ECC.pyr   r   6   s        Dr   r   rbc                 B   d }	 t           s7t          t          j        t	          j        t          j                  |           d}t          j                            t          j	                  }t          j        
                    t	          j        j
        |g|R  |           }t          ||          5 }|                                }d d d            n# 1 swxY w Y   n,# t          $ r t          j        dt          d           Y nw xY w|t!          d| z            |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_ins          r   	load_filer1   :   s[   G$% 	/#EL$&K$=$=$-/ / / )	7??#<#EFFbgl8&Hi&H&H&H)TT.$'' 	%7llnnG	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%  $ $ $7!!"	$ 	$ 	$ 	$ 	$ 	$$
 (	)ABBBNs6   B.C 2CC CC CC &DDc                     d                     |           }t          t          |                              dd                              dd                    S )Nr     :)r$   r   r   replace)linesexts     r   compactr9   T   sE    
((5//CU3ZZ''R0088bAABBBr   c                     d} t          d                                          }t          t          |dd                             }t          |dd                   }t	          |d                   dk    sJ t          |d| dz                      }t          || dz   d                    }t          j        d	|
          t          j        d	||          fS )N   zecc_p192.txtr         	   r      zP-192curvedrA   point_xpoint_yr1   
splitlinesr
   r9   r   r   	constructkey_len	key_linesprivate_key_dpublic_key_xypublic_key_xpublic_key_ys         r   create_ref_keys_p192rP   Y       G.))4466I!')AaC."9"9::MIacN++Ma !!Q&&&& q{!;<<L wqyzz!:;;LM=999M|TTTV Vr   c                     d} t          d                                          }t          t          |dd                             }t          |dd                   }t	          |d                   dk    sJ t          |d| dz                      }t          || dz   d                    }t          j        d	|
          t          j        d	||          fS )N   zecc_p224.txtr   r<   r=   r>   r   r?   zP-224r@   rC   rF   rI   s         r   create_ref_keys_p224rT   f   rQ   r   c                     d} t          d                                          }t          t          |dd                             }t          |dd                   }t	          |d                   dk    sJ t          |d	| d	z                      }t          || d	z   d                    }t          j        d
|          t          j        d
||          fS )N    zecc_p256.txtr   r=         r   r<   r?   zP-256r@   rC   rF   rI   s         r   create_ref_keys_p256rY   s       G.))4466I!')AaC."9"9::MIadO,,Ma !!Q&&&& q{!;<<L wqyzz!:;;LM=999M|TTTV Vr   c                     d} t          d                                          }t          t          |dd                             }t          |dd                   }t	          |d                   dk    sJ t          |d	| d	z                      }t          || d	z   d                    }t          j        d
|          t          j        d
||          fS )N0   zecc_p384.txtr   rW         r   r<   r?   zP-384r@   rC   rF   rI   s         r   create_ref_keys_p384r_      rZ   r   c                     d} t          d                                          }t          t          |dd                             }t          |dd                   }t	          |d                   dk    sJ t          |d	| d	z                      }t          || d	z   d                    }t          j        d
|          t          j        d
||          fS )NB   zecc_p521.txtr   r]         r   r<   r?   zP-521r@   rC   rF   rI   s         r   create_ref_keys_p521rd      rZ   r   c                      t          d                                          } t          | dd                   }t          j        d|          }||                                fS )Nzecc_ed25519.txtr=   rb   Ed25519rA   seedr1   rG   r9   r   rH   
public_keyrK   rh   keys      r   create_ref_keys_ed25519rm      sZ    +,,7799I9QqS>""D
-id
3
3
3C!!""r   c                      t          d                                          } t          | dd                   }t          j        d|          }||                                fS )Nzecc_ed448.txtrW   
   Ed448rg   ri   rk   s      r   create_ref_keys_ed448rq      sY    /**5577I9QrT?##D
-gD
1
1
1C!!""r   c                  X    t          j                                        d          j        S )Ns   SEED)r   newupdater&   r   r   r   get_fixed_prngru      s    <>>  ))..r   c                     t                      }|                    |            t                      }|                    |d                    |j        S )Nr?   )r   decoder	   value)dataseqbss      r   extract_bitstring_from_spkir|      sC    mm

4^^
		#a&xr   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )
TestImportc                 R    |                      t          t          j        d           d S )Nr   assertRaises
ValueErrorr   
import_keyselfs    r   
test_emptyzTestImport.test_empty   s"    *cnc:::::r   c                 V    d}|                      t          t          j        |           d S )Na1  -----BEGIN PRIVATE KEY-----
MIG2AgEAMBAGByqGSM49AgEGBSuBBAAiBIGeMIGbAgEBBDAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJChZANiAAQarFRaqflo
I+d61SRvU8Za2EurxtW20eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinng
o4N+LZfQYcTxmdwlkWOrfzCjtHDix6EznPO/LlxTsV+zfTJ/ijTjeXk=
-----END PRIVATE KEY-----r   )r   mismatchs     r   test_mismatchzTestImport.test_mismatch   s+     	*cnh?????r   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   assertEqualrB   r   data_hexrl   s      r    test_import_private_rfc5915_nonez+TestImport.test_import_private_rfc5915_none   s@    c!)H"5"5t=RSS bcccccr   c                 z    d}t          t          |          d           }|                     |j        d           d S )Nf303102010104205c4e4320ef260f91ed9fc597aee98c8236b60e0ced692cc7a057d5e45798a052a00a06082a8648ce3d030107r   r   r   s      r   "test_import_private_rfc5915_only_0z-TestImport.test_import_private_rfc5915_only_0   s=    {!)H"5"5t<< bcccccr   c                 |    d}t          t          |          d d          }|                     |j        d           d S )N306b02010104205c4e4320ef260f91ed9fc597aee98c8236b60e0ced692cc7a057d5e45798a052a14403420004a40ad59a2050ebe92479bd5fb16bb2e45b6465eb3cb2b1effe423fabe6cb7424db8219ef0bab80acf26fd70595b61fe4760d33eed80dd03d2fd0dfb27b8ce75cr   r   r   r   s      r   "test_import_private_rfc5915_only_1z-TestImport.test_import_private_rfc5915_only_1   sC     p!)H"5"5t=RSS bcccccr   N)r   r   r   r   r   r   r   r   r   r   r   r~   r~      sm        ; ; ;@ @ @d d dd d dd d d d dr   r~   c                   l     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Z xZS )TestImport_P192c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S N)superr   __init__rP   ref_private
ref_publicr   argskwargs	__class__s      r   r   zTestImport_P192.__init__   >    -ot$$-t>v>>>,@,B,B)$///r   c                 @   t          d          }t          j        |          }|                     | j        |           t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p192_public.derr1   r   _import_subjectPublicKeyInfor   r   _import_derr   r   key_filerl   s      r   test_import_public_derz&TestImport_P192.test_import_public_der       233.x88#...oh--#...nX&&#.....r   c                     t          d          }t          |          }t          j        |d          }|                     | j        |           d S )Nr   P192
curve_namer1   r|   r   r   r   r   r   r   rx   rl   s       r   test_import_sec1_uncompressedz-TestImport_P192.test_import_sec1_uncompressed   O    233+H55nX&999#.....r   c                     t          d          }t          |          }t          j        |d          }|                     | j        |           d S )Necc_p192_public_compressed.derr   r   r   r   s       r   test_import_sec1_compressedz+TestImport_P192.test_import_sec1_compressed   O    =>>+H55nX&999#.....r   c                 B   t          d          }t          j        |d           }|                     | j        |           t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p192_private.derr1   r   r   r   r   r   r   r   s      r   test_import_rfc5915_derz'TestImport_P192.test_import_rfc5915_der       344%h55)3///oh--)3///nX&&)3/////r   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p192_private_p8_clear.derr1   r   r   r   r   r   r   s      r   test_import_private_pkcs8_clearz/TestImport_P192.test_import_private_pkcs8_clear  h    <==oh--)3///nX&&)3/////r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_p192_private_p8_clear.pemr1   r   r   r   r   r   s      r   &test_import_private_pkcs8_in_pem_clearz6TestImport_P192.test_import_private_pkcs8_in_pem_clear  >    <==nX&&)3/////r   c                     t          d          }t          j        |d          }|                     | j        |           t          j        |d          }|                     | j        |           d S )Nzecc_p192_private_p8.dersecretr   r   s      r   %test_import_private_pkcs8_encrypted_1z5TestImport_P192.test_import_private_pkcs8_encrypted_1  j    677oh11)3///nXx00)3/////r   c                     t          d          }t          j        |d          }|                     | j        |           d S )Nzecc_p192_private_p8.pemr   r   r   s      r   %test_import_private_pkcs8_encrypted_2z5TestImport_P192.test_import_private_pkcs8_encrypted_2  @    677nXx00)3/////r   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Nzecc_p192_x509.derr1   r   r   r   r   r   r   s      r   test_import_x509_derz$TestImport_P192.test_import_x509_der   f    011oh--#...nX&&#.....r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_p192_public.pemr1   r   r   r   r   r   s      r   test_import_public_pemz&TestImport_P192.test_import_public_pem)  =    233nX&&#.....r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_p192_private.pemr   r   s      r   test_import_private_pemz'TestImport_P192.test_import_private_pem/  >    344nX&&)3/////r   c                    dD ]}t          d|z            }t          j        |d          }|                     | j        |           t          j        t          |          d          }|                     | j        |           d S )Ndes3aes128aes192aes256
aes256_gcmzecc_p192_private_enc_%s.pemr      secretr1   r   r   r   r   r   r   algor   rl   s       r   !test_import_private_pem_encryptedz1TestImport_P192.test_import_private_pem_encrypted5      F 	4 	4D !>!EFFH.844CT-s333.x)<<CT-s3333	4 	4r   c                     t          d          }t          j        |          }|                     | j        |           d S )Nzecc_p192_x509.pemr   r   s      r   test_import_x509_pemz$TestImport_P192.test_import_x509_pem?  =    011nX&&#.....r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__r   s   @r   r   r      s        C C C C C
/ 
/ 
// / // / /
0 
0 
00 0 00 0 00 0 00 0 0/ / // / /0 0 04 4 4/ / / / / / /r   r   c                   r     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Z xZS )TestImport_P224c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S r   )r   r   r   rT   r   r   r   s      r   r   zTestImport_P224.__init__H  r   r   c                 @   t          d          }t          j        |          }|                     | j        |           t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p224_public.derr   r   s      r   r   z&TestImport_P224.test_import_public_derL  r   r   c                     t          d          }t          |          }t          j        |d          }|                     | j        |           d S )Nr   P224r   r   r   s       r   r   z-TestImport_P224.test_import_sec1_uncompressedX  r   r   c                     t          d          }t          |          }t          j        |d          }|                     | j        |           d S )Necc_p224_public_compressed.derr   r   r   r   s       r   r   z+TestImport_P224.test_import_sec1_compressed^  r   r   c                 B   t          d          }t          j        |d           }|                     | j        |           t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p224_private.derr   r   s      r   r   z'TestImport_P224.test_import_rfc5915_derd  r   r   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p224_private_p8_clear.derr   r   s      r   r   z/TestImport_P224.test_import_private_pkcs8_clearp  r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_p224_private_p8_clear.pemr   r   s      r   r   z6TestImport_P224.test_import_private_pkcs8_in_pem_cleary  r   r   c                     t          d          }t          j        |d          }|                     | j        |           t          j        |d          }|                     | j        |           d S )Nzecc_p224_private_p8.derr   r   r   s      r   r   z5TestImport_P224.test_import_private_pkcs8_encrypted_1  r   r   c                     t          d          }t          j        |d          }|                     | j        |           d S )Nzecc_p224_private_p8.pemr   r   r   s      r   r   z5TestImport_P224.test_import_private_pkcs8_encrypted_2  r   r   c                     t          d          }t          j        |d          }|                     | j        |           t          j        |d          }|                     | j        |           d S )Nzecc_p224_private_p8_2.derr   r   r   s      r   %test_import_private_pkcs8_encrypted_3z5TestImport_P224.test_import_private_pkcs8_encrypted_3  j    899oh11)3///nXx00)3/////r   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Nzecc_p224_x509.derr   r   s      r   r   z$TestImport_P224.test_import_x509_der  r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_p224_public.pemr   r   s      r   r   z&TestImport_P224.test_import_public_pem  r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_p224_private.pemr   r   s      r   r   z'TestImport_P224.test_import_private_pem  r   r   c                    dD ]}t          d|z            }t          j        |d          }|                     | j        |           t          j        t          |          d          }|                     | j        |           d S )Nr   zecc_p224_private_enc_%s.pemr   r   r   r   s       r   r   z1TestImport_P224.test_import_private_pem_encrypted  r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Nzecc_p224_x509.pemr   r   s      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   s   @r   r   r   F  s       C C C C C
/ 
/ 
// / // / /
0 
0 
00 0 00 0 00 0 00 0 00 0 0/ / // / /0 0 04 4 4/ / / / / / /r   r   c                        e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )TestImport_P256c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S r   )r   r  r   rY   r   r   r   s      r   r   zTestImport_P256.__init__  r   r   c                 @   t          d          }t          j        |          }|                     | j        |           t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p256_public.derr   r   s      r   r   z&TestImport_P256.test_import_public_der  r   r   c                     t          d          }t          |          }t          j        |d          }|                     | j        |           d S )Nr  P256r   r   r   s       r   r   z-TestImport_P256.test_import_sec1_uncompressed  r   r   c                     t          d          }t          |          }t          j        |d          }|                     | j        |           d S )Necc_p256_public_compressed.derr  r   r   r   s       r   r   z+TestImport_P256.test_import_sec1_compressed  r   r   c                 B   t          d          }t          j        |d           }|                     | j        |           t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p256_private.derr   r   s      r   r   z'TestImport_P256.test_import_rfc5915_der  r   r   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p256_private_p8_clear.derr   r   s      r   r   z/TestImport_P256.test_import_private_pkcs8_clear  r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_p256_private_p8_clear.pemr   r   s      r   r   z6TestImport_P256.test_import_private_pkcs8_in_pem_clear  r   r   c                     t          d          }t          j        |d          }|                     | j        |           t          j        |d          }|                     | j        |           d S )Nzecc_p256_private_p8.derr   r   r   s      r   r   z5TestImport_P256.test_import_private_pkcs8_encrypted_1  r   r   c                     t          d          }t          j        |d          }|                     | j        |           d S )Nzecc_p256_private_p8.pemr   r   r   s      r   r   z5TestImport_P256.test_import_private_pkcs8_encrypted_2  r   r   c                     t          d          }t          j        |d          }|                     | j        |           t          j        |d          }|                     | j        |           d S )Nzecc_p256_private_p8_2.derr   r   r   s      r   r  z5TestImport_P256.test_import_private_pkcs8_encrypted_3  r  r   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Nzecc_p256_x509.derr   r   s      r   r   z$TestImport_P256.test_import_x509_der  r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_p256_public.pemr   r   s      r   r   z&TestImport_P256.test_import_public_pem  r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_p256_private.pemr   r   s      r   r   z'TestImport_P256.test_import_private_pem  r   r   c                 L    t          d          }t          j        |          }d S )Nzecc_p256_private_ecparams.pemr1   r   r   r   s      r   %test_import_private_pem_with_ecparamsz5TestImport_P256.test_import_private_pem_with_ecparams#  s#    <==nX&&r   c                    dD ]}t          d|z            }t          j        |d          }|                     | j        |           t          j        t          |          d          }|                     | j        |           d S )Nr   zecc_p256_private_enc_%s.pemr   r   r   r   s       r   r   z1TestImport_P256.test_import_private_pem_encrypted(  r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Nzecc_p256_x509.pemr   r   s      r   r   z$TestImport_P256.test_import_x509_pem2  r   r   c                     t          d          }t          j        |          }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p256_public_openssh.txtr1   r   _import_openssh_publicr   r   r   r   s      r   test_import_openssh_publicz*TestImport_P256.test_import_openssh_public8  e    :;;(22#...nX&&#.....r   c                     t          d          }t          d          }t          j        |          }t          j        |          }|                     ||           d S )Nzecc_p256_private_openssh.pemz ecc_p256_private_openssh_old.pemr1   r   r   r   r   r   key_file_oldrl   key_olds        r   !test_import_openssh_private_clearz1TestImport_P256.test_import_openssh_private_clearA  X    ;<< !CDDnX&&...g&&&&&r   c                     t          d          }t          d          }t          j        |d          }t          j        |          }|                     ||           d S )Nz ecc_p256_private_openssh_pwd.pemz$ecc_p256_private_openssh_pwd_old.pem   passwordr.  r/  s        r   $test_import_openssh_private_passwordz4TestImport_P256.test_import_openssh_private_passwordI  Z    ?@@ !GHHnX{33...g&&&&&r   )r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r$  r   r   r+  r2  r6  r   r   s   @r   r  r    sK       C C C C C
/ 
/ 
// / // / /
0 
0 
00 0 00 0 00 0 00 0 00 0 0/ / // / /0 0 0' ' '
4 4 4/ / // / /' ' '' ' ' ' ' ' 'r   r  c                        e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )TestImport_P384c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S r   )r   r9  r   r_   r   r   r   s      r   r   zTestImport_P384.__init__T  r   r   c                 @   t          d          }t          j        |          }|                     | j        |           t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p384_public.derr   r   s      r   r   z&TestImport_P384.test_import_public_derX  r   r   c                     t          d          }t          |          }t          j        |d          }|                     | j        |           d S )Nr<  P384r   r   r   s       r   r   z-TestImport_P384.test_import_sec1_uncompressedd  r   r   c                     t          d          }t          |          }t          j        |d          }|                     | j        |           d S )Necc_p384_public_compressed.derr>  r   r   r   s       r   r   z+TestImport_P384.test_import_sec1_compressedj  r   r   c                 B   t          d          }t          j        |d           }|                     | j        |           t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p384_private.derr   r   s      r   r   z'TestImport_P384.test_import_rfc5915_derp  r   r   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p384_private_p8_clear.derr   r   s      r   r   z/TestImport_P384.test_import_private_pkcs8_clear|  r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_p384_private_p8_clear.pemr   r   s      r   r   z6TestImport_P384.test_import_private_pkcs8_in_pem_clear  r   r   c                     t          d          }t          j        |d          }|                     | j        |           t          j        |d          }|                     | j        |           d S )Nzecc_p384_private_p8.derr   r   r   s      r   r   z5TestImport_P384.test_import_private_pkcs8_encrypted_1  r   r   c                     t          d          }t          j        |d          }|                     | j        |           d S )Nzecc_p384_private_p8.pemr   r   r   s      r   r   z5TestImport_P384.test_import_private_pkcs8_encrypted_2  r   r   c                     t          d          }t          j        |d          }|                     | j        |           t          j        |d          }|                     | j        |           d S )Nzecc_p384_private_p8_2.derr   r   r   s      r   r  z5TestImport_P384.test_import_private_pkcs8_encrypted_3  r  r   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Nzecc_p384_x509.derr   r   s      r   r   z$TestImport_P384.test_import_x509_der  r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_p384_public.pemr   r   s      r   r   z&TestImport_P384.test_import_public_pem  r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_p384_private.pemr   r   s      r   r   z'TestImport_P384.test_import_private_pem  r   r   c                    dD ]}t          d|z            }t          j        |d          }|                     | j        |           t          j        t          |          d          }|                     | j        |           d S )Nr   zecc_p384_private_enc_%s.pemr   r   r   r   s       r   r   z1TestImport_P384.test_import_private_pem_encrypted  r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Nzecc_p384_x509.pemr   r   s      r   r   z$TestImport_P384.test_import_x509_pem  r   r   c                     t          d          }t          j        |          }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p384_public_openssh.txtr)  r   s      r   r+  z*TestImport_P384.test_import_openssh_public  r,  r   c                     t          d          }t          d          }t          j        |          }t          j        |          }|                     ||           d S )Nzecc_p384_private_openssh.pemz ecc_p384_private_openssh_old.pemr.  r/  s        r   r2  z1TestImport_P384.test_import_openssh_private_clear  r3  r   c                     t          d          }t          d          }t          j        |d          }t          j        |          }|                     ||           d S )Nz ecc_p384_private_openssh_pwd.pemz$ecc_p384_private_openssh_pwd_old.pemr5  r.  r/  s        r   r6  z4TestImport_P384.test_import_openssh_private_password  r7  r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r+  r2  r6  r   r   s   @r   r9  r9  R  <       C C C C C
/ 
/ 
// / // / /
0 
0 
00 0 00 0 00 0 00 0 00 0 0/ / // / /0 0 04 4 4/ / // / /' ' '' ' ' ' ' ' 'r   r9  c                        e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )TestImport_P521c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S r   )r   rX  r   rd   r   r   r   s      r   r   zTestImport_P521.__init__  r   r   c                 @   t          d          }t          j        |          }|                     | j        |           t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p521_public.derr   r   s      r   r   z&TestImport_P521.test_import_public_der  r   r   c                     t          d          }t          |          }t          j        |d          }|                     | j        |           d S )Nr[  P521r   r   r   s       r   r   z-TestImport_P521.test_import_sec1_uncompressed  r   r   c                     t          d          }t          |          }t          j        |d          }|                     | j        |           d S )Necc_p521_public_compressed.derr]  r   r   r   s       r   r   z+TestImport_P521.test_import_sec1_compressed  r   r   c                 B   t          d          }t          j        |d           }|                     | j        |           t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p521_private.derr   r   s      r   r   z'TestImport_P521.test_import_rfc5915_der   r   r   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p521_private_p8_clear.derr   r   s      r   r   z/TestImport_P521.test_import_private_pkcs8_clear  r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_p521_private_p8_clear.pemr   r   s      r   r   z6TestImport_P521.test_import_private_pkcs8_in_pem_clear  r   r   c                     t          d          }t          j        |d          }|                     | j        |           t          j        |d          }|                     | j        |           d S )Nzecc_p521_private_p8.derr   r   r   s      r   r   z5TestImport_P521.test_import_private_pkcs8_encrypted_1  r   r   c                     t          d          }t          j        |d          }|                     | j        |           d S )Nzecc_p521_private_p8.pemr   r   r   s      r   r   z5TestImport_P521.test_import_private_pkcs8_encrypted_2$  r   r   c                     t          d          }t          j        |d          }|                     | j        |           t          j        |d          }|                     | j        |           d S )Nzecc_p521_private_p8_2.derr   r   r   s      r   r  z5TestImport_P521.test_import_private_pkcs8_encrypted_3*  r  r   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Nzecc_p521_x509.derr   r   s      r   r   z$TestImport_P521.test_import_x509_der3  r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_p521_public.pemr   r   s      r   r   z&TestImport_P521.test_import_public_pem<  r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_p521_private.pemr   r   s      r   r   z'TestImport_P521.test_import_private_pemB  r   r   c                    dD ]}t          d|z            }t          j        |d          }|                     | j        |           t          j        t          |          d          }|                     | j        |           d S )Nr   zecc_p521_private_enc_%s.pemr   r   r   r   s       r   r   z1TestImport_P521.test_import_private_pem_encryptedH  r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Nzecc_p521_x509.pemr   r   s      r   r   z$TestImport_P521.test_import_x509_pemR  r   r   c                     t          d          }t          j        |          }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p521_public_openssh.txtr)  r   s      r   r+  z*TestImport_P521.test_import_openssh_publicX  r,  r   c                     t          d          }t          d          }t          j        |          }t          j        |          }|                     ||           d S )Nzecc_p521_private_openssh.pemz ecc_p521_private_openssh_old.pemr.  r/  s        r   r2  z1TestImport_P521.test_import_openssh_private_cleara  r3  r   c                     t          d          }t          d          }t          j        |d          }t          j        |          }|                     ||           d S )Nz ecc_p521_private_openssh_pwd.pemz$ecc_p521_private_openssh_pwd_old.pemr5  r.  r/  s        r   r6  z4TestImport_P521.test_import_openssh_private_passwordi  r7  r   rU  r   s   @r   rX  rX    rV  r   rX  c                        e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )TestExport_P192c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S r   )r   ru  r   rP   r   r   r   s      r   r   zTestExport_P192.__init__t  r   r   c                 J   t          d          }| j                            d          }|                     ||           | j                            d          }|                     ||           | j                            dd          }|                     ||           d S )Nr   FDERformatrz  compressr1   r   _export_subjectPublicKeyInfor   
export_keyr   r   encodeds      r   #test_export_public_der_uncompressedz3TestExport_P192.test_export_public_der_uncompressedx      233/>>uEE7+++/,,E,::7+++/,,EE,JJ7+++++r   c                     t          d          }t          j        |          }|                    dd          }t          d          }|                     ||           d S )Nr   rx  Tr{  r   r1   r   r   r  r   r   r   pub_keykey_file_compressedkey_file_compressed_refs        r   !test_export_public_der_compressedz1TestExport_P192.test_export_public_der_compressed  e    233.**%000MM"+,L"M"M,.EFFFFFr   c                     t          d          }t          |          }| j                            d          }|                     ||           d S )Nr   SEC1ry  r1   r|   r   r  r   r   r   rx   r  s       r   $test_export_public_sec1_uncompressedz4TestExport_P192.test_export_public_sec1_uncompressed  Q    233+H55/,,F,;;(((((r   c                     t          d          }| j                            dd          }t          d          }t          |          }|                     ||           d S )Nr   r  Tr{  r   r1   r   r  r|   r   r   r   r  r  rx   s        r   "test_export_public_sec1_compressedz2TestExport_P192.test_export_public_sec1_compressed  c    233/,,FT,JJ"+,L"M"M+,CDD(((((r   c                     t          d          }| j                                        }|                     ||           | j                            dd          }|                     ||           d S )Nr   rx  Frz  	use_pkcs8r1   r   _export_rfc5915_private_derr   r  r  s      r   test_export_rfc5915_private_derz/TestExport_P192.test_export_rfc5915_private_der  s    344">>@@7+++ "--Ue-LL7+++++r   c                     t          d          }| j                                        }|                     ||           | j                            d          }|                     ||           d S )Nr   rx  ry  r1   r   _export_pkcs8r   r  r  s      r   test_export_private_pkcs8_clearz/TestExport_P192.test_export_private_pkcs8_clear  q    <=="00227+++ "--U-;;7+++++r   c                 &   | j                             dd          }|                     t          t          j        |d            t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           | j                             dddddi	          }t	          j        |d          }|                     | j         |           d S )
Nr    PBKDF2WithHMAC-SHA1AndAES128-CBC
passphrase
protectionrx  rz  r  r  z"PBKDF2WithHMAC-SHA224AndAES192-CBCiteration_count{   rz  r  r  prot_params	r   r  r   r   r   _import_pkcs8r   r  r   r   r  decodeds      r   #test_export_private_pkcs8_encryptedz3TestExport_P192.test_export_private_pkcs8_encrypted  s(   "00H?a 1 c c 	*c&7$GGG#GX66)7333 "--U;C;] . _ _ .(33)7333 "--U;C;_=Ns<S . U U .(33)733333r   c                 p   t          dd                                          }| j                            d          }|                     ||           | j                            d          }|                     ||           | j                            dd          }|                     ||           d S )Nr   rtFPEMry  r{  r1   stripr   _export_public_pemr   r   r  r  s      r   #test_export_public_pem_uncompressedz3TestExport_P192.test_export_public_pem_uncompressed      2D99??AA"55e<<7+++ /,,E,::7+++/,,EE,JJ7+++++r   c                    t          dd                                          }t          j        |          }|                    dd          }t          dd                                          }|                     ||           d S )Nr   r  r  Tr{  zecc_p192_public_compressed.pemr1   r  r   r   r  r   r  s        r   !test_export_public_pem_compressedz1TestExport_P192.test_export_public_pem_compressed      2D99??AA.**%000MM"+,Ld"S"S"Y"Y"["[,.EFFFFFr   c                    t          dd                                          }| j                            d           }|                     ||           | j                            dd          }|                     ||           d S )Nr   r  r  Fr  r1   r  r   _export_private_pemr   r  r  s      r   test_export_private_pem_clearz-TestExport_P192.test_export_private_pem_clear      3T::@@BB"66t<<7+++ "--Ue-LL7+++++r   c                    | j                             d          }|                     t          t          j        |           d|v sJ t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           d S Nr   )r  zEC PRIVATE KEYr   r  Frz  r  r  r   r  r   r   r   r   r   r  r  s      r   !test_export_private_pem_encryptedz1TestExport_P192.test_export_private_pem_encrypted      "66)6LL 	*cng>>>7****.(33)7333 "--U4<38 . : : .(33)733333r   c                 
   t          dd                                          }| j                                        }|                     ||           | j                            d          }|                     ||           d S )Nr   r  r  ry  r1   r  r   (_export_private_clear_pkcs8_in_clear_pemr   r  r  s      r   #test_export_private_pkcs8_and_pem_1z3TestExport_P192.test_export_private_pkcs8_and_pem_1      <dCCIIKK"KKMM7+++ "--U-;;7+++++r   c                    | j                             dd          }|                     t          t          j        |           d|v sJ t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           d S Nr   r  )r  ENCRYPTED PRIVATE KEYr  r  r   ,_export_private_encrypted_pkcs8_in_clear_pemr   r   r   r   r   r  r  s      r   #test_export_private_pkcs8_and_pem_2z3TestExport_P192.test_export_private_pkcs8_and_pem_2      "OOPX)K P M M 	*cng>>>&'1111.(33)7333 "--U4<4V . X X .(33)733333r   c                    | j                             dddt                                }| j                             dddt                                }|                     ||           | j                             dddt                                }| j                             dddt                                }|                     ||           d S Nr  r   r  rz  r  r  randfuncFrz  r  r  r  r   r  ru   r   r   encoded1encoded2s      r   	test_prngzTestExport_P192.test_prng"      #..e5=5W3A3C3C / E E #..e5=5W3A3C3C / E E 	8,,, #..e495=3A3C3C / E E #..e495=3A3C3C / E E 	8,,,,,r   c                     | j                             dddt                                }| j                             dddt                                }|                     ||           d S Nr  Fr   r  r   r  r  s      r   test_byte_or_string_passphrasez.TestExport_P192.test_byte_or_string_passphrase:      #..e495=3A3C3C / E E #..e495>3A3C3C / E E 	8,,,,,r   c                 &   |                      t          | j        j        d           | j                            ddd           |                      t          | j        j        dd           |                      t          | j        j        dddd	
           |                      t          | j        j        dd           |                      t          | j        j        ddd           |                      t          | j        j        ddd	           d S NXXXry  r  r   Fr  rz  r  rx  r  rz  r  r  r  r  r4   r  r   r   r   r  r   r   s    r   test_error_params1z"TestExport_P192.test_error_params1E  M   *d&6&A%PPP 	##5X). 	$ 	0 	0 	0*d&6&A%19 	 	; 	; 	; 	*d&6&A%19051S 	 	U 	U 	U 	*do&@$) 	 	+ 	+ 	+ 	*d&6&A%13u 	 	F 	F 	F*d&6&A%131S 	 	U 	U 	U 	U 	Ur   c                 &   d}d}t          j        |          }t          |j        j        dz            }|                     |d           t          j        |          }t          |j        j        dz            }|                     |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   r   intpointQyr   r   pem1pem2key1low16key2s         r   test_compressed_curvez%TestExport_P192.test_compressed_curve`      (( ~d##DKME)**'''~d##DKME)**'''''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   ru  ru  r  sE       C C C C C
, 
, 
,G G G) ) )) ) )	, 	, 	,	, 	, 	,4 4 46, , ,G G G	, 	, 	,4 4 4&
, 
, 
,4 4 4*- - -0	- 	- 	-U U U6( ( ( ( ( ( (r   ru  c                        e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )TestExport_P224c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S r   )r   r  r   rT   r   r   r   s      r   r   zTestExport_P224.__init__{  r   r   c                 J   t          d          }| j                            d          }|                     ||           | j                            d          }|                     ||           | j                            dd          }|                     ||           d S )Nr   Frx  ry  r{  r}  r  s      r   r  z3TestExport_P224.test_export_public_der_uncompressed  r  r   c                     t          d          }t          j        |          }|                    dd          }t          d          }|                     ||           d S )Nr   rx  Tr{  r   r  r  s        r   r  z1TestExport_P224.test_export_public_der_compressed  r  r   c                     t          d          }t          |          }| j                            d          }|                     ||           d S )Nr   r  ry  r  r  s       r   r  z4TestExport_P224.test_export_public_sec1_uncompressed  r  r   c                     t          d          }| j                            dd          }t          d          }t          |          }|                     ||           d S )Nr   r  Tr{  r   r  r  s        r   r  z2TestExport_P224.test_export_public_sec1_compressed  r  r   c                     t          d          }| j                                        }|                     ||           | j                            dd          }|                     ||           d S )Nr   rx  Fr  r  r  s      r   r  z/TestExport_P224.test_export_rfc5915_private_der  r  r   c                     t          d          }| j                                        }|                     ||           | j                            d          }|                     ||           d S )Nr   rx  ry  r  r  s      r   r  z/TestExport_P224.test_export_private_pkcs8_clear  r  r   c                    | j                             dd          }|                     t          t          j        |d            t	          j        |d          }|                     | j         |           | j                             dddddi          }t	          j        |d          }|                     | j         |           d S )	Nr   r  r  rx  z&PBKDF2WithHMAC-SHA512-224AndAES128-CBCr  r  r  r  r  s      r   r  z3TestExport_P224.test_export_private_pkcs8_encrypted  s    "00H?a 1 c c 	*c&7$GGG#GX66)7333 "--U;C;c=Ns<S . U U .(33)733333r   c                 p   t          dd                                          }| j                            d          }|                     ||           | j                            d          }|                     ||           | j                            dd          }|                     ||           d S )Nr  r  Fr  ry  r{  r  r  s      r   r  z3TestExport_P224.test_export_public_pem_uncompressed  r  r   c                    t          dd                                          }t          j        |          }|                    dd          }t          dd                                          }|                     ||           d S )Nr  r  r  Tr{  zecc_p224_public_compressed.pemr  r  s        r   r  z1TestExport_P224.test_export_public_pem_compressed  r  r   c                    t          dd                                          }| j                            d           }|                     ||           | j                            dd          }|                     ||           d S )Nr  r  r  Fr  r  r  s      r   r  z-TestExport_P224.test_export_private_pem_clear  r  r   c                    | j                             d          }|                     t          t          j        |           d|v sJ t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           d S r  r  r  s      r   r  z1TestExport_P224.test_export_private_pem_encrypted  r  r   c                 
   t          dd                                          }| j                                        }|                     ||           | j                            d          }|                     ||           d S )Nr   r  r  ry  r  r  s      r   r  z3TestExport_P224.test_export_private_pkcs8_and_pem_1   r  r   c                    | j                             dd          }|                     t          t          j        |           d|v sJ t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           d S r  r  r  s      r   r  z3TestExport_P224.test_export_private_pkcs8_and_pem_2  r  r   c                    | j                             dddt                                }| j                             dddt                                }|                     ||           | j                             dddt                                }| j                             dddt                                }|                     ||           d S r  r  r  s      r   r  zTestExport_P224.test_prng!  r  r   c                     | j                             dddt                                }| j                             dddt                                }|                     ||           d S r  r  r  s      r   r  z.TestExport_P224.test_byte_or_string_passphrase9  r  r   c                 &   |                      t          | j        j        d           | j                            ddd           |                      t          | j        j        dd           |                      t          | j        j        dddd	
           |                      t          | j        j        dd           |                      t          | j        j        ddd           |                      t          | j        j        ddd	           d S r  r  r   s    r   r  z"TestExport_P224.test_error_params1D  r  r   c                 &   d}d}t          j        |          }t          |j        j        dz            }|                     |d           t          j        |          }t          |j        j        dz            }|                     |d           d S )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  s         r   r  z%TestExport_P224.test_compressed_curve_  r  r   r  r   s   @r   r  r  y  sE       C C C C C
, 
, 
,G G G) ) )) ) )	, 	, 	,	, 	, 	,4 4 4&, , ,G G G	, 	, 	,4 4 4&
, 
, 
,4 4 4*- - -0	- 	- 	-U U U6( ( ( ( ( ( (r   r  c                        e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )TestExport_P256c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S r   )r   r  r   rY   r   r   r   s      r   r   zTestExport_P256.__init__z  r   r   c                 J   t          d          }| j                            d          }|                     ||           | j                            d          }|                     ||           | j                            dd          }|                     ||           d S )Nr  Frx  ry  r{  r}  r  s      r   r  z3TestExport_P256.test_export_public_der_uncompressed~  r  r   c                     t          d          }t          j        |          }|                    dd          }t          d          }|                     ||           d S )Nr  rx  Tr{  r  r  r  s        r   r  z1TestExport_P256.test_export_public_der_compressed  r  r   c                     t          d          }t          |          }| j                            d          }|                     ||           d S )Nr  r  ry  r  r  s       r   r  z4TestExport_P256.test_export_public_sec1_uncompressed  r  r   c                     t          d          }| j                            dd          }t          d          }t          |          }|                     ||           d S )Nr  r  Tr{  r  r  r  s        r   r  z2TestExport_P256.test_export_public_sec1_compressed  r  r   c                     t          d          }| j                                        }|                     ||           | j                            dd          }|                     ||           d S )Nr  rx  Fr  r  r  s      r   r  z/TestExport_P256.test_export_rfc5915_private_der  r  r   c                     t          d          }| j                                        }|                     ||           | j                            d          }|                     ||           d S )Nr  rx  ry  r  r  s      r   r  z/TestExport_P256.test_export_private_pkcs8_clear  r  r   c                 &   | j                             dd          }|                     t          t          j        |d            t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           | j                             dddddi	          }t	          j        |d          }|                     | j         |           d S )
Nr   r  r  rx  r  z&PBKDF2WithHMAC-SHA512-256AndAES128-CBCr  r  r  r  r  s      r   r  z3TestExport_P256.test_export_private_pkcs8_encrypted  s(   "00H?a 1 c c 	*c&7$GGG#GX66)7333 "--U;C;] . _ _ .(33)7333 "--U;C;c=Ns<S . U U .(33)733333r   c                 p   t          dd                                          }| j                            d          }|                     ||           | j                            d          }|                     ||           | j                            dd          }|                     ||           d S )Nr  r  Fr  ry  r{  r  r  s      r   r  z3TestExport_P256.test_export_public_pem_uncompressed  r  r   c                    t          dd                                          }t          j        |          }|                    dd          }t          dd                                          }|                     ||           d S )Nr  r  r  Tr{  zecc_p256_public_compressed.pemr  r  s        r   r  z1TestExport_P256.test_export_public_pem_compressed  r  r   c                    t          dd                                          }| j                            d           }|                     ||           | j                            dd          }|                     ||           d S )Nr!  r  r  Fr  r  r  s      r   r  z-TestExport_P256.test_export_private_pem_clear  r  r   c                    | j                             d          }|                     t          t          j        |           d|v sJ t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           d S r  r  r  s      r   r  z1TestExport_P256.test_export_private_pem_encrypted  r  r   c                 
   t          dd                                          }| j                                        }|                     ||           | j                            d          }|                     ||           d S )Nr  r  r  ry  r  r  s      r   r  z3TestExport_P256.test_export_private_pkcs8_and_pem_1  r  r   c                    | j                             dd          }|                     t          t          j        |           d|v sJ t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           d S r  r  r  s      r   r  z3TestExport_P256.test_export_private_pkcs8_and_pem_2  r  r   c                 L   t          dd          }| j                            d          }|                     ||           | j                            d          }|                     ||           | j                            dd          }|                     ||           d S )Nr(  r  FOpenSSHry  r{  r1   r   _export_opensshr   r  r  s      r    test_export_openssh_uncompressedz0TestExport_P256.test_export_openssh_uncompressed(      :DAA/11%887+++ /,,I,>>7+++/,,I,NN7+++++r   c                    t          dd          }t          j        |          }|                    dd          }t	          |          t	          |          k    sJ |                     |t          j        |                     d S )Nr(  r  r   Tr{  r1   r   r   r  lenr   r   r   r  r  s       r   test_export_openssh_compressedz.TestExport_P256.test_export_openssh_compressed6      :DAA.**%00	D0QQ8}}s#6777777#.1D"E"EFFFFFr   c                    | j                             dddt                                }| j                             dddt                                }|                     ||           | j                             dddt                                }| j                             dddt                                }|                     ||           d S r  r  r  s      r   r  zTestExport_P256.test_prng>  r  r   c                     | j                             dddt                                }| j                             dddt                                }|                     ||           d S r  r  r  s      r   r  z.TestExport_P256.test_byte_or_string_passphraseV  r  r   c                 v   |                      t          | j        j        d           | j                            ddd           |                      t          | j        j        dd           |                      t          | j        j        dddd	
           |                      t          | j        j        dd           |                      t          | j        j        ddd           |                      t          | j        j        ddd	           |                      t          | j        j        dd           d S Nr  ry  r  r   Fr  r  rx  r  r  r  r4   r  r   r  r   s    r   r  z"TestExport_P256.test_error_params1a  y   *d&6&A%PPP 	##5X). 	$ 	0 	0 	0*d&6&A%19 	 	; 	; 	; 	*d&6&A%19051S 	 	U 	U 	U 	*do&@$) 	 	+ 	+ 	+ 	*d&6&A%13u 	 	F 	F 	F*d&6&A%131S 	 	U 	U 	U
 	*d&6&A)19 	 	; 	; 	; 	; 	;r   c                 &   d}d}t          j        |          }t          |j        j        dz            }|                     |d           t          j        |          }t          |j        j        dz            }|                     |d           d S )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  s         r   r  z%TestExport_P256.test_compressed_curve  s    ((
 ~d##DKME)**'''~d##DKME)**'''''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   r  r  x  sd       C C C C C
, 
, 
,G G G) ) )) ) )	, 	, 	,	, 	, 	,4 4 46, , ,G G G	, 	, 	,4 4 4&
, 
, 
,4 4 4*, , ,G G G- - -0	- 	- 	-; ; ;@( ( ( ( ( ( (r   r  c                        e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )TestExport_P384c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S r   )r   r3  r   r_   r   r   r   s      r   r   zTestExport_P384.__init__  r   r   c                 J   t          d          }| j                            d          }|                     ||           | j                            d          }|                     ||           | j                            dd          }|                     ||           d S )Nr<  Frx  ry  r{  r}  r  s      r   r  z3TestExport_P384.test_export_public_der_uncompressed  r  r   c                     t          d          }t          j        |          }|                    dd          }t          d          }|                     ||           d S )Nr<  rx  Tr{  r@  r  r  s        r   r  z1TestExport_P384.test_export_public_der_compressed  r  r   c                     t          d          }t          |          }| j                            d          }|                     ||           d S )Nr<  r  ry  r  r  s       r   r  z4TestExport_P384.test_export_public_sec1_uncompressed  r  r   c                     t          d          }| j                            dd          }t          d          }t          |          }|                     ||           d S )Nr<  r  Tr{  r@  r  r  s        r   r  z2TestExport_P384.test_export_public_sec1_compressed  r  r   c                     t          d          }| j                                        }|                     ||           | j                            dd          }|                     ||           d S )NrB  rx  Fr  r  r  s      r   r  z/TestExport_P384.test_export_rfc5915_private_der  r  r   c                     t          d          }| j                                        }|                     ||           | j                            d          }|                     ||           d S )NrD  rx  ry  r  r  s      r   r  z/TestExport_P384.test_export_private_pkcs8_clear  r  r   c                 &   | j                             dd          }|                     t          t          j        |d            t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           | j                             dddddi	          }t	          j        |d          }|                     | j         |           d S 
Nr   r  r  rx  r  z"PBKDF2WithHMAC-SHA384AndAES128-CBCr  r  r  r  r  s      r   r  z3TestExport_P384.test_export_private_pkcs8_encrypted  (   "00H7Y 1 [ [ 	*c&7$GGG#GX66)7333 "--U4<4V . X X .(33)7333 "--U4<4X6G5L . N N .(33)733333r   c                 p   t          dd                                          }| j                            d          }|                     ||           | j                            d          }|                     ||           | j                            dd          }|                     ||           d S )NrL  r  Fr  ry  r{  r  r  s      r   r  z3TestExport_P384.test_export_public_pem_uncompressed  r  r   c                    t          dd                                          }t          j        |          }|                    dd          }t          dd                                          }|                     ||           d S )NrL  r  r  Tr{  zecc_p384_public_compressed.pemr  r  s        r   r  z1TestExport_P384.test_export_public_pem_compressed   r  r   c                    t          dd                                          }| j                            d           }|                     ||           | j                            dd          }|                     ||           d S )NrN  r  r  Fr  r  r  s      r   r  z-TestExport_P384.test_export_private_pem_clear	  r  r   c                    | j                             d          }|                     t          t          j        |           d|v sJ t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           d S r  r  r  s      r   r  z1TestExport_P384.test_export_private_pem_encrypted  r  r   c                 
   t          dd                                          }| j                                        }|                     ||           | j                            d          }|                     ||           d S )NrF  r  r  ry  r  r  s      r   r  z3TestExport_P384.test_export_private_pkcs8_and_pem_1'  r  r   c                    | j                             dd          }|                     t          t          j        |           d|v sJ t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           d S r  r  r  s      r   r  z3TestExport_P384.test_export_private_pkcs8_and_pem_23  r  r   c                 L   t          dd          }| j                            d          }|                     ||           | j                            d          }|                     ||           | j                            dd          }|                     ||           d S )NrR  r  Fr   ry  r{  r!  r  s      r   r#  z0TestExport_P384.test_export_openssh_uncompressedH  r$  r   c                    t          dd          }t          j        |          }|                    dd          }t	          |          t	          |          k    sJ |                     |t          j        |                     d S )NrR  r  r   Tr{  r&  r(  s       r   r)  z.TestExport_P384.test_export_openssh_compressedV  r*  r   c                    | j                             dddt                                }| j                             dddt                                }|                     ||           | j                             dddt                                }| j                             dddt                                }|                     ||           d S r  r  r  s      r   r  zTestExport_P384.test_prng^  r  r   c                     | j                             dddt                                }| j                             dddt                                }|                     ||           d S r  r  r  s      r   r  z.TestExport_P384.test_byte_or_string_passphrasev  r  r   c                 v   |                      t          | j        j        d           | j                            ddd           |                      t          | j        j        dd           |                      t          | j        j        dddd	
           |                      t          | j        j        dd           |                      t          | j        j        ddd           |                      t          | j        j        ddd	           |                      t          | j        j        dd           d S r.  r  r   s    r   r  z"TestExport_P384.test_error_params1  r/  r   c                 &   d}d}t          j        |          }t          |j        j        dz            }|                     |d           t          j        |          }t          |j        j        dz            }|                     |d           d S )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  s         r   r  z%TestExport_P384.test_compressed_curve  s    
   ~d##DKME)**'''~d##DKME)**'''''r   r1  r   s   @r   r3  r3    sc       C C C C C
, 
, 
,G G G) ) )) ) )	, 	, 	,	, 	, 	,4 4 46, , ,G G G	, 	, 	,4 4 4&
, 
, 
,4 4 4*, , ,G G G- - -0	- 	- 	-; ; ;>( ( ( ( ( ( (r   r3  c                        e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )TestExport_P521c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S r   )r   rK  r   rd   r   r   r   s      r   r   zTestExport_P521.__init__  r   r   c                 J   t          d          }| j                            d          }|                     ||           | j                            d          }|                     ||           | j                            dd          }|                     ||           d S )Nr[  Frx  ry  r{  r}  r  s      r   r  z3TestExport_P521.test_export_public_der_uncompressed  r  r   c                     t          d          }t          j        |          }|                    dd          }t          d          }|                     ||           d S )Nr[  rx  Tr{  r_  r  r  s        r   r  z1TestExport_P521.test_export_public_der_compressed  r  r   c                    t          d          }t          |          }| j                            d          }|                     ||           | j                            d          }|                     ||           d S )Nr[  r  ry  rawr  r  s       r   r  z4TestExport_P521.test_export_public_sec1_uncompressed  s    233+H55/,,F,;;(((/,,E,::(((((r   c                 (   t          d          }| j                            dd          }t          d          }t          |          }|                     ||           | j                            dd          }|                     ||           d S )Nr[  r  Tr{  r_  rP  r  r  s        r   r  z2TestExport_P521.test_export_public_sec1_compressed  s    233/,,FT,JJ"+,L"M"M+,CDD(((/,,ED,II(((((r   c                     t          d          }| j                                        }|                     ||           | j                            dd          }|                     ||           d S )Nra  rx  Fr  r  r  s      r   r  z/TestExport_P521.test_export_rfc5915_private_der  r  r   c                     t          d          }| j                                        }|                     ||           | j                            d          }|                     ||           d S )Nrc  rx  ry  r  r  s      r   r  z/TestExport_P521.test_export_private_pkcs8_clear  r  r   c                 &   | j                             dd          }|                     t          t          j        |d            t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           | j                             dddddi          }t	          j        |d          }|                     | j         |           d S )	Nr   r  r  rx  r  r  r  r  r  r  s      r   r  z3TestExport_P521.test_export_private_pkcs8_encrypted  s(   "00H7Y 1 [ [ 	*c&7$GGG#GX66)7333 "--U4<4V . X X .(33)7333 "--U4<4V6G5L . N N .(33)733333r   c                 p   t          dd                                          }| j                            d          }|                     ||           | j                            d          }|                     ||           | j                            dd          }|                     ||           d S )Nrk  r  Fr  ry  r{  r  r  s      r   r  z3TestExport_P521.test_export_public_pem_uncompressed  r  r   c                    t          dd                                          }t          j        |          }|                    dd          }t          dd                                          }|                     ||           d S )Nrk  r  r  Tr{  zecc_p521_public_compressed.pemr  r  s        r   r  z1TestExport_P521.test_export_public_pem_compressed+  r  r   c                    t          dd                                          }| j                            d           }|                     ||           | j                            dd          }|                     ||           d S )Nrm  r  r  Fr  r  r  s      r   r  z-TestExport_P521.test_export_private_pem_clear4  r  r   c                    | j                             d          }|                     t          t          j        |           d|v sJ t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           d S r  r  r  s      r   r  z1TestExport_P521.test_export_private_pem_encrypted?  r  r   c                 
   t          dd                                          }| j                                        }|                     ||           | j                            d          }|                     ||           d S )Nre  r  r  ry  r  r  s      r   r  z3TestExport_P521.test_export_private_pkcs8_and_pem_1R  r  r   c                    | j                             dd          }|                     t          t          j        |           d|v sJ t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           d S r  r  r  s      r   r  z3TestExport_P521.test_export_private_pkcs8_and_pem_2^  r  r   c                 L   t          dd          }| j                            d          }|                     ||           | j                            d          }|                     ||           | j                            dd          }|                     ||           d S )Nrq  r  Fr   ry  r{  r!  r  s      r   r#  z0TestExport_P521.test_export_openssh_uncompresseds  r$  r   c                    t          dd          }t          j        |          }|                    dd          }t	          |          t	          |          k    sJ |                     |t          j        |                     d S )Nrq  r  r   Tr{  r&  r(  s       r   r)  z.TestExport_P521.test_export_openssh_compressed  r*  r   c                    | j                             dddt                                }| j                             dddt                                }|                     ||           | j                             dddt                                }| j                             dddt                                }|                     ||           d S r  r  r  s      r   r  zTestExport_P521.test_prng  r  r   c                     | j                             dddt                                }| j                             dddt                                }|                     ||           d S r  r  r  s      r   r  z.TestExport_P521.test_byte_or_string_passphrase  r  r   c                 v   |                      t          | j        j        d           | j                            ddd           |                      t          | j        j        dd           |                      t          | j        j        dddd	
           |                      t          | j        j        dd           |                      t          | j        j        ddd           |                      t          | j        j        ddd	           |                      t          | j        j        dd           d S r.  r  r   s    r   r  z"TestExport_P521.test_error_params1  r/  r   c                 &   d}d}t          j        |          }t          |j        j        dz            }|                     |d           t          j        |          }t          |j        j        dz            }|                     |d           d S )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  s         r   r  z%TestExport_P521.test_compressed_curve  s    
   ~d##DKME)**'''~d##DKME)**'''''r   r1  r   s   @r   rK  rK    sc       C C C C C
, 
, 
,G G G) ) )	) 	) 	)	, 	, 	,	, 	, 	,4 4 46, , ,G G G	, 	, 	,4 4 4&
, 
, 
,4 4 4*, , ,G G G- - -0	- 	- 	-; ; ;>( ( ( ( ( ( (r   rK  c                   l     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Z xZS )TestImport_Ed25519c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S r   )r   rb  r   rm   r   r   r   s      r   r   zTestImport_Ed25519.__init__  ?    0 $''0$A&AAA,C,E,E)$///r   c                 @   t          d          }t          j        |          }|                     | j        |           t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_ed25519_public.derr   r   s      r   r   z)TestImport_Ed25519.test_import_public_der  s    566.x88#...oh--#...nX&&#.....r   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_ed25519_private.derr   r   s      r   test_import_pkcs8_derz(TestImport_Ed25519.test_import_pkcs8_der  sh    677oh--)3///nX&&)3/////r   c                     t          d          }t          j        |d          }|                     | j        |           t          j        |d          }|                     | j        |           d S )Nzecc_ed25519_private_p8.derr   r   r   s      r   r   z8TestImport_Ed25519.test_import_private_pkcs8_encrypted_1	  j    9::oh11)3///nXx00)3/////r   c                     t          d          }t          j        |d          }|                     | j        |           d S )Nzecc_ed25519_private_p8.pemr   r   r   s      r   r   z8TestImport_Ed25519.test_import_private_pkcs8_encrypted_2	  s@    9::nXx00)3/////r   c                     t          d          }t          j        |d          }|                     | j        |           t          j        |d          }|                     | j        |           d S )Nzecc_ed25519_private_p8_2.derr   r   r   s      r   r  z8TestImport_Ed25519.test_import_private_pkcs8_encrypted_3	  sj    ;<<oh11)3///nXx00)3/////r   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Nzecc_ed25519_x509.derr   r   s      r   r   z'TestImport_Ed25519.test_import_x509_der	  sf    344oh--#...nX&&#.....r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_ed25519_public.pemr   r   s      r   r   z)TestImport_Ed25519.test_import_public_pem&	  s=    566nX&&#.....r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_ed25519_private.pemr   r   s      r   r   z*TestImport_Ed25519.test_import_private_pem,	  s>    677nX&&)3/////r   c                    dD ]}t          d|z            }t          j        |d          }|                     | j        |           t          j        t          |          d          }|                     | j        |           d S )Nr   r   r   r   zecc_ed25519_private_enc_%s.pemr   r   r   r   s       r   r   z4TestImport_Ed25519.test_import_private_pem_encrypted2	  s    8 	4 	4D !AD!HIIH.844CT-s333.x)<<CT-s3333	4 	4r   c                     t          d          }t          j        |          }|                     | j        |           d S )Nzecc_ed25519_x509.pemr   r   s      r   r   z'TestImport_Ed25519.test_import_x509_pem<	  =    344nX&&#.....r   c                    t          d          }t          j        |          }|                     |                                           t          j        |          }|                     |                                           d S )Necc_ed25519_public_openssh.txt)r1   r   r*  assertFalsehas_privater   r   s      r   r+  z-TestImport_Ed25519.test_import_openssh_publicB	  sq    =>>(22**+++nX&&**+++++r   c                 L    t          d          }t          j        |          }d S )Nzecc_ed25519_private_openssh.pemr#  r   s      r   r2  z4TestImport_Ed25519.test_import_openssh_private_clearI	  s#    >??nX&&r   c                 N    t          d          }t          j        |d          }d S )Nz#ecc_ed25519_private_openssh_pwd.pemr5  r#  r   s      r   r6  z7TestImport_Ed25519.test_import_openssh_private_passwordM	  s%    BCCnX{33r   )r   r   r   r   r   ri  r   r   r  r   r   r   r   r   r+  r2  r6  r   r   s   @r   rb  rb    s        F F F F F
/ 
/ 
/0 0 00 0 00 0 00 0 0/ / // / /0 0 04 4 4/ / /, , ,' ' '4 4 4 4 4 4 4r   rb  c                   f     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Z xZS )TestExport_Ed25519c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S r   )r   r~  r   rm   r   r   r   s      r   r   zTestExport_Ed25519.__init__T	  rd  r   c                 J   t          d          }| j                            d          }|                     ||           | j                            d          }|                     ||           | j                            dd          }|                     ||           d S )Nrf  Trx  ry  Fr{  r}  r  s      r   test_export_public_derz)TestExport_Ed25519.test_export_public_derX	  s    566/>>tDD7+++/,,E,::7+++/,,EE,JJ7+++++r   c                 T    |                      t          | j        j        d           d S Nr  ry  r   r   r   r  r   s    r   test_export_public_sec1z*TestExport_Ed25519.test_export_public_sec1d	  (    *do&@PPPPPr   c                 4   t          d          }| j                                        }|                     ||           | j                            d          }|                     ||           |                     t          | j        j        dd           d S )Nrh  rx  ry  Fr  r1   r   r  r   r  r   r   r  s      r   r  z2TestExport_Ed25519.test_export_private_pkcs8_clearg	  s    677"00227+++ "--U-;;7+++*d&6&A!&% 	 	9 	9 	9 	9 	9r   c                 &   | j                             dd          }|                     t          t          j        |d            t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           | j                             dddddi	          }t	          j        |d          }|                     | j         |           d S )
Nr   r  r  rx  r  z"PBKDF2WithHMAC-SHA256AndAES128-CBCr  r  r  r  r  s      r   r  z6TestExport_Ed25519.test_export_private_pkcs8_encryptedu	  r=  r   c                     t          dd                                          }| j                            d                                          }|                     ||           d S )Nrp  r  r  ry  r1   r  r   r  r   r   key_file_refr   s      r   test_export_public_pemz)TestExport_Ed25519.test_export_public_pem	  s^     !94@@FFHH?--U-;;AACCx00000r   c                     t          dd                                          }| j                            d                                          }|                     ||           d S )Nrr  r  r  ry  r1   r  r   r  r   r  s      r   r  z0TestExport_Ed25519.test_export_private_pem_clear	  s_    6==CCEE"--U-;;AACC7+++++r   c                     | j                             ddd          }|                     t          t          j        |           d|v sJ t	          j        |d          }|                     | j         |           d S Nr  r   r  r  r  r   r   r  r   r   r   r   r   r  s      r   r  z4TestExport_Ed25519.test_export_private_pem_encrypted	      "--U9B:\ . ^ ^
 	*cng>>>&'1111.(33)733333r   c                    t          dd          }t          j        |          }d                    |                    d          d d                   }|                    d          }|                     ||                                           |                    d          }|                     ||                                           d S )Nrx  r  r3   r   Fr   ry  )	r1   r   r   r$   splitr"  r   r  r  )r   r   rj   r  s       r   test_export_opensshz&TestExport_Ed25519.test_export_openssh	  s    =tDD^H--
88HNN3//344,,U337==??333''y'997==??33333r   c                     | j                             d          }|                     |t          d                     d S )NrP  ry  s@   bc85b8cf585d20a4de47e84d1cb6183f63d9ba96223fcbc886e363ffdea20cffr   r  r   r   r   r  s     r   test_export_rawz"TestExport_Ed25519.test_export_raw	  s?    /,,E,::),o"p"pqqqqqr   c                     | j                             dddt                                }| j                             dddt                                }|                     ||           d S Nr  r   r  r  r  r  s      r   r  zTestExport_Ed25519.test_prng	      #..e5=5W3A3C3C / E E #..e5=5W3A3C3C / E E 	8,,,,,r   c                     | j                             dddt                                }| j                             dddt                                }|                     ||           d S Nr  r   r  r  r   r  r  s      r   r  z1TestExport_Ed25519.test_byte_or_string_passphrase	      #..e5=5W3A3C3C / E E #..e5>5W3A3C3C / E E 	8,,,,,r   c                    |                      t          | j        j        d           |                      t          | j        j        dd           |                      t          | j        j        ddd           |                      t          | j        j        ddd	
           |                      t          | j        j        dd           d S Nr  ry  r  r   r  r4   Fr  r  r  r   r   r   r   r  r   s    r   r  z%TestExport_Ed25519.test_error_params1	      *d&6&A%PPP 	*d&6&A%19 	 	; 	; 	; 	*d&6&A%13u 	 	F 	F 	F*d&6&A%131S 	 	U 	U 	U
 	*d&6&A)19 	 	; 	; 	; 	; 	;r   r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r   r   s   @r   r~  r~  R	  s        F F F F F
, 
, 
,Q Q Q9 9 94 4 461 1 1
, , ,
4 4 4	4 	4 	4r r r
- 
- 
-	- 	- 	-; ; ; ; ; ; ;r   r~  c                   Z     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Z xZS )TestImport_Ed448c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S r   )r   r  r   rq   r   r   r   s      r   r   zTestImport_Ed448.__init__	  ?    .%%.????,A,C,C)$///r   c                 @   t          d          }t          j        |          }|                     | j        |           t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_ed448_public.derr   r   s      r   r   z'TestImport_Ed448.test_import_public_der	  s    344.x88#...oh--#...nX&&#.....r   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_ed448_private.derr   r   s      r   ri  z&TestImport_Ed448.test_import_pkcs8_der	  sh    455oh--)3///nX&&)3/////r   c                     t          d          }t          j        |d          }|                     | j        |           t          j        |d          }|                     | j        |           d S )Nzecc_ed448_private_p8.derr   r   r   s      r   r   z6TestImport_Ed448.test_import_private_pkcs8_encrypted_1	  sj    788oh11)3///nXx00)3/////r   c                     t          d          }t          j        |d          }|                     | j        |           d S )Nzecc_ed448_private_p8.pemr   r   r   s      r   r   z6TestImport_Ed448.test_import_private_pkcs8_encrypted_2
  s@    788nXx00)3/////r   c                     t          d          }t          j        |d          }|                     | j        |           t          j        |d          }|                     | j        |           d S )Nzecc_ed448_private_p8_2.derr   r   r   s      r   r  z6TestImport_Ed448.test_import_private_pkcs8_encrypted_3
  rk  r   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Nzecc_ed448_x509.derr   r   s      r   r   z%TestImport_Ed448.test_import_x509_der
  sf    122oh--#...nX&&#.....r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_ed448_public.pemr   r   s      r   r   z'TestImport_Ed448.test_import_public_pem
  rv  r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_ed448_private.pemr   r   s      r   r   z(TestImport_Ed448.test_import_private_pem#
  s>    455nX&&)3/////r   c                    dD ]}t          d|z            }t          j        |d          }|                     | j        |           t          j        t          |          d          }|                     | j        |           d S )Nrt  zecc_ed448_private_enc_%s.pemr   r   r   r   s       r   r   z2TestImport_Ed448.test_import_private_pem_encrypted)
  s    8 	4 	4D !?$!FGGH.844CT-s333.x)<<CT-s3333	4 	4r   c                     t          d          }t          j        |          }|                     | j        |           d S )Nzecc_ed448_x509.pemr   r   s      r   r   z%TestImport_Ed448.test_import_x509_pem3
  s=    122nX&&#.....r   )r   r   r   r   r   ri  r   r   r  r   r   r   r   r   r   r   s   @r   r  r  	  s        D D D D D
/ 
/ 
/0 0 00 0 00 0 00 0 0/ / // / /0 0 04 4 4/ / / / / / /r   r  c                   f     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Z xZS )TestExport_Ed448c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S r   )r   r  r   rq   r   r   r   s      r   r   zTestExport_Ed448.__init__<
  r  r   c                 J   t          d          }| j                            d          }|                     ||           | j                            d          }|                     ||           | j                            dd          }|                     ||           d S )Nr  Trx  ry  Fr{  r}  r  s      r   r  z'TestExport_Ed448.test_export_public_der@
  s    344/>>tDD7+++/,,E,::7+++/,,EE,JJ7+++++r   c                 T    |                      t          | j        j        d           d S r  r  r   s    r   r  z(TestExport_Ed448.test_export_public_sec1L
  r  r   c                 4   t          d          }| j                                        }|                     ||           | j                            d          }|                     ||           |                     t          | j        j        dd           d S )Nr  rx  ry  Fr  r  r  s      r   r  z0TestExport_Ed448.test_export_private_pkcs8_clearO
  s    455"00227+++ "--U-;;7+++*d&6&A!&% 	 	9 	9 	9 	9 	9r   c                 &   | j                             dd          }|                     t          t          j        |d            t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           | j                             dddddi	          }t	          j        |d          }|                     | j         |           d S r<  r  r  s      r   r  z4TestExport_Ed448.test_export_private_pkcs8_encrypted]
  r=  r   c                     t          dd                                          }| j                            d                                          }|                     ||           d S )Nr  r  r  ry  r  r  s      r   r  z'TestExport_Ed448.test_export_public_pemy
  s^     !7>>DDFF?--U-;;AACCx00000r   c                     t          dd                                          }| j                            d                                          }|                     ||           d S )Nr  r  r  ry  r  r  s      r   r  z.TestExport_Ed448.test_export_private_pem_clear~
  s_    4d;;AACC"--U-;;AACC7+++++r   c                     | j                             ddd          }|                     t          t          j        |           d|v sJ t	          j        |d          }|                     | j         |           d S r  r  r  s      r   r  z2TestExport_Ed448.test_export_private_pem_encrypted
  r  r   c                 T    |                      t          | j        j        d           d S )Nr   ry  r  r   s    r   r  z$TestExport_Ed448.test_export_openssh
  s(    *do&@SSSSSr   c                     | j                             d          }|                     |t          d                     d S )NrP  ry  sr   899014ddc0a0e1260cfc1085afdf952019e9fd63372e3e366e26dad32b176624884330a14617237e3081febd9d1a15069e7499433d2f55dd80r  r  s     r   r  z TestExport_Ed448.test_export_raw
  sW    /,,E,::)  -b  #c  #c  	d  	d  	d  	d  	dr   c                     | j                             dddt                                }| j                             dddt                                }|                     ||           d S r  r  r  s      r   r  zTestExport_Ed448.test_prng
  r  r   c                     | j                             dddt                                }| j                             dddt                                }|                     ||           d S r  r  r  s      r   r  z/TestExport_Ed448.test_byte_or_string_passphrase
  r  r   c                    |                      t          | j        j        d           |                      t          | j        j        dd           |                      t          | j        j        ddd           |                      t          | j        j        ddd	
           |                      t          | j        j        dd           d S r  r  r   s    r   r  z#TestExport_Ed448.test_error_params1
  r  r   r  r   s   @r   r  r  :
  s        D D D D D
, 
, 
,Q Q Q9 9 94 4 481 1 1
, , ,
4 4 4T T Td d d
- 
- 
-	- 	- 	-; ; ; ; ; ; ;r   r  c                    g }|t          t                    z  }	 |t          t                    z  }|t          t                    z  }|t          t                    z  }|t          t
                    z  }|t          t                    z  }|t          t                    z  }|t          t                    z  }|t          t                    z  }|t          t                    z  }|t          t                    z  }|t          t                    z  }|t          t                    z  }|t          t                    z  }|t          t                    z  }n# t           $ r Y nw xY w|S r   )r   r~   r   r   r  r9  rX  rb  r  ru  r  r  r3  rK  r~  r  r   )configtestss     r   	get_testsr  
  sE   E	_Z(((E111111111111111!3444!1222111111111111111!3444!1222%   Ls   EE 
E+*E+__main__c                  B    t          j        t                                S r   )unittest	TestSuiter  r   r   r   <lambda>r  
  s    H&y{{33 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   ImportErrorr   r   r1   r9   rP   rT   rY   r_   rd   rm   rq   ru   r|   TestCaser~   r   r   r  r9  rX  ru  r  r  r3  rK  rb  r~  r  r  r  r   r  mainr   r   r   <module>r     so  > 
			          9 9 9 9 9 9 D D D D D D D D D D : : : : : : : : 0 0 0 0 0 0 $ $ $ $ $ $ $ $ $ $ $ $ 8 8 8 8 8 8#$$$$! # # #"#	 	 	 	 	 	 	 	   4C C C

V 
V 
V
V 
V 
V
V 
V 
V
V 
V 
V
V 
V 
V# # ## # #/ / /  d d d d d" d d dBk/ k/ k/ k/ k/h' k/ k/ k/\t/ t/ t/ t/ t/h' t/ t/ t/nR' R' R' R' R'h' R' R' R'jM' M' M' M' M'h' M' M' M'`M' M' M' M' M'h' M' M' M'`D( D( D( D( D(h' D( D( D(N|( |( |( |( |(h' |( |( |(~]( ]( ]( ]( ](h' ]( ]( ](@	b( b( b( b( b(h' b( b( b(J	j( j( j( j( j(h' j( j( j(Z	e4 e4 e4 e4 e4* e4 e4 e4PL; L; L; L; L;* L; L; L;^V/ V/ V/ V/ V/x( V/ V/ V/rF; F; F; F; F;x( F; F; F;R     2 z33EHMg&&&&&& s   A AA