
    E6i[                       S SK r S SKrS SKrS SKrS SKJr  S SKJr  S SKJ	r	J
r
Jr  S SKJrJr  S SKJr  S SKJr  S SKJr  S S	KJr   S SKrS
r " S S\5      rS<S jrS rS rS rS r S r!S r"S r#S r$S r%S r& " S S\RN                  5      r( " S S\RN                  5      r) " S S\RN                  5      r* " S S \RN                  5      r+ " S! S"\RN                  5      r, " S# S$\RN                  5      r- " S% S&\RN                  5      r. " S' S(\RN                  5      r/ " S) S*\RN                  5      r0 " S+ S,\RN                  5      r1 " S- S.\RN                  5      r2 " S/ S0\RN                  5      r3 " S1 S2\RN                  5      r4 " S3 S4\RN                  5      r5 " S5 S6\RN                  5      r60 4S7 jr7\8S8:X  a  S9 r9\Rt                  " S:S;9  gg! \ a    Sr GNf = f)=    N)	unhexlify)list_test_cases)bordtostrFileNotFoundError)DerSequenceDerBitString)bytes_to_long)SHAKE128)ECC)_import_rfc5915_derTFc                       \ rS rSrSrg)MissingTestVectorException6    N)__name__
__module____qualname____firstlineno____static_attributes__r       c/home/james-whalen/.local/lib/python3.13/site-packages/Crypto/SelfTest/PublicKey/test_import_ECC.pyr   r   6   s    r   r   c                 X   S n [         (       d=  [        [        R                  [        R
                  " [        R                  5      U 5      eSn[        R                  R                  [        R                  5      n[        R                  R                  [        R                  R                  " U/UQ76 U 5      n[        XQ5       nUR                  5       nS S S 5        Uc  [!        SU -  5      eU$ ! , (       d  f       N!= f! [         a    [        R                  " S[        SS9   NJf = f)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_filer3   :   s    G$%%#ELL$&KK$=$-/ / )	77??#<#E#EFbggll8&Hi&H)T.'7llnG ( (	)ABBN ('  $7!!"	$$s0   CD C1D 1
C?;D ?D $D)(D)c                     SR                  U 5      n[        [        U5      R                  SS5      R                  SS5      5      $ )Nr     :)r&   r   r   replace)linesexts     r   compactr;   T   s8    
((5/CU3Z''R088bABBr   c                  @   Sn [        S5      R                  5       n[        [        USS 5      5      n[        USS 5      n[	        US   5      S:X  d   e[        USU S-    5      n[        X0S-   S  5      n[
        R                  " S	US
9[
        R                  " S	XES94$ )N   zecc_p192.txtr         	   r      zP-192curvedrC   point_xpoint_yr3   
splitlinesr
   r;   r   r   	constructkey_len	key_linesprivate_key_dpublic_key_xypublic_key_xpublic_key_ys         r   create_ref_keys_p192rR   Y       G.)446I!')Aa."9:MIaN+Ma !Q&&& q!;<L qyz!:;LMM=9MMTV Vr   c                  @   Sn [        S5      R                  5       n[        [        USS 5      5      n[        USS 5      n[	        US   5      S:X  d   e[        USU S-    5      n[        X0S-   S  5      n[
        R                  " S	US
9[
        R                  " S	XES94$ )N   zecc_p224.txtr   r>   r?   r@   r   rA   zP-224rB   rE   rH   rK   s         r   create_ref_keys_p224rV   f   rS   r   c                  @   Sn [        S5      R                  5       n[        [        USS 5      5      n[        USS 5      n[	        US   5      S:X  d   e[        US	U S	-    5      n[        X0S	-   S  5      n[
        R                  " S
US9[
        R                  " S
XES94$ )N    zecc_p256.txtr   r?         r   r>   rA   zP-256rB   rE   rH   rK   s         r   create_ref_keys_p256r[   s       G.)446I!')Aa."9:MIaO,Ma !Q&&& q!;<L qyz!:;LMM=9MMTV Vr   c                  @   Sn [        S5      R                  5       n[        [        USS 5      5      n[        USS 5      n[	        US   5      S:X  d   e[        US	U S	-    5      n[        X0S	-   S  5      n[
        R                  " S
US9[
        R                  " S
XES94$ )N0   zecc_p384.txtr   rY         r   r>   rA   zP-384rB   rE   rH   rK   s         r   create_ref_keys_p384ra      r\   r   c                  @   Sn [        S5      R                  5       n[        [        USS 5      5      n[        USS 5      n[	        US   5      S:X  d   e[        US	U S	-    5      n[        X0S	-   S  5      n[
        R                  " S
US9[
        R                  " S
XES94$ )NB   zecc_p521.txtr   r_         r   r>   rA   zP-521rB   rE   rH   rK   s         r   create_ref_keys_p521rf      r\   r   c                      [        S5      R                  5       n [        U SS 5      n[        R                  " SUS9nX"R                  5       4$ )Nzecc_ed25519.txtr?   rd   Ed25519rC   seedr3   rI   r;   r   rJ   
public_keyrM   rj   keys      r   create_ref_keys_ed25519ro      sF    +,779I9Qq>"D
--id
3C!""r   c                      [        S5      R                  5       n [        U SS 5      n[        R                  " SUS9nX"R                  5       4$ )Nzecc_ed448.txtrY   
   Ed448ri   rk   rm   s      r   create_ref_keys_ed448rs      sE    /*557I9Qr?#D
--gD
1C!""r   c                  ^    [         R                  " 5       R                  S5      R                  $ )Ns   SEED)r   newupdater(   r   r   r   get_fixed_prngrw      s    <<>  )...r   c                     [        5       nUR                  U 5        [        5       nUR                  US   5        UR                  $ )NrA   )r   decoder	   value)dataseqbss      r   extract_bitstring_from_spkir~      s5    m

4^
		#a&xxr   c                   2    \ rS rSrS rS rS rS rS rSr	g)	
TestImport   c                 N    U R                  [        [        R                  S5        g )Nr   assertRaises
ValueErrorr   
import_keyselfs    r   
test_emptyTestImport.test_empty   s    *cnnc:r   c                 R    SnU R                  [        [        R                  U5        g )Na1  -----BEGIN PRIVATE KEY-----
MIG2AgEAMBAGByqGSM49AgEGBSuBBAAiBIGeMIGbAgEBBDAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJChZANiAAQarFRaqflo
I+d61SRvU8Za2EurxtW20eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinng
o4N+LZfQYcTxmdwlkWOrfzCjtHDix6EznPO/LlxTsV+zfTJ/ijTjeXk=
-----END PRIVATE KEY-----r   )r   mismatchs     r   test_mismatchTestImport.test_mismatch   s!     	*cnnh?r   c                 l    Sn[        [        U5      S S5      nU R                  UR                  S5        g )NN302502010104205c4e4320ef260f91ed9fc597aee98c8236b60e0ced692cc7a057d5e45798a0521.2.840.10045.3.1.7   R 1/WzL%-;[6S^,~A;!N\r   r   assertEqualrD   r   data_hexrn   s      r    test_import_private_rfc5915_none+TestImport.test_import_private_rfc5915_none   s0    c!)H"5t=RS bcr   c                 j    Sn[        [        U5      S 5      nU R                  UR                  S5        g )Nf303102010104205c4e4320ef260f91ed9fc597aee98c8236b60e0ced692cc7a057d5e45798a052a00a06082a8648ce3d030107r   r   r   s      r   "test_import_private_rfc5915_only_0-TestImport.test_import_private_rfc5915_only_0   s-    {!)H"5t< bcr   c                 l    Sn[        [        U5      S S5      nU R                  UR                  S5        g )N306b02010104205c4e4320ef260f91ed9fc597aee98c8236b60e0ced692cc7a057d5e45798a052a14403420004a40ad59a2050ebe92479bd5fb16bb2e45b6465eb3cb2b1effe423fabe6cb7424db8219ef0bab80acf26fd70595b61fe4760d33eed80dd03d2fd0dfb27b8ce75cr   r   r   r   s      r   "test_import_private_rfc5915_only_1-TestImport.test_import_private_rfc5915_only_1   s3     p!)H"5t=RS bcr   r   N)
r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s    ;@dddr   r   c                   v   ^  \ rS rSrU 4S jrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rSrU =r$ )TestImport_P192   c                 \   > [         [        U ]
  " U0 UD6  [        5       u  U l        U l        g N)superr   __init__rR   ref_private
ref_publicr   argskwargs	__class__s      r   r   TestImport_P192.__init__   )    ot-t>v>,@,B)$/r   c                 H   [        S5      n[        R                  " U5      nU R                  U R                  U5        [        R
                  " US 5      nU R                  U R                  U5        [        R                  " U5      nU R                  U R                  U5        g )Necc_p192_public.derr3   r   _import_subjectPublicKeyInfor   r   _import_derr   r   key_filern   s      r   test_import_public_der&TestImport_P192.test_import_public_der   w    23..x8#.ooh-#.nnX&#.r   c                     [        S5      n[        U5      n[        R                  " USS9nU R	                  U R
                  U5        g )Nr   P192
curve_namer3   r~   r   r   r   r   r   r   rz   rn   s       r   test_import_sec1_uncompressed-TestImport_P192.test_import_sec1_uncompressed   ;    23+H5nnX&9#.r   c                     [        S5      n[        U5      n[        R                  " USS9nU R	                  U R
                  U5        g )Necc_p192_public_compressed.derr   r   r   r   s       r   test_import_sec1_compressed+TestImport_P192.test_import_sec1_compressed   ;    =>+H5nnX&9#.r   c                 J   [        S5      n[        R                  " US 5      nU R                  U R                  U5        [        R
                  " US 5      nU R                  U R                  U5        [        R                  " U5      nU R                  U R                  U5        g )Necc_p192_private.derr3   r   r   r   r   r   r   r   s      r   test_import_rfc5915_der'TestImport_P192.test_import_rfc5915_der       34%%h5))3/ooh-))3/nnX&))3/r   c                     [        S5      n[        R                  " US 5      nU R                  U R                  U5        [        R
                  " U5      nU R                  U R                  U5        g )Necc_p192_private_p8_clear.derr3   r   r   r   r   r   r   s      r   test_import_private_pkcs8_clear/TestImport_P192.test_import_private_pkcs8_clear  W    <=ooh-))3/nnX&))3/r   c                 ~    [        S5      n[        R                  " U5      nU R                  U R                  U5        g )Necc_p192_private_p8_clear.pemr3   r   r   r   r   r   s      r   &test_import_private_pkcs8_in_pem_clear6TestImport_P192.test_import_private_pkcs8_in_pem_clear  1    <=nnX&))3/r   c                     [        S5      n[        R                  " US5      nU R                  U R                  U5        [        R
                  " US5      nU R                  U R                  U5        g )Nzecc_p192_private_p8.dersecretr   r   s      r   %test_import_private_pkcs8_encrypted_15TestImport_P192.test_import_private_pkcs8_encrypted_1  Y    67ooh1))3/nnXx0))3/r   c                     [        S5      n[        R                  " US5      nU R                  U R                  U5        g )Nzecc_p192_private_p8.pemr   r   r   s      r   %test_import_private_pkcs8_encrypted_25TestImport_P192.test_import_private_pkcs8_encrypted_2  3    67nnXx0))3/r   c                     [        S5      n[        R                  " US 5      nU R                  U R                  U5        [        R
                  " U5      nU R                  U R                  U5        g )Nzecc_p192_x509.derr3   r   r   r   r   r   r   s      r   test_import_x509_der$TestImport_P192.test_import_x509_der   S    01ooh-#.nnX&#.r   c                 ~    [        S5      n[        R                  " U5      nU R                  U R                  U5        g )Necc_p192_public.pemr3   r   r   r   r   r   s      r   test_import_public_pem&TestImport_P192.test_import_public_pem)  /    23nnX&#.r   c                 ~    [        S5      n[        R                  " U5      nU R                  U R                  U5        g )Necc_p192_private.pemr   r   s      r   test_import_private_pem'TestImport_P192.test_import_private_pem/  1    34nnX&))3/r   c                    S H  n[        SU-  5      n[        R                  " US5      nU R                  U R                  U5        [        R                  " [        U5      S5      nU R                  U R                  U5        M     g )Ndes3aes128aes192aes256
aes256_gcmzecc_p192_private_enc_%s.pemr      secretr3   r   r   r   r   r   r   algor   rn   s       r   !test_import_private_pem_encrypted1TestImport_P192.test_import_private_pem_encrypted5  m    FD !>!EFH..84CT--s3..x)<CT--s3 Gr   c                 ~    [        S5      n[        R                  " U5      nU R                  U R                  U5        g )Nzecc_p192_x509.pemr   r   s      r   test_import_x509_pem$TestImport_P192.test_import_x509_pem?  /    01nnX&#.r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   __classcell__r   s   @r   r   r      sO    C
///
00000//04/ /r   r   c                   |   ^  \ rS rSrU 4S jrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rSrU =r$ )TestImport_P224iF  c                 \   > [         [        U ]
  " U0 UD6  [        5       u  U l        U l        g r   )r   r	  r   rV   r   r   r   s      r   r   TestImport_P224.__init__H  r   r   c                 H   [        S5      n[        R                  " U5      nU R                  U R                  U5        [        R
                  " US 5      nU R                  U R                  U5        [        R                  " U5      nU R                  U R                  U5        g )Necc_p224_public.derr   r   s      r   r   &TestImport_P224.test_import_public_derL  r   r   c                     [        S5      n[        U5      n[        R                  " USS9nU R	                  U R
                  U5        g )Nr  P224r   r   r   s       r   r   -TestImport_P224.test_import_sec1_uncompressedX  r   r   c                     [        S5      n[        U5      n[        R                  " USS9nU R	                  U R
                  U5        g )Necc_p224_public_compressed.derr  r   r   r   s       r   r   +TestImport_P224.test_import_sec1_compressed^  r   r   c                 J   [        S5      n[        R                  " US 5      nU R                  U R                  U5        [        R
                  " US 5      nU R                  U R                  U5        [        R                  " U5      nU R                  U R                  U5        g )Necc_p224_private.derr   r   s      r   r   'TestImport_P224.test_import_rfc5915_derd  r   r   c                     [        S5      n[        R                  " US 5      nU R                  U R                  U5        [        R
                  " U5      nU R                  U R                  U5        g )Necc_p224_private_p8_clear.derr   r   s      r   r   /TestImport_P224.test_import_private_pkcs8_clearp  r   r   c                 ~    [        S5      n[        R                  " U5      nU R                  U R                  U5        g )Necc_p224_private_p8_clear.pemr   r   s      r   r   6TestImport_P224.test_import_private_pkcs8_in_pem_cleary  r   r   c                     [        S5      n[        R                  " US5      nU R                  U R                  U5        [        R
                  " US5      nU R                  U R                  U5        g )Nzecc_p224_private_p8.derr   r   r   s      r   r   5TestImport_P224.test_import_private_pkcs8_encrypted_1  r   r   c                     [        S5      n[        R                  " US5      nU R                  U R                  U5        g )Nzecc_p224_private_p8.pemr   r   r   s      r   r   5TestImport_P224.test_import_private_pkcs8_encrypted_2  r   r   c                     [        S5      n[        R                  " US5      nU R                  U R                  U5        [        R
                  " US5      nU R                  U R                  U5        g )Nzecc_p224_private_p8_2.derr   r   r   s      r   %test_import_private_pkcs8_encrypted_35TestImport_P224.test_import_private_pkcs8_encrypted_3  Y    89ooh1))3/nnXx0))3/r   c                     [        S5      n[        R                  " US 5      nU R                  U R                  U5        [        R
                  " U5      nU R                  U R                  U5        g )Nzecc_p224_x509.derr   r   s      r   r   $TestImport_P224.test_import_x509_der  r   r   c                 ~    [        S5      n[        R                  " U5      nU R                  U R                  U5        g )Necc_p224_public.pemr   r   s      r   r   &TestImport_P224.test_import_public_pem  r   r   c                 ~    [        S5      n[        R                  " U5      nU R                  U R                  U5        g )Necc_p224_private.pemr   r   s      r   r   'TestImport_P224.test_import_private_pem  r   r   c                    S H  n[        SU-  5      n[        R                  " US5      nU R                  U R                  U5        [        R                  " [        U5      S5      nU R                  U R                  U5        M     g )Nr   zecc_p224_private_enc_%s.pemr   r   r   r   s       r   r   1TestImport_P224.test_import_private_pem_encrypted  r   r   c                 ~    [        S5      n[        R                  " U5      nU R                  U R                  U5        g )Nzecc_p224_x509.pemr   r   s      r   r  $TestImport_P224.test_import_x509_pem  r  r   r  )r   r   r   r   r   r   r   r   r   r   r   r   r   r#  r   r   r   r   r  r   r  r  s   @r   r	  r	  F  sT    C
///
000000//04/ /r   r	  c                      ^  \ rS rSrU 4S jrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rSrU =r$ )TestImport_P256i  c                 \   > [         [        U ]
  " U0 UD6  [        5       u  U l        U l        g r   )r   r3  r   r[   r   r   r   s      r   r   TestImport_P256.__init__  r   r   c                 H   [        S5      n[        R                  " U5      nU R                  U R                  U5        [        R
                  " US 5      nU R                  U R                  U5        [        R                  " U5      nU R                  U R                  U5        g )Necc_p256_public.derr   r   s      r   r   &TestImport_P256.test_import_public_der  r   r   c                     [        S5      n[        U5      n[        R                  " USS9nU R	                  U R
                  U5        g )Nr7  P256r   r   r   s       r   r   -TestImport_P256.test_import_sec1_uncompressed  r   r   c                     [        S5      n[        U5      n[        R                  " USS9nU R	                  U R
                  U5        g )Necc_p256_public_compressed.derr:  r   r   r   s       r   r   +TestImport_P256.test_import_sec1_compressed  r   r   c                 J   [        S5      n[        R                  " US 5      nU R                  U R                  U5        [        R
                  " US 5      nU R                  U R                  U5        [        R                  " U5      nU R                  U R                  U5        g )Necc_p256_private.derr   r   s      r   r   'TestImport_P256.test_import_rfc5915_der  r   r   c                     [        S5      n[        R                  " US 5      nU R                  U R                  U5        [        R
                  " U5      nU R                  U R                  U5        g )Necc_p256_private_p8_clear.derr   r   s      r   r   /TestImport_P256.test_import_private_pkcs8_clear  r   r   c                 ~    [        S5      n[        R                  " U5      nU R                  U R                  U5        g )Necc_p256_private_p8_clear.pemr   r   s      r   r   6TestImport_P256.test_import_private_pkcs8_in_pem_clear  r   r   c                     [        S5      n[        R                  " US5      nU R                  U R                  U5        [        R
                  " US5      nU R                  U R                  U5        g )Nzecc_p256_private_p8.derr   r   r   s      r   r   5TestImport_P256.test_import_private_pkcs8_encrypted_1  r   r   c                     [        S5      n[        R                  " US5      nU R                  U R                  U5        g )Nzecc_p256_private_p8.pemr   r   r   s      r   r   5TestImport_P256.test_import_private_pkcs8_encrypted_2  r   r   c                     [        S5      n[        R                  " US5      nU R                  U R                  U5        [        R
                  " US5      nU R                  U R                  U5        g )Nzecc_p256_private_p8_2.derr   r   r   s      r   r#  5TestImport_P256.test_import_private_pkcs8_encrypted_3  r%  r   c                     [        S5      n[        R                  " US 5      nU R                  U R                  U5        [        R
                  " U5      nU R                  U R                  U5        g )Nzecc_p256_x509.derr   r   s      r   r   $TestImport_P256.test_import_x509_der  r   r   c                 ~    [        S5      n[        R                  " U5      nU R                  U R                  U5        g )Necc_p256_public.pemr   r   s      r   r   &TestImport_P256.test_import_public_pem  r   r   c                 ~    [        S5      n[        R                  " U5      nU R                  U R                  U5        g )Necc_p256_private.pemr   r   s      r   r   'TestImport_P256.test_import_private_pem  r   r   c                 F    [        S5      n[        R                  " U5      ng )Nzecc_p256_private_ecparams.pemr3   r   r   r   s      r   %test_import_private_pem_with_ecparams5TestImport_P256.test_import_private_pem_with_ecparams#  s    <=nnX&r   c                    S H  n[        SU-  5      n[        R                  " US5      nU R                  U R                  U5        [        R                  " [        U5      S5      nU R                  U R                  U5        M     g )Nr   zecc_p256_private_enc_%s.pemr   r   r   r   s       r   r   1TestImport_P256.test_import_private_pem_encrypted(  r   r   c                 ~    [        S5      n[        R                  " U5      nU R                  U R                  U5        g )Nzecc_p256_x509.pemr   r   s      r   r  $TestImport_P256.test_import_x509_pem2  r  r   c                     [        S5      n[        R                  " U5      nU R                  U R                  U5        [        R
                  " U5      nU R                  U R                  U5        g )Necc_p256_public_openssh.txtr3   r   _import_openssh_publicr   r   r   r   s      r   test_import_openssh_public*TestImport_P256.test_import_openssh_public8  S    :;((2#.nnX&#.r   c                     [        S5      n[        S5      n[        R                  " U5      n[        R                  " U5      nU R                  X45        g )Nzecc_p256_private_openssh.pemz ecc_p256_private_openssh_old.pemr3   r   r   r   r   r   key_file_oldrn   key_olds        r   !test_import_openssh_private_clear1TestImport_P256.test_import_openssh_private_clearA  B    ;< !CDnnX&...&r   c                     [        S5      n[        S5      n[        R                  " US5      n[        R                  " U5      nU R                  X45        g )Nz ecc_p256_private_openssh_pwd.pemz$ecc_p256_private_openssh_pwd_old.pem   passwordrf  rg  s        r   $test_import_openssh_private_password4TestImport_P256.test_import_openssh_private_passwordI  D    ?@ !GHnnX{3...&r   r  )r   r   r   r   r   r   r   r   r   r   r   r   r   r#  r   r   r   rX  r   r  rb  rj  ro  r   r  r  s   @r   r3  r3    sh    C
///
000000//0'
4//'' 'r   r3  c                      ^  \ rS rSrU 4S jrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rSrU =r$ )TestImport_P384iR  c                 \   > [         [        U ]
  " U0 UD6  [        5       u  U l        U l        g r   )r   rs  r   ra   r   r   r   s      r   r   TestImport_P384.__init__T  r   r   c                 H   [        S5      n[        R                  " U5      nU R                  U R                  U5        [        R
                  " US 5      nU R                  U R                  U5        [        R                  " U5      nU R                  U R                  U5        g )Necc_p384_public.derr   r   s      r   r   &TestImport_P384.test_import_public_derX  r   r   c                     [        S5      n[        U5      n[        R                  " USS9nU R	                  U R
                  U5        g )Nrw  P384r   r   r   s       r   r   -TestImport_P384.test_import_sec1_uncompressedd  r   r   c                     [        S5      n[        U5      n[        R                  " USS9nU R	                  U R
                  U5        g )Necc_p384_public_compressed.derrz  r   r   r   s       r   r   +TestImport_P384.test_import_sec1_compressedj  r   r   c                 J   [        S5      n[        R                  " US 5      nU R                  U R                  U5        [        R
                  " US 5      nU R                  U R                  U5        [        R                  " U5      nU R                  U R                  U5        g )Necc_p384_private.derr   r   s      r   r   'TestImport_P384.test_import_rfc5915_derp  r   r   c                     [        S5      n[        R                  " US 5      nU R                  U R                  U5        [        R
                  " U5      nU R                  U R                  U5        g )Necc_p384_private_p8_clear.derr   r   s      r   r   /TestImport_P384.test_import_private_pkcs8_clear|  r   r   c                 ~    [        S5      n[        R                  " U5      nU R                  U R                  U5        g )Necc_p384_private_p8_clear.pemr   r   s      r   r   6TestImport_P384.test_import_private_pkcs8_in_pem_clear  r   r   c                     [        S5      n[        R                  " US5      nU R                  U R                  U5        [        R
                  " US5      nU R                  U R                  U5        g )Nzecc_p384_private_p8.derr   r   r   s      r   r   5TestImport_P384.test_import_private_pkcs8_encrypted_1  r   r   c                     [        S5      n[        R                  " US5      nU R                  U R                  U5        g )Nzecc_p384_private_p8.pemr   r   r   s      r   r   5TestImport_P384.test_import_private_pkcs8_encrypted_2  r   r   c                     [        S5      n[        R                  " US5      nU R                  U R                  U5        [        R
                  " US5      nU R                  U R                  U5        g )Nzecc_p384_private_p8_2.derr   r   r   s      r   r#  5TestImport_P384.test_import_private_pkcs8_encrypted_3  r%  r   c                     [        S5      n[        R                  " US 5      nU R                  U R                  U5        [        R
                  " U5      nU R                  U R                  U5        g )Nzecc_p384_x509.derr   r   s      r   r   $TestImport_P384.test_import_x509_der  r   r   c                 ~    [        S5      n[        R                  " U5      nU R                  U R                  U5        g )Necc_p384_public.pemr   r   s      r   r   &TestImport_P384.test_import_public_pem  r   r   c                 ~    [        S5      n[        R                  " U5      nU R                  U R                  U5        g )Necc_p384_private.pemr   r   s      r   r   'TestImport_P384.test_import_private_pem  r   r   c                    S H  n[        SU-  5      n[        R                  " US5      nU R                  U R                  U5        [        R                  " [        U5      S5      nU R                  U R                  U5        M     g )Nr   zecc_p384_private_enc_%s.pemr   r   r   r   s       r   r   1TestImport_P384.test_import_private_pem_encrypted  r   r   c                 ~    [        S5      n[        R                  " U5      nU R                  U R                  U5        g )Nzecc_p384_x509.pemr   r   s      r   r  $TestImport_P384.test_import_x509_pem  r  r   c                     [        S5      n[        R                  " U5      nU R                  U R                  U5        [        R
                  " U5      nU R                  U R                  U5        g )Necc_p384_public_openssh.txtr`  r   s      r   rb  *TestImport_P384.test_import_openssh_public  rd  r   c                     [        S5      n[        S5      n[        R                  " U5      n[        R                  " U5      nU R                  X45        g )Nzecc_p384_private_openssh.pemz ecc_p384_private_openssh_old.pemrf  rg  s        r   rj  1TestImport_P384.test_import_openssh_private_clear  rl  r   c                     [        S5      n[        S5      n[        R                  " US5      n[        R                  " U5      nU R                  X45        g )Nz ecc_p384_private_openssh_pwd.pemz$ecc_p384_private_openssh_pwd_old.pemrn  rf  rg  s        r   ro  4TestImport_P384.test_import_openssh_private_password  rq  r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r#  r   r   r   r   r  rb  rj  ro  r   r  r  s   @r   rs  rs  R  c    C
///
000000//04//'' 'r   rs  c                      ^  \ rS rSrU 4S jrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rSrU =r$ )TestImport_P521i  c                 \   > [         [        U ]
  " U0 UD6  [        5       u  U l        U l        g r   )r   r  r   rf   r   r   r   s      r   r   TestImport_P521.__init__  r   r   c                 H   [        S5      n[        R                  " U5      nU R                  U R                  U5        [        R
                  " US 5      nU R                  U R                  U5        [        R                  " U5      nU R                  U R                  U5        g )Necc_p521_public.derr   r   s      r   r   &TestImport_P521.test_import_public_der  r   r   c                     [        S5      n[        U5      n[        R                  " USS9nU R	                  U R
                  U5        g )Nr  P521r   r   r   s       r   r   -TestImport_P521.test_import_sec1_uncompressed  r   r   c                     [        S5      n[        U5      n[        R                  " USS9nU R	                  U R
                  U5        g )Necc_p521_public_compressed.derr  r   r   r   s       r   r   +TestImport_P521.test_import_sec1_compressed  r   r   c                 J   [        S5      n[        R                  " US 5      nU R                  U R                  U5        [        R
                  " US 5      nU R                  U R                  U5        [        R                  " U5      nU R                  U R                  U5        g )Necc_p521_private.derr   r   s      r   r   'TestImport_P521.test_import_rfc5915_der   r   r   c                     [        S5      n[        R                  " US 5      nU R                  U R                  U5        [        R
                  " U5      nU R                  U R                  U5        g )Necc_p521_private_p8_clear.derr   r   s      r   r   /TestImport_P521.test_import_private_pkcs8_clear  r   r   c                 ~    [        S5      n[        R                  " U5      nU R                  U R                  U5        g )Necc_p521_private_p8_clear.pemr   r   s      r   r   6TestImport_P521.test_import_private_pkcs8_in_pem_clear  r   r   c                     [        S5      n[        R                  " US5      nU R                  U R                  U5        [        R
                  " US5      nU R                  U R                  U5        g )Nzecc_p521_private_p8.derr   r   r   s      r   r   5TestImport_P521.test_import_private_pkcs8_encrypted_1  r   r   c                     [        S5      n[        R                  " US5      nU R                  U R                  U5        g )Nzecc_p521_private_p8.pemr   r   r   s      r   r   5TestImport_P521.test_import_private_pkcs8_encrypted_2$  r   r   c                     [        S5      n[        R                  " US5      nU R                  U R                  U5        [        R
                  " US5      nU R                  U R                  U5        g )Nzecc_p521_private_p8_2.derr   r   r   s      r   r#  5TestImport_P521.test_import_private_pkcs8_encrypted_3*  r%  r   c                     [        S5      n[        R                  " US 5      nU R                  U R                  U5        [        R
                  " U5      nU R                  U R                  U5        g )Nzecc_p521_x509.derr   r   s      r   r   $TestImport_P521.test_import_x509_der3  r   r   c                 ~    [        S5      n[        R                  " U5      nU R                  U R                  U5        g )Necc_p521_public.pemr   r   s      r   r   &TestImport_P521.test_import_public_pem<  r   r   c                 ~    [        S5      n[        R                  " U5      nU R                  U R                  U5        g )Necc_p521_private.pemr   r   s      r   r   'TestImport_P521.test_import_private_pemB  r   r   c                    S H  n[        SU-  5      n[        R                  " US5      nU R                  U R                  U5        [        R                  " [        U5      S5      nU R                  U R                  U5        M     g )Nr   zecc_p521_private_enc_%s.pemr   r   r   r   s       r   r   1TestImport_P521.test_import_private_pem_encryptedH  r   r   c                 ~    [        S5      n[        R                  " U5      nU R                  U R                  U5        g )Nzecc_p521_x509.pemr   r   s      r   r  $TestImport_P521.test_import_x509_pemR  r  r   c                     [        S5      n[        R                  " U5      nU R                  U R                  U5        [        R
                  " U5      nU R                  U R                  U5        g )Necc_p521_public_openssh.txtr`  r   s      r   rb  *TestImport_P521.test_import_openssh_publicX  rd  r   c                     [        S5      n[        S5      n[        R                  " U5      n[        R                  " U5      nU R                  X45        g )Nzecc_p521_private_openssh.pemz ecc_p521_private_openssh_old.pemrf  rg  s        r   rj  1TestImport_P521.test_import_openssh_private_cleara  rl  r   c                     [        S5      n[        S5      n[        R                  " US5      n[        R                  " U5      nU R                  X45        g )Nz ecc_p521_private_openssh_pwd.pemz$ecc_p521_private_openssh_pwd_old.pemrn  rf  rg  s        r   ro  4TestImport_P521.test_import_openssh_private_passwordi  rq  r   r  r  r  s   @r   r  r    r  r   r  c                      ^  \ rS rSrU 4S jrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rSrU =r$ )TestExport_P192ir  c                 \   > [         [        U ]
  " U0 UD6  [        5       u  U l        U l        g r   )r   r  r   rR   r   r   r   s      r   r   TestExport_P192.__init__t  r   r   c                    [        S5      nU R                  R                  S5      nU R                  X5        U R                  R	                  SS9nU R                  X5        U R                  R	                  SSS9nU R                  X5        g )Nr   FDERformatr  compressr3   r   _export_subjectPublicKeyInfor   
export_keyr   r   encodeds      r   #test_export_public_der_uncompressed3TestExport_P192.test_export_public_der_uncompressedx  {    23//>>uE+//,,E,:+//,,EE,J+r   c                     [        S5      n[        R                  " U5      nUR                  SSS9n[        S5      nU R	                  X45        g )Nr   r  Tr  r   r3   r   r   r  r   r   r   pub_keykey_file_compressedkey_file_compressed_refs        r   !test_export_public_der_compressed1TestExport_P192.test_export_public_der_compressed  L    23..*%000M"+,L"M,Fr   c                     [        S5      n[        U5      nU R                  R                  SS9nU R	                  X#5        g )Nr   SEC1r  r3   r~   r   r  r   r   r   rz   r  s       r   $test_export_public_sec1_uncompressed4TestExport_P192.test_export_public_sec1_uncompressed  <    23+H5//,,F,;(r   c                     [        S5      nU R                  R                  SSS9n[        S5      n[        U5      nU R	                  XB5        g )Nr   r  Tr  r   r3   r   r  r~   r   r   r   r  r  rz   s        r   "test_export_public_sec1_compressed2TestExport_P192.test_export_public_sec1_compressed  K    23//,,FT,J"+,L"M+,CD(r   c                     [        S5      nU R                  R                  5       nU R                  X5        U R                  R	                  SSS9nU R                  X5        g )Nr   r  Fr  	use_pkcs8r3   r   _export_rfc5915_private_derr   r  r  s      r   test_export_rfc5915_private_der/TestExport_P192.test_export_rfc5915_private_der  Z    34"">>@+ ""--Ue-L+r   c                     [        S5      nU R                  R                  5       nU R                  X5        U R                  R	                  SS9nU R                  X5        g )Nr   r  r  r3   r   _export_pkcs8r   r  r  s      r   test_export_private_pkcs8_clear/TestExport_P192.test_export_private_pkcs8_clear  X    <=""002+ ""--U-;+r   c                 (   U R                   R                  SSS9nU R                  [        [        R
                  US 5        [        R
                  " US5      nU R                  U R                   U5        U R                   R                  SSSS9n[        R                  " US5      nU R                  U R                   U5        U R                   R                  SSSSS0S	9n[        R                  " US5      nU R                  U R                   U5        g )
Nr    PBKDF2WithHMAC-SHA1AndAES128-CBC
passphrase
protectionr  r  r  r  z"PBKDF2WithHMAC-SHA224AndAES192-CBCiteration_count{   r  r  r  prot_params	r   r  r   r   r   _import_pkcs8r   r  r   r   r  decodeds      r   #test_export_private_pkcs8_encrypted3TestExport_P192.test_export_private_pkcs8_encrypted  s   ""00H?a 1 c 	*c&7&7$G##GX6))73 ""--U;C;] . _ ..(3))73 ""--U;C;_=Ns<S . U ..(3))73r   c                 :   [        SS5      R                  5       nU R                  R                  S5      nU R	                  X5        U R
                  R                  SS9nU R	                  X5        U R
                  R                  SSS9nU R	                  X5        g )Nr   rtFPEMr  r  r3   stripr   _export_public_pemr   r   r  r  s      r   #test_export_public_pem_uncompressed3TestExport_P192.test_export_public_pem_uncompressed      2D9??A""55e<+ //,,E,:+//,,EE,J+r   c                     [        SS5      R                  5       n[        R                  " U5      nUR	                  SSS9n[        SS5      R                  5       nU R                  X45        g )Nr   r  r  Tr  zecc_p192_public_compressed.pemr3   r  r   r   r  r   r  s        r   !test_export_public_pem_compressed1TestExport_P192.test_export_public_pem_compressed  b    2D9??A..*%000M"+,Ld"S"Y"Y"[,Fr   c                     [        SS5      R                  5       nU R                  R                  S 5      nU R	                  X5        U R                  R                  SSS9nU R	                  X5        g )Nr   r  r  Fr  r3   r  r   _export_private_pemr   r  r  s      r   test_export_private_pem_clear-TestExport_P192.test_export_private_pem_clear  g    3T:@@B""66t<+ ""--Ue-L+r   c                    U R                   R                  SS9nU R                  [        [        R
                  U5        SU;   d   e[        R
                  " US5      nU R                  U R                   U5        U R                   R                  SSSS9n[        R
                  " US5      nU R                  U R                   U5        g Nr   )r  zEC PRIVATE KEYr   r  Fr  r  r  r   r(  r   r   r   r   r   r  r  s      r   !test_export_private_pem_encrypted1TestExport_P192.test_export_private_pem_encrypted      ""66)6L 	*cnng>7***..(3))73 ""--U4<38 . : ..(3))73r   c                     [        SS5      R                  5       nU R                  R                  5       nU R	                  X5        U R                  R                  SS9nU R	                  X5        g )Nr   r  r  r  r3   r  r   (_export_private_clear_pkcs8_in_clear_pemr   r  r  s      r   #test_export_private_pkcs8_and_pem_13TestExport_P192.test_export_private_pkcs8_and_pem_1  c    <dCIIK""KKM+ ""--U-;+r   c                    U R                   R                  SSS9nU R                  [        [        R
                  U5        SU;   d   e[        R
                  " US5      nU R                  U R                   U5        U R                   R                  SSSS9n[        R
                  " US5      nU R                  U R                   U5        g 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_23TestExport_P192.test_export_private_pkcs8_and_pem_2      ""OOPX)K P M 	*cnng>&'111..(3))73 ""--U4<4V . X ..(3))73r   c                 h   U R                   R                  SSS[        5       S9nU R                   R                  SSS[        5       S9nU R                  X5        U R                   R                  SSS[        5       S9nU R                   R                  SSS[        5       S9nU R                  X5        g Nr  r   r	  r  r  r  randfuncFr  r  r  rD  r   r  rw   r   r   encoded1encoded2s      r   	test_prngTestExport_P192.test_prng"      ##..e5=5W3A3C / E ##..e5=5W3A3C / E 	, ##..e495=3A3C / E ##..e495=3A3C / E 	,r   c                     U R                   R                  SSS[        5       S9nU R                   R                  SSS[        5       S9nU R                  X5        g Nr  Fr   rE  r   rF  rG  s      r   test_byte_or_string_passphrase.TestExport_P192.test_byte_or_string_passphrase:  h    ##..e495=3A3C / E ##..e495>3A3C / E 	,r   c           	      8   U R                  [        U R                  R                  SS9  U R                  R                  SSSS9  U R                  [        U R                  R                  SSS9  U R                  [        U R                  R                  SSSS	S
9  U R                  [        U R                  R                  SSS9  U R                  [        U R                  R                  SSSS9  U R                  [        U R                  R                  SSS	S9  g NXXXr  r  r   Fr.  r  r  r  r	  r  r  r  r  r  r6   r  r   r   r   r  r   r   s    r   test_error_params1"TestExport_P192.test_error_params1E     *d&6&6&A&A%P 	##5X). 	$ 	0*d&6&6&A&A%19 	 	; 	*d&6&6&A&A%19051S 	 	U 	*doo&@&@$) 	 	+ 	*d&6&6&A&A%13u 	 	F*d&6&6&A&A%131S 	 	Ur   c                 4   SnSn[         R                  " U5      n[        UR                  R                  S-  5      nU R                  US5        [         R                  " U5      n[        UR                  R                  S-  5      nU R                  US5        g )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_curve%TestExport_P192.test_compressed_curve`  |    (( ~~d#DKKMME)*'~~d#DKKMME)*'r   r  r   r   r   r   r   r  r  r  r  r  r  r  r  r#  r)  r0  r6  r>  rJ  rO  rX  rg  r   r  r  s   @r   r  r  r  sf    C
,G))	,	,46,G	,4&
,4*-0	-U6( (r   r  c                      ^  \ rS rSrU 4S jrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rSrU =r$ )TestExport_P224iy  c                 \   > [         [        U ]
  " U0 UD6  [        5       u  U l        U l        g r   )r   rl  r   rV   r   r   r   s      r   r   TestExport_P224.__init__{  r   r   c                    [        S5      nU R                  R                  S5      nU R                  X5        U R                  R	                  SS9nU R                  X5        U R                  R	                  SSS9nU R                  X5        g )Nr  Fr  r  r  r  r  s      r   r  3TestExport_P224.test_export_public_der_uncompressed  r  r   c                     [        S5      n[        R                  " U5      nUR                  SSS9n[        S5      nU R	                  X45        g )Nr  r  Tr  r  r  r  s        r   r  1TestExport_P224.test_export_public_der_compressed  r  r   c                     [        S5      n[        U5      nU R                  R                  SS9nU R	                  X#5        g )Nr  r  r  r  r  s       r   r  4TestExport_P224.test_export_public_sec1_uncompressed  r  r   c                     [        S5      nU R                  R                  SSS9n[        S5      n[        U5      nU R	                  XB5        g )Nr  r  Tr  r  r  r  s        r   r  2TestExport_P224.test_export_public_sec1_compressed  r  r   c                     [        S5      nU R                  R                  5       nU R                  X5        U R                  R	                  SSS9nU R                  X5        g )Nr  r  Fr  r  r  s      r   r  /TestExport_P224.test_export_rfc5915_private_der  r  r   c                     [        S5      nU R                  R                  5       nU R                  X5        U R                  R	                  SS9nU R                  X5        g )Nr  r  r  r  r  s      r   r  /TestExport_P224.test_export_private_pkcs8_clear  r  r   c                    U R                   R                  SSS9nU R                  [        [        R
                  US 5        [        R
                  " US5      nU R                  U R                   U5        U R                   R                  SSSSS0S9n[        R                  " US5      nU R                  U R                   U5        g )	Nr   r	  r
  r  z&PBKDF2WithHMAC-SHA512-224AndAES128-CBCr  r  r  r  r  s      r   r  3TestExport_P224.test_export_private_pkcs8_encrypted  s    ""00H?a 1 c 	*c&7&7$G##GX6))73 ""--U;C;c=Ns<S . U ..(3))73r   c                 :   [        SS5      R                  5       nU R                  R                  S5      nU R	                  X5        U R
                  R                  SS9nU R	                  X5        U R
                  R                  SSS9nU R	                  X5        g )Nr)  r  Fr  r  r  r  r  s      r   r  3TestExport_P224.test_export_public_pem_uncompressed  r   r   c                     [        SS5      R                  5       n[        R                  " U5      nUR	                  SSS9n[        SS5      R                  5       nU R                  X45        g )Nr)  r  r  Tr  zecc_p224_public_compressed.pemr"  r  s        r   r#  1TestExport_P224.test_export_public_pem_compressed  r%  r   c                     [        SS5      R                  5       nU R                  R                  S 5      nU R	                  X5        U R                  R                  SSS9nU R	                  X5        g )Nr,  r  r  Fr  r'  r  s      r   r)  -TestExport_P224.test_export_private_pem_clear  r+  r   c                    U R                   R                  SS9nU R                  [        [        R
                  U5        SU;   d   e[        R
                  " US5      nU R                  U R                   U5        U R                   R                  SSSS9n[        R
                  " US5      nU R                  U R                   U5        g r-  r/  r  s      r   r0  1TestExport_P224.test_export_private_pem_encrypted  r2  r   c                     [        SS5      R                  5       nU R                  R                  5       nU R	                  X5        U R                  R                  SS9nU R	                  X5        g )Nr  r  r  r  r4  r  s      r   r6  3TestExport_P224.test_export_private_pkcs8_and_pem_1   r8  r   c                    U R                   R                  SSS9nU R                  [        [        R
                  U5        SU;   d   e[        R
                  " US5      nU R                  U R                   U5        U R                   R                  SSSS9n[        R
                  " US5      nU R                  U R                   U5        g r:  r<  r  s      r   r>  3TestExport_P224.test_export_private_pkcs8_and_pem_2  r@  r   c                 h   U R                   R                  SSS[        5       S9nU R                   R                  SSS[        5       S9nU R                  X5        U R                   R                  SSS[        5       S9nU R                   R                  SSS[        5       S9nU R                  X5        g rB  rF  rG  s      r   rJ  TestExport_P224.test_prng!  rL  r   c                     U R                   R                  SSS[        5       S9nU R                   R                  SSS[        5       S9nU R                  X5        g rN  rF  rG  s      r   rO  .TestExport_P224.test_byte_or_string_passphrase9  rQ  r   c           	      8   U R                  [        U R                  R                  SS9  U R                  R                  SSSS9  U R                  [        U R                  R                  SSS9  U R                  [        U R                  R                  SSSS	S
9  U R                  [        U R                  R                  SSS9  U R                  [        U R                  R                  SSSS9  U R                  [        U R                  R                  SSS	S9  g rS  rW  r   s    r   rX  "TestExport_P224.test_error_params1D  rZ  r   c                 4   SnSn[         R                  " U5      n[        UR                  R                  S-  5      nU R                  US5        [         R                  " U5      n[        UR                  R                  S-  5      nU R                  US5        g )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]  ra  s         r   rg  %TestExport_P224.test_compressed_curve_  ri  r   r  rj  r  s   @r   rl  rl  y  sf    C
,G))	,	,4&,G	,4&
,4*-0	-U6( (r   rl  c                      ^  \ rS rSrU 4S jrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rSrU =r$ )TestExport_P256ix  c                 \   > [         [        U ]
  " U0 UD6  [        5       u  U l        U l        g r   )r   r  r   r[   r   r   r   s      r   r   TestExport_P256.__init__z  r   r   c                    [        S5      nU R                  R                  S5      nU R                  X5        U R                  R	                  SS9nU R                  X5        U R                  R	                  SSS9nU R                  X5        g )Nr7  Fr  r  r  r  r  s      r   r  3TestExport_P256.test_export_public_der_uncompressed~  r  r   c                     [        S5      n[        R                  " U5      nUR                  SSS9n[        S5      nU R	                  X45        g )Nr7  r  Tr  r=  r  r  s        r   r  1TestExport_P256.test_export_public_der_compressed  r  r   c                     [        S5      n[        U5      nU R                  R                  SS9nU R	                  X#5        g )Nr7  r  r  r  r  s       r   r  4TestExport_P256.test_export_public_sec1_uncompressed  r  r   c                     [        S5      nU R                  R                  SSS9n[        S5      n[        U5      nU R	                  XB5        g )Nr7  r  Tr  r=  r  r  s        r   r  2TestExport_P256.test_export_public_sec1_compressed  r  r   c                     [        S5      nU R                  R                  5       nU R                  X5        U R                  R	                  SSS9nU R                  X5        g )Nr@  r  Fr  r  r  s      r   r  /TestExport_P256.test_export_rfc5915_private_der  r  r   c                     [        S5      nU R                  R                  5       nU R                  X5        U R                  R	                  SS9nU R                  X5        g )NrC  r  r  r  r  s      r   r  /TestExport_P256.test_export_private_pkcs8_clear  r  r   c                 (   U R                   R                  SSS9nU R                  [        [        R
                  US 5        [        R
                  " US5      nU R                  U R                   U5        U R                   R                  SSSS9n[        R                  " US5      nU R                  U R                   U5        U R                   R                  SSSSS0S	9n[        R                  " US5      nU R                  U R                   U5        g )
Nr   r	  r
  r  r  z&PBKDF2WithHMAC-SHA512-256AndAES128-CBCr  r  r  r  r  s      r   r  3TestExport_P256.test_export_private_pkcs8_encrypted  s   ""00H?a 1 c 	*c&7&7$G##GX6))73 ""--U;C;] . _ ..(3))73 ""--U;C;c=Ns<S . U ..(3))73r   c                 :   [        SS5      R                  5       nU R                  R                  S5      nU R	                  X5        U R
                  R                  SS9nU R	                  X5        U R
                  R                  SSS9nU R	                  X5        g )NrQ  r  Fr  r  r  r  r  s      r   r  3TestExport_P256.test_export_public_pem_uncompressed  r   r   c                     [        SS5      R                  5       n[        R                  " U5      nUR	                  SSS9n[        SS5      R                  5       nU R                  X45        g )NrQ  r  r  Tr  zecc_p256_public_compressed.pemr"  r  s        r   r#  1TestExport_P256.test_export_public_pem_compressed  r%  r   c                     [        SS5      R                  5       nU R                  R                  S 5      nU R	                  X5        U R                  R                  SSS9nU R	                  X5        g )NrT  r  r  Fr  r'  r  s      r   r)  -TestExport_P256.test_export_private_pem_clear  r+  r   c                    U R                   R                  SS9nU R                  [        [        R
                  U5        SU;   d   e[        R
                  " US5      nU R                  U R                   U5        U R                   R                  SSSS9n[        R
                  " US5      nU R                  U R                   U5        g r-  r/  r  s      r   r0  1TestExport_P256.test_export_private_pem_encrypted  r2  r   c                     [        SS5      R                  5       nU R                  R                  5       nU R	                  X5        U R                  R                  SS9nU R	                  X5        g )NrF  r  r  r  r4  r  s      r   r6  3TestExport_P256.test_export_private_pkcs8_and_pem_1  r8  r   c                    U R                   R                  SSS9nU R                  [        [        R
                  U5        SU;   d   e[        R
                  " US5      nU R                  U R                   U5        U R                   R                  SSSS9n[        R
                  " US5      nU R                  U R                   U5        g r:  r<  r  s      r   r>  3TestExport_P256.test_export_private_pkcs8_and_pem_2  r@  r   c                    [        SS5      nU R                  R                  S5      nU R                  X5        U R                  R	                  SS9nU R                  X5        U R                  R	                  SSS9nU R                  X5        g )Nr_  r  FOpenSSHr  r  r3   r   _export_opensshr   r  r  s      r    test_export_openssh_uncompressed0TestExport_P256.test_export_openssh_uncompressed(      :DA//11%8+ //,,I,>+//,,I,N+r   c                     [        SS5      n[        R                  " U5      nUR                  SSS9n[	        U5      [	        U5      :  d   eU R                  U[        R                  " U5      5        g )Nr_  r  r  Tr  r3   r   r   r  lenr   r   r   r  r  s       r   test_export_openssh_compressed.TestExport_P256.test_export_openssh_compressed6  e    :DA..*%00	D0Q8}s#67777#..1D"EFr   c                 h   U R                   R                  SSS[        5       S9nU R                   R                  SSS[        5       S9nU R                  X5        U R                   R                  SSS[        5       S9nU R                   R                  SSS[        5       S9nU R                  X5        g rB  rF  rG  s      r   rJ  TestExport_P256.test_prng>  rL  r   c                     U R                   R                  SSS[        5       S9nU R                   R                  SSS[        5       S9nU R                  X5        g rN  rF  rG  s      r   rO  .TestExport_P256.test_byte_or_string_passphraseV  rQ  r   c           	         U R                  [        U R                  R                  SS9  U R                  R                  SSSS9  U R                  [        U R                  R                  SSS9  U R                  [        U R                  R                  SSSS	S
9  U R                  [        U R                  R                  SSS9  U R                  [        U R                  R                  SSSS9  U R                  [        U R                  R                  SSS	S9  U R                  [        U R                  R                  SSS9  g NrT  r  r  r   Fr.  rU  r  r	  rV  r  r6   r  r  rW  r   s    r   rX  "TestExport_P256.test_error_params1a  I   *d&6&6&A&A%P 	##5X). 	$ 	0*d&6&6&A&A%19 	 	; 	*d&6&6&A&A%19051S 	 	U 	*doo&@&@$) 	 	+ 	*d&6&6&A&A%13u 	 	F*d&6&6&A&A%131S 	 	U
 	*d&6&6&A&A)19 	 	;r   c                 4   SnSn[         R                  " U5      n[        UR                  R                  S-  5      nU R                  US5        [         R                  " U5      n[        UR                  R                  S-  5      nU R                  US5        g )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]  ra  s         r   rg  %TestExport_P256.test_compressed_curve  s|    ((
 ~~d#DKKMME)*'~~d#DKKMME)*'r   r  r   r   r   r   r   r  r  r  r  r  r  r  r  r#  r)  r0  r6  r>  r  r  rJ  rO  rX  rg  r   r  r  s   @r   r  r  x  sq    C
,G))	,	,46,G	,4&
,4*,G-0	-;@( (r   r  c                      ^  \ rS rSrU 4S jrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rSrU =r$ )TestExport_P384i  c                 \   > [         [        U ]
  " U0 UD6  [        5       u  U l        U l        g r   )r   r  r   ra   r   r   r   s      r   r   TestExport_P384.__init__  r   r   c                    [        S5      nU R                  R                  S5      nU R                  X5        U R                  R	                  SS9nU R                  X5        U R                  R	                  SSS9nU R                  X5        g )Nrw  Fr  r  r  r  r  s      r   r  3TestExport_P384.test_export_public_der_uncompressed  r  r   c                     [        S5      n[        R                  " U5      nUR                  SSS9n[        S5      nU R	                  X45        g )Nrw  r  Tr  r}  r  r  s        r   r  1TestExport_P384.test_export_public_der_compressed  r  r   c                     [        S5      n[        U5      nU R                  R                  SS9nU R	                  X#5        g )Nrw  r  r  r  r  s       r   r  4TestExport_P384.test_export_public_sec1_uncompressed  r  r   c                     [        S5      nU R                  R                  SSS9n[        S5      n[        U5      nU R	                  XB5        g )Nrw  r  Tr  r}  r  r  s        r   r  2TestExport_P384.test_export_public_sec1_compressed  r  r   c                     [        S5      nU R                  R                  5       nU R                  X5        U R                  R	                  SSS9nU R                  X5        g )Nr  r  Fr  r  r  s      r   r  /TestExport_P384.test_export_rfc5915_private_der  r  r   c                     [        S5      nU R                  R                  5       nU R                  X5        U R                  R	                  SS9nU R                  X5        g )Nr  r  r  r  r  s      r   r  /TestExport_P384.test_export_private_pkcs8_clear  r  r   c                 (   U R                   R                  SSS9nU R                  [        [        R
                  US 5        [        R
                  " US5      nU R                  U R                   U5        U R                   R                  SSSS9n[        R                  " US5      nU R                  U R                   U5        U R                   R                  SSSSS0S	9n[        R                  " US5      nU R                  U R                   U5        g 
Nr   r	  r
  r  r  z"PBKDF2WithHMAC-SHA384AndAES128-CBCr  r  r  r  r  s      r   r  3TestExport_P384.test_export_private_pkcs8_encrypted     ""00H7Y 1 [ 	*c&7&7$G##GX6))73 ""--U4<4V . X ..(3))73 ""--U4<4X6G5L . N ..(3))73r   c                 :   [        SS5      R                  5       nU R                  R                  S5      nU R	                  X5        U R
                  R                  SS9nU R	                  X5        U R
                  R                  SSS9nU R	                  X5        g )Nr  r  Fr  r  r  r  r  s      r   r  3TestExport_P384.test_export_public_pem_uncompressed  r   r   c                     [        SS5      R                  5       n[        R                  " U5      nUR	                  SSS9n[        SS5      R                  5       nU R                  X45        g )Nr  r  r  Tr  zecc_p384_public_compressed.pemr"  r  s        r   r#  1TestExport_P384.test_export_public_pem_compressed   r%  r   c                     [        SS5      R                  5       nU R                  R                  S 5      nU R	                  X5        U R                  R                  SSS9nU R	                  X5        g )Nr  r  r  Fr  r'  r  s      r   r)  -TestExport_P384.test_export_private_pem_clear	  r+  r   c                    U R                   R                  SS9nU R                  [        [        R
                  U5        SU;   d   e[        R
                  " US5      nU R                  U R                   U5        U R                   R                  SSSS9n[        R
                  " US5      nU R                  U R                   U5        g r-  r/  r  s      r   r0  1TestExport_P384.test_export_private_pem_encrypted  r2  r   c                     [        SS5      R                  5       nU R                  R                  5       nU R	                  X5        U R                  R                  SS9nU R	                  X5        g )Nr  r  r  r  r4  r  s      r   r6  3TestExport_P384.test_export_private_pkcs8_and_pem_1'  r8  r   c                    U R                   R                  SSS9nU R                  [        [        R
                  U5        SU;   d   e[        R
                  " US5      nU R                  U R                   U5        U R                   R                  SSSS9n[        R
                  " US5      nU R                  U R                   U5        g r:  r<  r  s      r   r>  3TestExport_P384.test_export_private_pkcs8_and_pem_23  r@  r   c                    [        SS5      nU R                  R                  S5      nU R                  X5        U R                  R	                  SS9nU R                  X5        U R                  R	                  SSS9nU R                  X5        g )Nr  r  Fr  r  r  r  r  s      r   r  0TestExport_P384.test_export_openssh_uncompressedH  r  r   c                     [        SS5      n[        R                  " U5      nUR                  SSS9n[	        U5      [	        U5      :  d   eU R                  U[        R                  " U5      5        g )Nr  r  r  Tr  r  r  s       r   r  .TestExport_P384.test_export_openssh_compressedV  r  r   c                 h   U R                   R                  SSS[        5       S9nU R                   R                  SSS[        5       S9nU R                  X5        U R                   R                  SSS[        5       S9nU R                   R                  SSS[        5       S9nU R                  X5        g rB  rF  rG  s      r   rJ  TestExport_P384.test_prng^  rL  r   c                     U R                   R                  SSS[        5       S9nU R                   R                  SSS[        5       S9nU R                  X5        g rN  rF  rG  s      r   rO  .TestExport_P384.test_byte_or_string_passphrasev  rQ  r   c           	         U R                  [        U R                  R                  SS9  U R                  R                  SSSS9  U R                  [        U R                  R                  SSS9  U R                  [        U R                  R                  SSSS	S
9  U R                  [        U R                  R                  SSS9  U R                  [        U R                  R                  SSSS9  U R                  [        U R                  R                  SSS	S9  U R                  [        U R                  R                  SSS9  g r  rW  r   s    r   rX  "TestExport_P384.test_error_params1  r  r   c                 4   SnSn[         R                  " U5      n[        UR                  R                  S-  5      nU R                  US5        [         R                  " U5      n[        UR                  R                  S-  5      nU R                  US5        g )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]  ra  s         r   rg  %TestExport_P384.test_compressed_curve  s|    
   ~~d#DKKMME)*'~~d#DKKMME)*'r   r  r  r  s   @r   r  r    sp    C
,G))	,	,46,G	,4&
,4*,G-0	-;>( (r   r  c                      ^  \ rS rSrU 4S jrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rSrU =r$ )TestExport_P521i  c                 \   > [         [        U ]
  " U0 UD6  [        5       u  U l        U l        g r   )r   r  r   rf   r   r   r   s      r   r   TestExport_P521.__init__  r   r   c                    [        S5      nU R                  R                  S5      nU R                  X5        U R                  R	                  SS9nU R                  X5        U R                  R	                  SSS9nU R                  X5        g )Nr  Fr  r  r  r  r  s      r   r  3TestExport_P521.test_export_public_der_uncompressed  r  r   c                     [        S5      n[        R                  " U5      nUR                  SSS9n[        S5      nU R	                  X45        g )Nr  r  Tr  r  r  r  s        r   r  1TestExport_P521.test_export_public_der_compressed  r  r   c                     [        S5      n[        U5      nU R                  R                  SS9nU R	                  X#5        U R                  R                  SS9nU R	                  X#5        g )Nr  r  r  rawr  r  s       r   r  4TestExport_P521.test_export_public_sec1_uncompressed  sa    23+H5//,,F,;(//,,E,:(r   c                     [        S5      nU R                  R                  SSS9n[        S5      n[        U5      nU R	                  XB5        U R                  R                  SSS9nU R	                  XB5        g )Nr  r  Tr  r  r  r  r  s        r   r  2TestExport_P521.test_export_public_sec1_compressed  sr    23//,,FT,J"+,L"M+,CD(//,,ED,I(r   c                     [        S5      nU R                  R                  5       nU R                  X5        U R                  R	                  SSS9nU R                  X5        g )Nr  r  Fr  r  r  s      r   r  /TestExport_P521.test_export_rfc5915_private_der  r  r   c                     [        S5      nU R                  R                  5       nU R                  X5        U R                  R	                  SS9nU R                  X5        g )Nr  r  r  r  r  s      r   r  /TestExport_P521.test_export_private_pkcs8_clear  r  r   c                 (   U R                   R                  SSS9nU R                  [        [        R
                  US 5        [        R
                  " US5      nU R                  U R                   U5        U R                   R                  SSSS9n[        R                  " US5      nU R                  U R                   U5        U R                   R                  SSSSS0S9n[        R                  " US5      nU R                  U R                   U5        g )	Nr   r	  r
  r  r  r  r  r  r  r  s      r   r  3TestExport_P521.test_export_private_pkcs8_encrypted  s   ""00H7Y 1 [ 	*c&7&7$G##GX6))73 ""--U4<4V . X ..(3))73 ""--U4<4V6G5L . N ..(3))73r   c                 :   [        SS5      R                  5       nU R                  R                  S5      nU R	                  X5        U R
                  R                  SS9nU R	                  X5        U R
                  R                  SSS9nU R	                  X5        g )Nr  r  Fr  r  r  r  r  s      r   r  3TestExport_P521.test_export_public_pem_uncompressed  r   r   c                     [        SS5      R                  5       n[        R                  " U5      nUR	                  SSS9n[        SS5      R                  5       nU R                  X45        g )Nr  r  r  Tr  zecc_p521_public_compressed.pemr"  r  s        r   r#  1TestExport_P521.test_export_public_pem_compressed+  r%  r   c                     [        SS5      R                  5       nU R                  R                  S 5      nU R	                  X5        U R                  R                  SSS9nU R	                  X5        g )Nr  r  r  Fr  r'  r  s      r   r)  -TestExport_P521.test_export_private_pem_clear4  r+  r   c                    U R                   R                  SS9nU R                  [        [        R
                  U5        SU;   d   e[        R
                  " US5      nU R                  U R                   U5        U R                   R                  SSSS9n[        R
                  " US5      nU R                  U R                   U5        g r-  r/  r  s      r   r0  1TestExport_P521.test_export_private_pem_encrypted?  r2  r   c                     [        SS5      R                  5       nU R                  R                  5       nU R	                  X5        U R                  R                  SS9nU R	                  X5        g )Nr  r  r  r  r4  r  s      r   r6  3TestExport_P521.test_export_private_pkcs8_and_pem_1R  r8  r   c                    U R                   R                  SSS9nU R                  [        [        R
                  U5        SU;   d   e[        R
                  " US5      nU R                  U R                   U5        U R                   R                  SSSS9n[        R
                  " US5      nU R                  U R                   U5        g r:  r<  r  s      r   r>  3TestExport_P521.test_export_private_pkcs8_and_pem_2^  r@  r   c                    [        SS5      nU R                  R                  S5      nU R                  X5        U R                  R	                  SS9nU R                  X5        U R                  R	                  SSS9nU R                  X5        g )Nr  r  Fr  r  r  r  r  s      r   r  0TestExport_P521.test_export_openssh_uncompresseds  r  r   c                     [        SS5      n[        R                  " U5      nUR                  SSS9n[	        U5      [	        U5      :  d   eU R                  U[        R                  " U5      5        g )Nr  r  r  Tr  r  r  s       r   r  .TestExport_P521.test_export_openssh_compressed  r  r   c                 h   U R                   R                  SSS[        5       S9nU R                   R                  SSS[        5       S9nU R                  X5        U R                   R                  SSS[        5       S9nU R                   R                  SSS[        5       S9nU R                  X5        g rB  rF  rG  s      r   rJ  TestExport_P521.test_prng  rL  r   c                     U R                   R                  SSS[        5       S9nU R                   R                  SSS[        5       S9nU R                  X5        g rN  rF  rG  s      r   rO  .TestExport_P521.test_byte_or_string_passphrase  rQ  r   c           	         U R                  [        U R                  R                  SS9  U R                  R                  SSSS9  U R                  [        U R                  R                  SSS9  U R                  [        U R                  R                  SSSS	S
9  U R                  [        U R                  R                  SSS9  U R                  [        U R                  R                  SSSS9  U R                  [        U R                  R                  SSS	S9  U R                  [        U R                  R                  SSS9  g r  rW  r   s    r   rX  "TestExport_P521.test_error_params1  r  r   c                 4   SnSn[         R                  " U5      n[        UR                  R                  S-  5      nU R                  US5        [         R                  " U5      n[        UR                  R                  S-  5      nU R                  US5        g )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]  ra  s         r   rg  %TestExport_P521.test_compressed_curve  s|    
   ~~d#DKKMME)*'~~d#DKKMME)*'r   r  r  r  s   @r   r  r    sp    C
,G)	)	,	,46,G	,4&
,4*,G-0	-;>( (r   r  c                   v   ^  \ rS rSrU 4S jrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rSrU =r$ )TestImport_Ed25519i  c                 \   > [         [        U ]
  " U0 UD6  [        5       u  U l        U l        g r   )r   r   r   ro   r   r   r   s      r   r   TestImport_Ed25519.__init__  *     $0$A&A,C,E)$/r   c                 H   [        S5      n[        R                  " U5      nU R                  U R                  U5        [        R
                  " US 5      nU R                  U R                  U5        [        R                  " U5      nU R                  U R                  U5        g )Necc_ed25519_public.derr   r   s      r   r   )TestImport_Ed25519.test_import_public_der  sw    56..x8#.ooh-#.nnX&#.r   c                     [        S5      n[        R                  " US 5      nU R                  U R                  U5        [        R
                  " U5      nU R                  U R                  U5        g )Necc_ed25519_private.derr   r   s      r   test_import_pkcs8_der(TestImport_Ed25519.test_import_pkcs8_der  sW    67ooh-))3/nnX&))3/r   c                     [        S5      n[        R                  " US5      nU R                  U R                  U5        [        R
                  " US5      nU R                  U R                  U5        g )Nzecc_ed25519_private_p8.derr   r   r   s      r   r   8TestImport_Ed25519.test_import_private_pkcs8_encrypted_1	  Y    9:ooh1))3/nnXx0))3/r   c                     [        S5      n[        R                  " US5      nU R                  U R                  U5        g )Nzecc_ed25519_private_p8.pemr   r   r   s      r   r   8TestImport_Ed25519.test_import_private_pkcs8_encrypted_2	  s3    9:nnXx0))3/r   c                     [        S5      n[        R                  " US5      nU R                  U R                  U5        [        R
                  " US5      nU R                  U R                  U5        g )Nzecc_ed25519_private_p8_2.derr   r   r   s      r   r#  8TestImport_Ed25519.test_import_private_pkcs8_encrypted_3	  sY    ;<ooh1))3/nnXx0))3/r   c                     [        S5      n[        R                  " US 5      nU R                  U R                  U5        [        R
                  " U5      nU R                  U R                  U5        g )Nzecc_ed25519_x509.derr   r   s      r   r   'TestImport_Ed25519.test_import_x509_der	  sS    34ooh-#.nnX&#.r   c                 ~    [        S5      n[        R                  " U5      nU R                  U R                  U5        g )Necc_ed25519_public.pemr   r   s      r   r   )TestImport_Ed25519.test_import_public_pem&	  s/    56nnX&#.r   c                 ~    [        S5      n[        R                  " U5      nU R                  U R                  U5        g )Necc_ed25519_private.pemr   r   s      r   r   *TestImport_Ed25519.test_import_private_pem,	  s1    67nnX&))3/r   c                    S H  n[        SU-  5      n[        R                  " US5      nU R                  U R                  U5        [        R                  " [        U5      S5      nU R                  U R                  U5        M     g )Nr   r   r   r   zecc_ed25519_private_enc_%s.pemr   r   r   r   s       r   r   4TestImport_Ed25519.test_import_private_pem_encrypted2	  sl    8D !AD!HIH..84CT--s3..x)<CT--s3 9r   c                 ~    [        S5      n[        R                  " U5      nU R                  U R                  U5        g )Nzecc_ed25519_x509.pemr   r   s      r   r  'TestImport_Ed25519.test_import_x509_pem<	  /    34nnX&#.r   c                     [        S5      n[        R                  " U5      nU R                  UR	                  5       5        [        R
                  " U5      nU R                  UR	                  5       5        g )Necc_ed25519_public_openssh.txt)r3   r   ra  assertFalsehas_privater   r   s      r   rb  -TestImport_Ed25519.test_import_openssh_publicB	  sU    =>((2*+nnX&*+r   c                 F    [        S5      n[        R                  " U5      ng )Nzecc_ed25519_private_openssh.pemrW  r   s      r   rj  4TestImport_Ed25519.test_import_openssh_private_clearI	  s    >?nnX&r   c                 H    [        S5      n[        R                  " US5      ng )Nz#ecc_ed25519_private_openssh_pwd.pemrn  rW  r   s      r   ro  7TestImport_Ed25519.test_import_openssh_private_passwordM	  s    BCnnX{3r   r  )r   r   r   r   r   r   r)  r   r   r#  r   r   r   r   r  rb  rj  ro  r   r  r  s   @r   r   r     sO    F
/0000//04/,'4 4r   r   c                   p   ^  \ rS rSrU 4S jrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rSrU =r$ )TestExport_Ed25519iR	  c                 \   > [         [        U ]
  " U0 UD6  [        5       u  U l        U l        g r   )r   rJ  r   ro   r   r   r   s      r   r   TestExport_Ed25519.__init__T	  r#  r   c                    [        S5      nU R                  R                  S5      nU R                  X5        U R                  R	                  SS9nU R                  X5        U R                  R	                  SSS9nU R                  X5        g )Nr%  Tr  r  Fr  r  r  s      r   test_export_public_der)TestExport_Ed25519.test_export_public_derX	  s{    56//>>tD+//,,E,:+//,,EE,J+r   c                 V    U R                  [        U R                  R                  SS9  g Nr  r  r   r   r   r  r   s    r   test_export_public_sec1*TestExport_Ed25519.test_export_public_sec1d	  !    *doo&@&@Pr   c                    [        S5      nU R                  R                  5       nU R                  X5        U R                  R	                  SS9nU R                  X5        U R                  [        U R                  R                  SSS9  g )Nr(  r  r  Fr  r3   r   r  r   r  r   r   r  s      r   r  2TestExport_Ed25519.test_export_private_pkcs8_clearg	  s    67""002+ ""--U-;+*d&6&6&A&A!&% 	 	9r   c                 (   U R                   R                  SSS9nU R                  [        [        R
                  US 5        [        R
                  " US5      nU R                  U R                   U5        U R                   R                  SSSS9n[        R                  " US5      nU R                  U R                   U5        U R                   R                  SSSSS0S	9n[        R                  " US5      nU R                  U R                   U5        g )
Nr   r	  r
  r  r  z"PBKDF2WithHMAC-SHA256AndAES128-CBCr  r  r  r  r  s      r   r  6TestExport_Ed25519.test_export_private_pkcs8_encryptedu	  r  r   c                     [        SS5      R                  5       nU R                  R                  SS9R                  5       nU R	                  X5        g )Nr5  r  r  r  r3   r  r   r  r   r   key_file_refr   s      r   test_export_public_pem)TestExport_Ed25519.test_export_public_pem	  sF     !94@FFH??--U-;AAC0r   c                     [        SS5      R                  5       nU R                  R                  SS9R                  5       nU R	                  X5        g )Nr8  r  r  r  r3   r  r   r  r   r  s      r   r)  0TestExport_Ed25519.test_export_private_pem_clear	  sH    6=CCE""--U-;AAC+r   c                     U R                   R                  SSSS9nU R                  [        [        R
                  U5        SU;   d   e[        R
                  " US5      nU R                  U R                   U5        g Nr  r   r	  r  r;  r   r   r  r   r   r   r   r   r  s      r   r0  4TestExport_Ed25519.test_export_private_pem_encrypted	  r    ""--U9B:\ . ^
 	*cnng>&'111..(3))73r   c                 J   [        SS5      n[        R                  " U5      nSR                  UR	                  S5      S S 5      nUR                  S5      nU R                  XR                  5       5        UR                  SS9nU R                  XR                  5       5        g )NrA  r  r5   r   Fr  r  )	r3   r   r   r&   splitr  r   r  r  )r   r   rl   r  s       r   test_export_openssh&TestExport_Ed25519.test_export_openssh	  s    =tD^^H-
88HNN3/34,,U3==?3''y'9==?3r   c                 l    U R                   R                  SS9nU R                  U[        S5      5        g )Nr  r  s@   bc85b8cf585d20a4de47e84d1cb6183f63d9ba96223fcbc886e363ffdea20cffr   r  r   r   r   r  s     r   test_export_raw"TestExport_Ed25519.test_export_raw	  s/    //,,E,:),o"pqr   c                     U R                   R                  SSS[        5       S9nU R                   R                  SSS[        5       S9nU R                  X5        g Nr  r   r	  rC  rF  rG  s      r   rJ  TestExport_Ed25519.test_prng	  h    ##..e5=5W3A3C / E ##..e5=5W3A3C / E 	,r   c                     U R                   R                  SSS[        5       S9nU R                   R                  SSS[        5       S9nU R                  X5        g Nr  r   r	  rC  r   rF  rG  s      r   rO  1TestExport_Ed25519.test_byte_or_string_passphrase	  h    ##..e5=5W3A3C / E ##..e5>5W3A3C / E 	,r   c                    U R                  [        U R                  R                  SS9  U R                  [        U R                  R                  SSS9  U R                  [        U R                  R                  SSSS9  U R                  [        U R                  R                  SSS	S
9  U R                  [        U R                  R                  SSS9  g NrT  r  r  r   rU  r6   Fr.  r	  r  r  r   r   r   r  r   s    r   rX  %TestExport_Ed25519.test_error_params1	      *d&6&6&A&A%P 	*d&6&6&A&A%19 	 	; 	*d&6&6&A&A%13u 	 	F*d&6&6&A&A%131S 	 	U
 	*d&6&6&A&A)19 	 	;r   r  r   r   r   r   r   rN  rS  r  r  r_  r)  r0  rk  rp  rJ  rO  rX  r   r  r  s   @r   rJ  rJ  R	  sL    F
,Q9461
,
4	4r
-	-; ;r   rJ  c                   d   ^  \ rS rSrU 4S jrS rS rS rS rS r	S r
S	 rS
 rS rS rSrU =r$ )TestImport_Ed448i	  c                 \   > [         [        U ]
  " U0 UD6  [        5       u  U l        U l        g r   )r   r  r   rs   r   r   r   s      r   r   TestImport_Ed448.__init__	  *    .??,A,C)$/r   c                 H   [        S5      n[        R                  " U5      nU R                  U R                  U5        [        R
                  " US 5      nU R                  U R                  U5        [        R                  " U5      nU R                  U R                  U5        g )Necc_ed448_public.derr   r   s      r   r   'TestImport_Ed448.test_import_public_der	  sw    34..x8#.ooh-#.nnX&#.r   c                     [        S5      n[        R                  " US 5      nU R                  U R                  U5        [        R
                  " U5      nU R                  U R                  U5        g )Necc_ed448_private.derr   r   s      r   r)  &TestImport_Ed448.test_import_pkcs8_der	  sW    45ooh-))3/nnX&))3/r   c                     [        S5      n[        R                  " US5      nU R                  U R                  U5        [        R
                  " US5      nU R                  U R                  U5        g )Nzecc_ed448_private_p8.derr   r   r   s      r   r   6TestImport_Ed448.test_import_private_pkcs8_encrypted_1	  sY    78ooh1))3/nnXx0))3/r   c                     [        S5      n[        R                  " US5      nU R                  U R                  U5        g )Nzecc_ed448_private_p8.pemr   r   r   s      r   r   6TestImport_Ed448.test_import_private_pkcs8_encrypted_2
  s3    78nnXx0))3/r   c                     [        S5      n[        R                  " US5      nU R                  U R                  U5        [        R
                  " US5      nU R                  U R                  U5        g )Nzecc_ed448_private_p8_2.derr   r   r   s      r   r#  6TestImport_Ed448.test_import_private_pkcs8_encrypted_3
  r-  r   c                     [        S5      n[        R                  " US 5      nU R                  U R                  U5        [        R
                  " U5      nU R                  U R                  U5        g )Nzecc_ed448_x509.derr   r   s      r   r   %TestImport_Ed448.test_import_x509_der
  sS    12ooh-#.nnX&#.r   c                 ~    [        S5      n[        R                  " U5      nU R                  U R                  U5        g )Necc_ed448_public.pemr   r   s      r   r   'TestImport_Ed448.test_import_public_pem
  r?  r   c                 ~    [        S5      n[        R                  " U5      nU R                  U R                  U5        g )Necc_ed448_private.pemr   r   s      r   r   (TestImport_Ed448.test_import_private_pem#
  s1    45nnX&))3/r   c                    S H  n[        SU-  5      n[        R                  " US5      nU R                  U R                  U5        [        R                  " [        U5      S5      nU R                  U R                  U5        M     g )Nr;  zecc_ed448_private_enc_%s.pemr   r   r   r   s       r   r   2TestImport_Ed448.test_import_private_pem_encrypted)
  sl    8D !?$!FGH..84CT--s3..x)<CT--s3 9r   c                 ~    [        S5      n[        R                  " U5      nU R                  U R                  U5        g )Nzecc_ed448_x509.pemr   r   s      r   r  %TestImport_Ed448.test_import_x509_pem3
  s/    12nnX&#.r   r  )r   r   r   r   r   r   r)  r   r   r#  r   r   r   r   r  r   r  r  s   @r   r  r  	  s@    D
/0000//04/ /r   r  c                   p   ^  \ rS rSrU 4S jrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rSrU =r$ )TestExport_Ed448i:
  c                 \   > [         [        U ]
  " U0 UD6  [        5       u  U l        U l        g r   )r   r  r   rs   r   r   r   s      r   r   TestExport_Ed448.__init__<
  r  r   c                    [        S5      nU R                  R                  S5      nU R                  X5        U R                  R	                  SS9nU R                  X5        U R                  R	                  SSS9nU R                  X5        g )Nr  Tr  r  Fr  r  r  s      r   rN  'TestExport_Ed448.test_export_public_der@
  s{    34//>>tD+//,,E,:+//,,EE,J+r   c                 V    U R                  [        U R                  R                  SS9  g rQ  rR  r   s    r   rS  (TestExport_Ed448.test_export_public_sec1L
  rU  r   c                    [        S5      nU R                  R                  5       nU R                  X5        U R                  R	                  SS9nU R                  X5        U R                  [        U R                  R                  SSS9  g )Nr  r  r  Fr  rW  r  s      r   r  0TestExport_Ed448.test_export_private_pkcs8_clearO
  s    45""002+ ""--U-;+*d&6&6&A&A!&% 	 	9r   c                 (   U R                   R                  SSS9nU R                  [        [        R
                  US 5        [        R
                  " US5      nU R                  U R                   U5        U R                   R                  SSSS9n[        R                  " US5      nU R                  U R                   U5        U R                   R                  SSSSS0S	9n[        R                  " US5      nU R                  U R                   U5        g r  r  r  s      r   r  4TestExport_Ed448.test_export_private_pkcs8_encrypted]
  r  r   c                     [        SS5      R                  5       nU R                  R                  SS9R                  5       nU R	                  X5        g )Nr  r  r  r  r\  r]  s      r   r_  'TestExport_Ed448.test_export_public_pemy
  sF     !7>DDF??--U-;AAC0r   c                     [        SS5      R                  5       nU R                  R                  SS9R                  5       nU R	                  X5        g )Nr  r  r  r  rb  r  s      r   r)  .TestExport_Ed448.test_export_private_pem_clear~
  sH    4d;AAC""--U-;AAC+r   c                     U R                   R                  SSSS9nU R                  [        [        R
                  U5        SU;   d   e[        R
                  " US5      nU R                  U R                   U5        g re  rf  r  s      r   r0  2TestExport_Ed448.test_export_private_pem_encrypted
  rh  r   c                 V    U R                  [        U R                  R                  SS9  g )Nr  r  rR  r   s    r   rk  $TestExport_Ed448.test_export_openssh
  s!    *doo&@&@Sr   c                 l    U R                   R                  SS9nU R                  U[        S5      5        g )Nr  r  sr   899014ddc0a0e1260cfc1085afdf952019e9fd63372e3e366e26dad32b176624884330a14617237e3081febd9d1a15069e7499433d2f55dd80rn  ro  s     r   rp   TestExport_Ed448.test_export_raw
  s8    //,,E,:)  -b  #c  	dr   c                     U R                   R                  SSS[        5       S9nU R                   R                  SSS[        5       S9nU R                  X5        g rs  rF  rG  s      r   rJ  TestExport_Ed448.test_prng
  ru  r   c                     U R                   R                  SSS[        5       S9nU R                   R                  SSS[        5       S9nU R                  X5        g rw  rF  rG  s      r   rO  /TestExport_Ed448.test_byte_or_string_passphrase
  ry  r   c                    U R                  [        U R                  R                  SS9  U R                  [        U R                  R                  SSS9  U R                  [        U R                  R                  SSSS9  U R                  [        U R                  R                  SSS	S
9  U R                  [        U R                  R                  SSS9  g r{  r|  r   s    r   rX  #TestExport_Ed448.test_error_params1
  r~  r   r  r  r  s   @r   r  r  :
  sM    D
,Q9481
,
4Td
-	-; ;r   r  c                 J   / nU[        [        5      -  n U[        [        5      -  nU[        [        5      -  nU[        [        5      -  nU[        [
        5      -  nU[        [        5      -  nU[        [        5      -  nU[        [        5      -  nU[        [        5      -  nU[        [        5      -  nU[        [        5      -  nU[        [        5      -  nU[        [        5      -  nU[        [        5      -  nU[        [        5      -  nU$ ! [          a     U$ f = fr   )r   r   r   r	  r3  rs  r  r   r  r  rl  r  r  r  rJ  r  r   )configtestss     r   	get_testsr  
  s   E	_Z((E1111111111!344!1221111111111!344!122 L & Ls   C<D 
D"!D"__main__c                  >    [         R                  " [        5       5      $ r   )unittest	TestSuiter  r   r   r   <lambda>r  
  s    H&&y{3r   suite)defaultTest)rb);r    r   r)   r  binasciir   Crypto.SelfTest.st_commonr   Crypto.Util.py3compatr   r   r   Crypto.Util.asn1r   r	   Crypto.Util.numberr
   Crypto.Hashr   Crypto.PublicKeyr   Crypto.PublicKey.ECCr   r$   r   ImportErrorr   r   r3   r;   rR   rV   r[   ra   rf   ro   rs   rw   r~   TestCaser   r   r	  r3  rs  r  r  rl  r  r  r  r   rJ  r  r  r  r   r  mainr   r   r   <module>r     s  > 
     5 @ @ 6 ,     4#$!
	 	4C

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