
    <f                       d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZ d dlmZmZ d dlmZ d dlmZ d dlmZ 	 d dlZd	Zn# e$ r d
ZY nw xY w G d de          Zd<dZd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$ G d dej%                  Z& G d dej%                  Z' G d dej%                  Z( G d d ej%                  Z) G d! d"ej%                  Z* G d# d$ej%                  Z+ G d% d&ej%                  Z, G d' d(ej%                  Z- G d) d*ej%                  Z. G d+ d,ej%                  Z/ G d- d.ej%                  Z0 G d/ d0ej%                  Z1 G d1 d2ej%                  Z2 G d3 d4ej%                  Z3 G d5 d6ej%                  Z4i fd7Z5e6d8k    rd9 Z7 ej8        d:;           dS dS )=    N)	unhexlify)list_test_cases)bordtostrFileNotFoundError)DerSequenceDerBitString)bytes_to_long)SHAKE128)ECCTFc                       e Zd ZdS )MissingTestVectorExceptionN)__name__
__module____qualname__     x/home/panchajanya/Development/work/volatility3/lib/python3.11/site-packages/Crypto/SelfTest/PublicKey/test_import_ECC.pyr   r   4   s        Dr   r   rbc                 B   d }	 t           s7t          t          j        t	          j        t          j                  |           d}t          j                            t          j	                  }t          j        
                    t	          j        j
        |g|R  |           }t          ||          5 }|                                }d d d            n# 1 swxY w Y   n,# t          $ r t          j        dt          d           Y nw xY w|t!          d| z            |S )N)	PublicKeyr   z(Warning: 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_filer0   8   s[   G$% 	/#EL$&K$=$=$-/ / / )	7??#<#EFFbgl8&Hi&H&H&H)TT.$'' 	%7llnnG	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%  $ $ $@!!"	$ 	$ 	$ 	$ 	$ 	$$
 (	)ABBBNs6   B.C 2CC CC CC &DDc                     d                     |           }t          t          |                              dd                              dd                    S )Nr     :)r#   r   r   replace)linesexts     r   compactr8   R   sE    
((5//CU3ZZ''R0088bAABBBr   c                     d} t          d                                          }t          t          |dd                             }t          |dd                   }t	          |d                   dk    sJ t          |d| dz                      }t          || dz   d                    }t          j        d	|
          t          j        d	||          fS )N   zecc_p192.txtr         	   r      zP-192curvedr@   point_xpoint_yr0   
splitlinesr
   r8   r   r   	constructkey_len	key_linesprivate_key_dpublic_key_xypublic_key_xpublic_key_ys         r   create_ref_keys_p192rO   W       G.))4466I!')AaC."9"9::MIacN++Ma !!Q&&&& q{!;<<L wqyzz!:;;LM=999M|TTTV Vr   c                     d} t          d                                          }t          t          |dd                             }t          |dd                   }t	          |d                   dk    sJ t          |d| dz                      }t          || dz   d                    }t          j        d	|
          t          j        d	||          fS )N   zecc_p224.txtr   r;   r<   r=   r   r>   zP-224r?   rB   rE   rH   s         r   create_ref_keys_p224rS   d   rP   r   c                     d} t          d                                          }t          t          |dd                             }t          |dd                   }t	          |d                   dk    sJ t          |d	| d	z                      }t          || d	z   d                    }t          j        d
|          t          j        d
||          fS )N    zecc_p256.txtr   r<         r   r;   r>   zP-256r?   rB   rE   rH   s         r   create_ref_keys_p256rX   q       G.))4466I!')AaC."9"9::MIadO,,Ma !!Q&&&& q{!;<<L wqyzz!:;;LM=999M|TTTV Vr   c                     d} t          d                                          }t          t          |dd                             }t          |dd                   }t	          |d                   dk    sJ t          |d	| d	z                      }t          || d	z   d                    }t          j        d
|          t          j        d
||          fS )N0   zecc_p384.txtr   rV         r   r;   r>   zP-384r?   rB   rE   rH   s         r   create_ref_keys_p384r^   ~   rY   r   c                     d} t          d                                          }t          t          |dd                             }t          |dd                   }t	          |d                   dk    sJ t          |d	| d	z                      }t          || d	z   d                    }t          j        d
|          t          j        d
||          fS )NB   zecc_p521.txtr   r\         r   r;   r>   zP-521r?   rB   rE   rH   s         r   create_ref_keys_p521rc      rY   r   c                      t          d                                          } t          | dd                   }t          j        d|          }||                                fS )Nzecc_ed25519.txtr<   ra   Ed25519r@   seedr0   rF   r8   r   rG   
public_keyrJ   rg   keys      r   create_ref_keys_ed25519rl      sZ    +,,7799I9QqS>""D
-id
3
3
3C!!""r   c                      t          d                                          } t          | dd                   }t          j        d|          }||                                fS )Nzecc_ed448.txtrV   
   Ed448rf   rh   rj   s      r   create_ref_keys_ed448rp      sY    /**5577I9QrT?##D
-gD
1
1
1C!!""r   c                  X    t          j                                        d          j        S )Ns   SEED)r   newupdater%   r   r   r   get_fixed_prngrt      s    <>>  ))..r   c                     t                      }|                    |            t                      }|                    |d                    |j        S )Nr>   )r   decoder	   value)dataseqbss      r   extract_bitstring_from_spkir{      sC    mm

4^^
		#a&xr   c                       e Zd Zd Zd ZdS )
TestImportc                 R    |                      t          t          j        d           d S )Nr   assertRaises
ValueErrorr   
import_keyselfs    r   
test_emptyzTestImport.test_empty   s"    *cnc:::::r   c                 V    d}|                      t          t          j        |           d S )Na1  -----BEGIN PRIVATE KEY-----
MIG2AgEAMBAGByqGSM49AgEGBSuBBAAiBIGeMIGbAgEBBDAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJChZANiAAQarFRaqflo
I+d61SRvU8Za2EurxtW20eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinng
o4N+LZfQYcTxmdwlkWOrfzCjtHDix6EznPO/LlxTsV+zfTJ/ijTjeXk=
-----END PRIVATE KEY-----r   )r   mismatchs     r   test_mismatchzTestImport.test_mismatch   s+     	*cnh?????r   N)r   r   r   r   r   r   r   r   r}   r}      s7        ; ; ;@ @ @ @ @r   r}   c                   l     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Z xZS )TestImport_P192c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S N)superr   __init__rO   ref_private
ref_publicr   argskwargs	__class__s      r   r   zTestImport_P192.__init__   >    -ot$$-t>v>>>,@,B,B)$///r   c                 @   t          d          }t          j        |          }|                     | j        |           t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p192_public.derr0   r   _import_subjectPublicKeyInfoassertEqualr   _import_derr   r   key_filerk   s      r   test_import_public_derz&TestImport_P192.test_import_public_der       233.x88#...oh--#...nX&&#.....r   c                     t          d          }t          |          }t          j        |d          }|                     | j        |           d S )Nr   P192
curve_namer0   r{   r   r   r   r   r   r   rw   rk   s       r   test_import_sec1_uncompressedz-TestImport_P192.test_import_sec1_uncompressed   O    233+H55nX&999#.....r   c                     t          d          }t          |          }t          j        |d          }|                     | j        |           d S )Necc_p192_public_compressed.derr   r   r   r   s       r   test_import_sec1_compressedz+TestImport_P192.test_import_sec1_compressed   O    =>>+H55nX&999#.....r   c                 B   t          d          }t          j        |d           }|                     | j        |           t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p192_private.derr0   r   _import_rfc5915_derr   r   r   r   r   s      r   test_import_rfc5915_derz'TestImport_P192.test_import_rfc5915_der       344%h55)3///oh--)3///nX&&)3/////r   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p192_private_p8_clear.derr0   r   r   r   r   r   r   s      r   test_import_private_pkcs8_clearz/TestImport_P192.test_import_private_pkcs8_clear   h    <==oh--)3///nX&&)3/////r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_p192_private_p8_clear.pemr0   r   r   r   r   r   s      r   &test_import_private_pkcs8_in_pem_clearz6TestImport_P192.test_import_private_pkcs8_in_pem_clear   >    <==nX&&)3/////r   c                     t          d          }t          j        |d          }|                     | j        |           t          j        |d          }|                     | j        |           d S )Nzecc_p192_private_p8.dersecretr   r   s      r   %test_import_private_pkcs8_encrypted_1z5TestImport_P192.test_import_private_pkcs8_encrypted_1   j    677oh11)3///nXx00)3/////r   c                     t          d          }t          j        |d          }|                     | j        |           d S )Nzecc_p192_private_p8.pemr   r   r   s      r   %test_import_private_pkcs8_encrypted_2z5TestImport_P192.test_import_private_pkcs8_encrypted_2  @    677nXx00)3/////r   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Nzecc_p192_x509.derr0   r   r   r   r   r   r   s      r   test_import_x509_derz$TestImport_P192.test_import_x509_der  f    011oh--#...nX&&#.....r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_p192_public.pemr0   r   r   r   r   r   s      r   test_import_public_pemz&TestImport_P192.test_import_public_pem  =    233nX&&#.....r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_p192_private.pemr   r   s      r   test_import_private_pemz'TestImport_P192.test_import_private_pem  >    344nX&&)3/////r   c                    dD ]}t          d|z            }t          j        |d          }|                     | j        |           t          j        t          |          d          }|                     | j        |           d S )Ndes3aes128aes192aes256
aes256_gcmzecc_p192_private_enc_%s.pemr      secretr0   r   r   r   r   r   r   algor   rk   s       r   !test_import_private_pem_encryptedz1TestImport_P192.test_import_private_pem_encrypted"      F 	4 	4D !>!EFFH.844CT-s333.x)<<CT-s3333	4 	4r   c                     t          d          }t          j        |          }|                     | j        |           d S )Nzecc_p192_x509.pemr   r   s      r   test_import_x509_pemz$TestImport_P192.test_import_x509_pem,  =    011nX&&#.....r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__r   s   @r   r   r      s        C C C C C
/ 
/ 
// / // / /
0 
0 
00 0 00 0 00 0 00 0 0/ / // / /0 0 04 4 4/ / / / / / /r   r   c                   r     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Z xZS )TestImport_P224c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S r   )r   r   r   rS   r   r   r   s      r   r   zTestImport_P224.__init__5  r   r   c                 @   t          d          }t          j        |          }|                     | j        |           t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p224_public.derr   r   s      r   r   z&TestImport_P224.test_import_public_der9  r   r   c                     t          d          }t          |          }t          j        |d          }|                     | j        |           d S )Nr   P224r   r   r   s       r   r   z-TestImport_P224.test_import_sec1_uncompressedE  r   r   c                     t          d          }t          |          }t          j        |d          }|                     | j        |           d S )Necc_p224_public_compressed.derr   r   r   r   s       r   r   z+TestImport_P224.test_import_sec1_compressedK  r   r   c                 B   t          d          }t          j        |d           }|                     | j        |           t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p224_private.derr   r   s      r   r   z'TestImport_P224.test_import_rfc5915_derQ  r   r   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p224_private_p8_clear.derr   r   s      r   r   z/TestImport_P224.test_import_private_pkcs8_clear]  r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_p224_private_p8_clear.pemr   r   s      r   r   z6TestImport_P224.test_import_private_pkcs8_in_pem_clearf  r   r   c                     t          d          }t          j        |d          }|                     | j        |           t          j        |d          }|                     | j        |           d S )Nzecc_p224_private_p8.derr   r   r   s      r   r   z5TestImport_P224.test_import_private_pkcs8_encrypted_1l  r   r   c                     t          d          }t          j        |d          }|                     | j        |           d S )Nzecc_p224_private_p8.pemr   r   r   s      r   r   z5TestImport_P224.test_import_private_pkcs8_encrypted_2u  r   r   c                     t          d          }t          j        |d          }|                     | j        |           t          j        |d          }|                     | j        |           d S )Nzecc_p224_private_p8_2.derr   r   r   s      r   %test_import_private_pkcs8_encrypted_3z5TestImport_P224.test_import_private_pkcs8_encrypted_3{  j    899oh11)3///nXx00)3/////r   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Nzecc_p224_x509.derr   r   s      r   r   z$TestImport_P224.test_import_x509_der  r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_p224_public.pemr   r   s      r   r   z&TestImport_P224.test_import_public_pem  r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_p224_private.pemr   r   s      r   r   z'TestImport_P224.test_import_private_pem  r   r   c                    dD ]}t          d|z            }t          j        |d          }|                     | j        |           t          j        t          |          d          }|                     | j        |           d S )Nr   zecc_p224_private_enc_%s.pemr   r   r   r   s       r   r   z1TestImport_P224.test_import_private_pem_encrypted  r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Nzecc_p224_x509.pemr   r   s      r   r   z$TestImport_P224.test_import_x509_pem  r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s   @r   r   r   3  s       C C C C C
/ 
/ 
// / // / /
0 
0 
00 0 00 0 00 0 00 0 00 0 0/ / // / /0 0 04 4 4/ / / / / / /r   r   c                        e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )TestImport_P256c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S r   )r   r   r   rX   r   r   r   s      r   r   zTestImport_P256.__init__  r   r   c                 @   t          d          }t          j        |          }|                     | j        |           t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p256_public.derr   r   s      r   r   z&TestImport_P256.test_import_public_der  r   r   c                     t          d          }t          |          }t          j        |d          }|                     | j        |           d S )Nr  P256r   r   r   s       r   r   z-TestImport_P256.test_import_sec1_uncompressed  r   r   c                     t          d          }t          |          }t          j        |d          }|                     | j        |           d S )Necc_p256_public_compressed.derr  r   r   r   s       r   r   z+TestImport_P256.test_import_sec1_compressed  r   r   c                 B   t          d          }t          j        |d           }|                     | j        |           t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p256_private.derr   r   s      r   r   z'TestImport_P256.test_import_rfc5915_der  r   r   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p256_private_p8_clear.derr   r   s      r   r   z/TestImport_P256.test_import_private_pkcs8_clear  r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_p256_private_p8_clear.pemr   r   s      r   r   z6TestImport_P256.test_import_private_pkcs8_in_pem_clear  r   r   c                     t          d          }t          j        |d          }|                     | j        |           t          j        |d          }|                     | j        |           d S )Nzecc_p256_private_p8.derr   r   r   s      r   r   z5TestImport_P256.test_import_private_pkcs8_encrypted_1  r   r   c                     t          d          }t          j        |d          }|                     | j        |           d S )Nzecc_p256_private_p8.pemr   r   r   s      r   r   z5TestImport_P256.test_import_private_pkcs8_encrypted_2  r   r   c                     t          d          }t          j        |d          }|                     | j        |           t          j        |d          }|                     | j        |           d S )Nzecc_p256_private_p8_2.derr   r   r   s      r   r   z5TestImport_P256.test_import_private_pkcs8_encrypted_3  r   r   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Nzecc_p256_x509.derr   r   s      r   r   z$TestImport_P256.test_import_x509_der  r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_p256_public.pemr   r   s      r   r   z&TestImport_P256.test_import_public_pem  r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_p256_private.pemr   r   s      r   r   z'TestImport_P256.test_import_private_pem
  r   r   c                 L    t          d          }t          j        |          }d S )Nzecc_p256_private_ecparams.pemr0   r   r   r   s      r   %test_import_private_pem_with_ecparamsz5TestImport_P256.test_import_private_pem_with_ecparams  s#    <==nX&&r   c                    dD ]}t          d|z            }t          j        |d          }|                     | j        |           t          j        t          |          d          }|                     | j        |           d S )Nr   zecc_p256_private_enc_%s.pemr   r   r   r   s       r   r   z1TestImport_P256.test_import_private_pem_encrypted  r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Nzecc_p256_x509.pemr   r   s      r   r   z$TestImport_P256.test_import_x509_pem  r   r   c                     t          d          }t          j        |          }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p256_public_openssh.txtr0   r   _import_openssh_publicr   r   r   r   s      r   test_import_openssh_publicz*TestImport_P256.test_import_openssh_public%  e    :;;(22#...nX&&#.....r   c                     t          d          }t          d          }t          j        |          }t          j        |          }|                     ||           d S )Nzecc_p256_private_openssh.pemz ecc_p256_private_openssh_old.pemr0   r   r   r   r   r   key_file_oldrk   key_olds        r   !test_import_openssh_private_clearz1TestImport_P256.test_import_openssh_private_clear.  X    ;<< !CDDnX&&...g&&&&&r   c                     t          d          }t          d          }t          j        |d          }t          j        |          }|                     ||           d S )Nz ecc_p256_private_openssh_pwd.pemz$ecc_p256_private_openssh_pwd_old.pem   passwordr   r!  s        r   $test_import_openssh_private_passwordz4TestImport_P256.test_import_openssh_private_password6  Z    ?@@ !GHHnX{33...g&&&&&r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r  r$  r(  r   r   s   @r   r   r     sK       C C C C C
/ 
/ 
// / // / /
0 
0 
00 0 00 0 00 0 00 0 00 0 0/ / // / /0 0 0' ' '
4 4 4/ / // / /' ' '' ' ' ' ' ' 'r   r   c                        e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )TestImport_P384c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S r   )r   r+  r   r^   r   r   r   s      r   r   zTestImport_P384.__init__A  r   r   c                 @   t          d          }t          j        |          }|                     | j        |           t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p384_public.derr   r   s      r   r   z&TestImport_P384.test_import_public_derE  r   r   c                     t          d          }t          |          }t          j        |d          }|                     | j        |           d S )Nr.  P384r   r   r   s       r   r   z-TestImport_P384.test_import_sec1_uncompressedQ  r   r   c                     t          d          }t          |          }t          j        |d          }|                     | j        |           d S )Necc_p384_public_compressed.derr0  r   r   r   s       r   r   z+TestImport_P384.test_import_sec1_compressedW  r   r   c                 B   t          d          }t          j        |d           }|                     | j        |           t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p384_private.derr   r   s      r   r   z'TestImport_P384.test_import_rfc5915_der]  r   r   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p384_private_p8_clear.derr   r   s      r   r   z/TestImport_P384.test_import_private_pkcs8_cleari  r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_p384_private_p8_clear.pemr   r   s      r   r   z6TestImport_P384.test_import_private_pkcs8_in_pem_clearr  r   r   c                     t          d          }t          j        |d          }|                     | j        |           t          j        |d          }|                     | j        |           d S )Nzecc_p384_private_p8.derr   r   r   s      r   r   z5TestImport_P384.test_import_private_pkcs8_encrypted_1x  r   r   c                     t          d          }t          j        |d          }|                     | j        |           d S )Nzecc_p384_private_p8.pemr   r   r   s      r   r   z5TestImport_P384.test_import_private_pkcs8_encrypted_2  r   r   c                     t          d          }t          j        |d          }|                     | j        |           t          j        |d          }|                     | j        |           d S )Nzecc_p384_private_p8_2.derr   r   r   s      r   r   z5TestImport_P384.test_import_private_pkcs8_encrypted_3  r   r   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Nzecc_p384_x509.derr   r   s      r   r   z$TestImport_P384.test_import_x509_der  r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_p384_public.pemr   r   s      r   r   z&TestImport_P384.test_import_public_pem  r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_p384_private.pemr   r   s      r   r   z'TestImport_P384.test_import_private_pem  r   r   c                    dD ]}t          d|z            }t          j        |d          }|                     | j        |           t          j        t          |          d          }|                     | j        |           d S )Nr   zecc_p384_private_enc_%s.pemr   r   r   r   s       r   r   z1TestImport_P384.test_import_private_pem_encrypted  r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Nzecc_p384_x509.pemr   r   s      r   r   z$TestImport_P384.test_import_x509_pem  r   r   c                     t          d          }t          j        |          }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p384_public_openssh.txtr  r   s      r   r  z*TestImport_P384.test_import_openssh_public  r  r   c                     t          d          }t          d          }t          j        |          }t          j        |          }|                     ||           d S )Nzecc_p384_private_openssh.pemz ecc_p384_private_openssh_old.pemr   r!  s        r   r$  z1TestImport_P384.test_import_openssh_private_clear  r%  r   c                     t          d          }t          d          }t          j        |d          }t          j        |          }|                     ||           d S )Nz ecc_p384_private_openssh_pwd.pemz$ecc_p384_private_openssh_pwd_old.pemr'  r   r!  s        r   r(  z4TestImport_P384.test_import_openssh_private_password  r)  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r$  r(  r   r   s   @r   r+  r+  ?  <       C C C C C
/ 
/ 
// / // / /
0 
0 
00 0 00 0 00 0 00 0 00 0 0/ / // / /0 0 04 4 4/ / // / /' ' '' ' ' ' ' ' 'r   r+  c                        e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )TestImport_P521c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S r   )r   rJ  r   rc   r   r   r   s      r   r   zTestImport_P521.__init__  r   r   c                 @   t          d          }t          j        |          }|                     | j        |           t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p521_public.derr   r   s      r   r   z&TestImport_P521.test_import_public_der  r   r   c                     t          d          }t          |          }t          j        |d          }|                     | j        |           d S )NrM  P521r   r   r   s       r   r   z-TestImport_P521.test_import_sec1_uncompressed  r   r   c                     t          d          }t          |          }t          j        |d          }|                     | j        |           d S )Necc_p521_public_compressed.derrO  r   r   r   s       r   r   z+TestImport_P521.test_import_sec1_compressed  r   r   c                 B   t          d          }t          j        |d           }|                     | j        |           t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p521_private.derr   r   s      r   r   z'TestImport_P521.test_import_rfc5915_der  r   r   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p521_private_p8_clear.derr   r   s      r   r   z/TestImport_P521.test_import_private_pkcs8_clear  r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_p521_private_p8_clear.pemr   r   s      r   r   z6TestImport_P521.test_import_private_pkcs8_in_pem_clear  r   r   c                     t          d          }t          j        |d          }|                     | j        |           t          j        |d          }|                     | j        |           d S )Nzecc_p521_private_p8.derr   r   r   s      r   r   z5TestImport_P521.test_import_private_pkcs8_encrypted_1  r   r   c                     t          d          }t          j        |d          }|                     | j        |           d S )Nzecc_p521_private_p8.pemr   r   r   s      r   r   z5TestImport_P521.test_import_private_pkcs8_encrypted_2  r   r   c                     t          d          }t          j        |d          }|                     | j        |           t          j        |d          }|                     | j        |           d S )Nzecc_p521_private_p8_2.derr   r   r   s      r   r   z5TestImport_P521.test_import_private_pkcs8_encrypted_3  r   r   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Nzecc_p521_x509.derr   r   s      r   r   z$TestImport_P521.test_import_x509_der   r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_p521_public.pemr   r   s      r   r   z&TestImport_P521.test_import_public_pem)  r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_p521_private.pemr   r   s      r   r   z'TestImport_P521.test_import_private_pem/  r   r   c                    dD ]}t          d|z            }t          j        |d          }|                     | j        |           t          j        t          |          d          }|                     | j        |           d S )Nr   zecc_p521_private_enc_%s.pemr   r   r   r   s       r   r   z1TestImport_P521.test_import_private_pem_encrypted5  r   r   c                     t          d          }t          j        |          }|                     | j        |           d S )Nzecc_p521_x509.pemr   r   s      r   r   z$TestImport_P521.test_import_x509_pem?  r   r   c                     t          d          }t          j        |          }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_p521_public_openssh.txtr  r   s      r   r  z*TestImport_P521.test_import_openssh_publicE  r  r   c                     t          d          }t          d          }t          j        |          }t          j        |          }|                     ||           d S )Nzecc_p521_private_openssh.pemz ecc_p521_private_openssh_old.pemr   r!  s        r   r$  z1TestImport_P521.test_import_openssh_private_clearN  r%  r   c                     t          d          }t          d          }t          j        |d          }t          j        |          }|                     ||           d S )Nz ecc_p521_private_openssh_pwd.pemz$ecc_p521_private_openssh_pwd_old.pemr'  r   r!  s        r   r(  z4TestImport_P521.test_import_openssh_private_passwordV  r)  r   rG  r   s   @r   rJ  rJ    rH  r   rJ  c                        e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )TestExport_P192c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S r   )r   rg  r   rO   r   r   r   s      r   r   zTestExport_P192.__init__a  r   r   c                 J   t          d          }| j                            d          }|                     ||           | j                            d          }|                     ||           | j                            dd          }|                     ||           d S )Nr   FDERformatrl  compressr0   r   _export_subjectPublicKeyInfor   
export_keyr   r   encodeds      r   #test_export_public_der_uncompressedz3TestExport_P192.test_export_public_der_uncompressede      233/>>uEE7+++/,,E,::7+++/,,EE,JJ7+++++r   c                     t          d          }t          j        |          }|                    dd          }t          d          }|                     ||           d S )Nr   rj  Trm  r   r0   r   r   rq  r   r   r   pub_keykey_file_compressedkey_file_compressed_refs        r   !test_export_public_der_compressedz1TestExport_P192.test_export_public_der_compressedq  e    233.**%000MM"+,L"M"M,.EFFFFFr   c                     t          d          }t          |          }| j                            d          }|                     ||           d S )Nr   SEC1rk  r0   r{   r   rq  r   r   r   rw   rs  s       r   $test_export_public_sec1_uncompressedz4TestExport_P192.test_export_public_sec1_uncompressedy  Q    233+H55/,,F,;;(((((r   c                     t          d          }| j                            dd          }t          d          }t          |          }|                     ||           d S )Nr   r  Trm  r   r0   r   rq  r{   r   r   r   rs  r{  rw   s        r   "test_export_public_sec1_compressedz2TestExport_P192.test_export_public_sec1_compressed  c    233/,,FT,JJ"+,L"M"M+,CDD(((((r   c                     t          d          }| j                                        }|                     ||           | j                            dd          }|                     ||           d S )Nr   rj  Frl  	use_pkcs8r0   r   _export_rfc5915_private_derr   rq  rr  s      r   test_export_rfc5915_private_derz/TestExport_P192.test_export_rfc5915_private_der  s    344">>@@7+++ "--Ue-LL7+++++r   c                     t          d          }| j                                        }|                     ||           | j                            d          }|                     ||           d S )Nr   rj  rk  r0   r   _export_pkcs8r   rq  rr  s      r   test_export_private_pkcs8_clearz/TestExport_P192.test_export_private_pkcs8_clear  q    <=="00227+++ "--U-;;7+++++r   c                 &   | j                             dd          }|                     t          t          j        |d            t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           | j                             dddddi	          }t	          j        |d          }|                     | j         |           d S )
Nr    PBKDF2WithHMAC-SHA1AndAES128-CBC
passphrase
protectionrj  rl  r  r  z"PBKDF2WithHMAC-SHA224AndAES192-CBCiteration_count{   rl  r  r  prot_params	r   r  r   r   r   _import_pkcs8r   rq  r   r   rs  decodeds      r   #test_export_private_pkcs8_encryptedz3TestExport_P192.test_export_private_pkcs8_encrypted  s(   "00H?a 1 c c 	*c&7$GGG#GX66)7333 "--U;C;] . _ _ .(33)7333 "--U;C;_=Ns<S . U U .(33)733333r   c                 p   t          dd                                          }| j                            d          }|                     ||           | j                            d          }|                     ||           | j                            dd          }|                     ||           d S )Nr   rtFPEMrk  rm  r0   stripr   _export_public_pemr   r   rq  rr  s      r   #test_export_public_pem_uncompressedz3TestExport_P192.test_export_public_pem_uncompressed      2D99??AA"55e<<7+++ /,,E,::7+++/,,EE,JJ7+++++r   c                    t          dd                                          }t          j        |          }|                    dd          }t          dd                                          }|                     ||           d S )Nr   r  r  Trm  zecc_p192_public_compressed.pemr0   r  r   r   rq  r   rx  s        r   !test_export_public_pem_compressedz1TestExport_P192.test_export_public_pem_compressed      2D99??AA.**%000MM"+,Ld"S"S"Y"Y"["[,.EFFFFFr   c                    t          dd                                          }| j                            d           }|                     ||           | j                            dd          }|                     ||           d S )Nr   r  r  Fr  r0   r  r   _export_private_pemr   rq  rr  s      r   test_export_private_pem_clearz-TestExport_P192.test_export_private_pem_clear      3T::@@BB"66t<<7+++ "--Ue-LL7+++++r   c                    | j                             d          }|                     t          t          j        |           d|v sJ t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           d S Nr   )r  zEC PRIVATE KEYr   r  Frl  r  r  r   r  r   r   r   r   r   rq  r  s      r   !test_export_private_pem_encryptedz1TestExport_P192.test_export_private_pem_encrypted      "66)6LL 	*cng>>>7****.(33)7333 "--U4<38 . : : .(33)733333r   c                 
   t          dd                                          }| j                                        }|                     ||           | j                            d          }|                     ||           d S )Nr   r  r  rk  r0   r  r   (_export_private_clear_pkcs8_in_clear_pemr   rq  rr  s      r   #test_export_private_pkcs8_and_pem_1z3TestExport_P192.test_export_private_pkcs8_and_pem_1      <dCCIIKK"KKMM7+++ "--U-;;7+++++r   c                    | j                             dd          }|                     t          t          j        |           d|v sJ t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           d S Nr   r  )r  ENCRYPTED PRIVATE KEYr  r  r   ,_export_private_encrypted_pkcs8_in_clear_pemr   r   r   r   r   rq  r  s      r   #test_export_private_pkcs8_and_pem_2z3TestExport_P192.test_export_private_pkcs8_and_pem_2      "OOPX)K P M M 	*cng>>>&'1111.(33)7333 "--U4<4V . X X .(33)733333r   c                    | j                             dddt                                }| j                             dddt                                }|                     ||           | j                             dddt                                }| j                             dddt                                }|                     ||           d S Nr  r   r  rl  r  r  randfuncFrl  r  r  r  r   rq  rt   r   r   encoded1encoded2s      r   	test_prngzTestExport_P192.test_prng      #..e5=5W3A3C3C / E E #..e5=5W3A3C3C / E E 	8,,, #..e495=3A3C3C / E E #..e495=3A3C3C / E E 	8,,,,,r   c                     | j                             dddt                                }| j                             dddt                                }|                     ||           d S Nr  Fr   r  r   r  r  s      r   test_byte_or_string_passphrasez.TestExport_P192.test_byte_or_string_passphrase'      #..e495=3A3C3C / E E #..e495>3A3C3C / E E 	8,,,,,r   c                 &   |                      t          | j        j        d           | j                            ddd           |                      t          | j        j        dd           |                      t          | j        j        dddd	
           |                      t          | j        j        dd           |                      t          | j        j        ddd           |                      t          | j        j        ddd	           d S NXXXrk  r  r   Fr  rl  r  rj  r  rl  r  r  r  r  r3   r  r   r   r   rq  r   r   s    r   test_error_params1z"TestExport_P192.test_error_params12  M   *d&6&A%PPP 	##5X). 	$ 	0 	0 	0*d&6&A%19 	 	; 	; 	; 	*d&6&A%19051S 	 	U 	U 	U 	*do&@$) 	 	+ 	+ 	+ 	*d&6&A%13u 	 	F 	F 	F*d&6&A%131S 	 	U 	U 	U 	U 	Ur   c                 &   d}d}t          j        |          }t          |j        j        dz            }|                     |d           t          j        |          }t          |j        j        dz            }|                     |d           d S )Nz-----BEGIN EC PRIVATE KEY-----
        MF8CAQEEGHvhXmIW95JxZYfd4AUPu9BwknjuvS36aqAKBggqhkjOPQMBAaE0AzIA
        BLJZCyTu35DQIlqvMlBynn3k1Ig+dWfg/brRhHecxptrbloqFSP8ITw0CwbGF+2X
        5g==
        -----END EC PRIVATE KEY-----z-----BEGIN EC PRIVATE KEY-----
        MF8CAQEEGA3rAotUaWl7d47eX6tz9JmLzOMJwl13XaAKBggqhkjOPQMBAaE0AzIA
        BG4tHlTBBBGokcWmGm2xubVB0NvPC/Ou5AYwivs+3iCxmEjsymVAj6iiuX2Lxr6g
        /Q==
        -----END EC PRIVATE KEY-----   i  i  r   r   intpointQyr   r   pem1pem2key1low16key2s         r   test_compressed_curvez%TestExport_P192.test_compressed_curveM      (( ~d##DKME)**'''~d##DKME)**'''''r   r   r   r   r   rt  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   s   @r   rg  rg  _  sE       C C C C C
, 
, 
,G G G) ) )) ) )	, 	, 	,	, 	, 	,4 4 46, , ,G G G	, 	, 	,4 4 4&
, 
, 
,4 4 4*- - -0	- 	- 	-U U U6( ( ( ( ( ( (r   rg  c                        e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )TestExport_P224c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S r   )r   r  r   rS   r   r   r   s      r   r   zTestExport_P224.__init__h  r   r   c                 J   t          d          }| j                            d          }|                     ||           | j                            d          }|                     ||           | j                            dd          }|                     ||           d S )Nr   Frj  rk  rm  ro  rr  s      r   rt  z3TestExport_P224.test_export_public_der_uncompressedl  ru  r   c                     t          d          }t          j        |          }|                    dd          }t          d          }|                     ||           d S )Nr   rj  Trm  r   rw  rx  s        r   r|  z1TestExport_P224.test_export_public_der_compressedx  r}  r   c                     t          d          }t          |          }| j                            d          }|                     ||           d S )Nr   r  rk  r  r  s       r   r  z4TestExport_P224.test_export_public_sec1_uncompressed  r  r   c                     t          d          }| j                            dd          }t          d          }t          |          }|                     ||           d S )Nr   r  Trm  r   r  r  s        r   r  z2TestExport_P224.test_export_public_sec1_compressed  r  r   c                     t          d          }| j                                        }|                     ||           | j                            dd          }|                     ||           d S )Nr   rj  Fr  r  rr  s      r   r  z/TestExport_P224.test_export_rfc5915_private_der  r  r   c                     t          d          }| j                                        }|                     ||           | j                            d          }|                     ||           d S )Nr   rj  rk  r  rr  s      r   r  z/TestExport_P224.test_export_private_pkcs8_clear  r  r   c                    | j                             dd          }|                     t          t          j        |d            t	          j        |d          }|                     | j         |           | j                             dddddi          }t	          j        |d          }|                     | j         |           d S )	Nr   r  r  rj  z&PBKDF2WithHMAC-SHA512-224AndAES128-CBCr  r  r  r  r  s      r   r  z3TestExport_P224.test_export_private_pkcs8_encrypted  s    "00H?a 1 c c 	*c&7$GGG#GX66)7333 "--U;C;c=Ns<S . U U .(33)733333r   c                 p   t          dd                                          }| j                            d          }|                     ||           | j                            d          }|                     ||           | j                            dd          }|                     ||           d S )Nr   r  Fr  rk  rm  r  rr  s      r   r  z3TestExport_P224.test_export_public_pem_uncompressed  r  r   c                    t          dd                                          }t          j        |          }|                    dd          }t          dd                                          }|                     ||           d S )Nr   r  r  Trm  zecc_p224_public_compressed.pemr  rx  s        r   r  z1TestExport_P224.test_export_public_pem_compressed  r  r   c                    t          dd                                          }| j                            d           }|                     ||           | j                            dd          }|                     ||           d S )Nr   r  r  Fr  r  rr  s      r   r  z-TestExport_P224.test_export_private_pem_clear  r  r   c                    | j                             d          }|                     t          t          j        |           d|v sJ t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           d S r  r  r  s      r   r  z1TestExport_P224.test_export_private_pem_encrypted  r  r   c                 
   t          dd                                          }| j                                        }|                     ||           | j                            d          }|                     ||           d S )Nr   r  r  rk  r  rr  s      r   r  z3TestExport_P224.test_export_private_pkcs8_and_pem_1  r  r   c                    | j                             dd          }|                     t          t          j        |           d|v sJ t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           d S r  r  r  s      r   r  z3TestExport_P224.test_export_private_pkcs8_and_pem_2  r  r   c                    | j                             dddt                                }| j                             dddt                                }|                     ||           | j                             dddt                                }| j                             dddt                                }|                     ||           d S r  r  r  s      r   r  zTestExport_P224.test_prng  r  r   c                     | j                             dddt                                }| j                             dddt                                }|                     ||           d S r  r  r  s      r   r  z.TestExport_P224.test_byte_or_string_passphrase&  r  r   c                 &   |                      t          | j        j        d           | j                            ddd           |                      t          | j        j        dd           |                      t          | j        j        dddd	
           |                      t          | j        j        dd           |                      t          | j        j        ddd           |                      t          | j        j        ddd	           d S r  r  r   s    r   r  z"TestExport_P224.test_error_params11  r  r   c                 &   d}d}t          j        |          }t          |j        j        dz            }|                     |d           t          j        |          }t          |j        j        dz            }|                     |d           d S )Nz-----BEGIN EC PRIVATE KEY-----
        MGgCAQEEHPYicBNI9nd6wDKAX2l+f3A0Q+KWUQeMqSt5GoOgBwYFK4EEACGhPAM6
        AATCL6rUIDT14zXKoS5GQUMDP/tpc+1iI/FyEZikt2roKDkhU5q08srmqaysbfJN
        eUr7Xf1lnCVGag==
        -----END EC PRIVATE KEY-----z-----BEGIN EC PRIVATE KEY-----
        MGgCAQEEHEFjbaVPLJ3ngZyCibCvT0RLUqSlHjC5Z3e0FtugBwYFK4EEACGhPAM6
        AAT5IvL2V6m48y1JLMGr6ZbnOqNKP9hMf9mxyVkk6/SaRoBoJVkXrNIpYL0P7DS7
        QF8E/OGeZRwvow==
        -----END EC PRIVATE KEY-----r  ijF  i/  r  r  s         r   r  z%TestExport_P224.test_compressed_curveL  r  r   r  r   s   @r   r  r  f  sE       C C C C C
, 
, 
,G G G) ) )) ) )	, 	, 	,	, 	, 	,4 4 4&, , ,G G G	, 	, 	,4 4 4&
, 
, 
,4 4 4*- - -0	- 	- 	-U U U6( ( ( ( ( ( (r   r  c                        e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )TestExport_P256c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S r   )r   r  r   rX   r   r   r   s      r   r   zTestExport_P256.__init__g  r   r   c                 J   t          d          }| j                            d          }|                     ||           | j                            d          }|                     ||           | j                            dd          }|                     ||           d S )Nr  Frj  rk  rm  ro  rr  s      r   rt  z3TestExport_P256.test_export_public_der_uncompressedk  ru  r   c                     t          d          }t          j        |          }|                    dd          }t          d          }|                     ||           d S )Nr  rj  Trm  r  rw  rx  s        r   r|  z1TestExport_P256.test_export_public_der_compressedw  r}  r   c                     t          d          }t          |          }| j                            d          }|                     ||           d S )Nr  r  rk  r  r  s       r   r  z4TestExport_P256.test_export_public_sec1_uncompressed  r  r   c                     t          d          }| j                            dd          }t          d          }t          |          }|                     ||           d S )Nr  r  Trm  r  r  r  s        r   r  z2TestExport_P256.test_export_public_sec1_compressed  r  r   c                     t          d          }| j                                        }|                     ||           | j                            dd          }|                     ||           d S )Nr  rj  Fr  r  rr  s      r   r  z/TestExport_P256.test_export_rfc5915_private_der  r  r   c                     t          d          }| j                                        }|                     ||           | j                            d          }|                     ||           d S )Nr	  rj  rk  r  rr  s      r   r  z/TestExport_P256.test_export_private_pkcs8_clear  r  r   c                 &   | j                             dd          }|                     t          t          j        |d            t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           | j                             dddddi	          }t	          j        |d          }|                     | j         |           d S )
Nr   r  r  rj  r  z&PBKDF2WithHMAC-SHA512-256AndAES128-CBCr  r  r  r  r  s      r   r  z3TestExport_P256.test_export_private_pkcs8_encrypted  s(   "00H?a 1 c c 	*c&7$GGG#GX66)7333 "--U;C;] . _ _ .(33)7333 "--U;C;c=Ns<S . U U .(33)733333r   c                 p   t          dd                                          }| j                            d          }|                     ||           | j                            d          }|                     ||           | j                            dd          }|                     ||           d S )Nr  r  Fr  rk  rm  r  rr  s      r   r  z3TestExport_P256.test_export_public_pem_uncompressed  r  r   c                    t          dd                                          }t          j        |          }|                    dd          }t          dd                                          }|                     ||           d S )Nr  r  r  Trm  zecc_p256_public_compressed.pemr  rx  s        r   r  z1TestExport_P256.test_export_public_pem_compressed  r  r   c                    t          dd                                          }| j                            d           }|                     ||           | j                            dd          }|                     ||           d S )Nr  r  r  Fr  r  rr  s      r   r  z-TestExport_P256.test_export_private_pem_clear  r  r   c                    | j                             d          }|                     t          t          j        |           d|v sJ t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           d S r  r  r  s      r   r  z1TestExport_P256.test_export_private_pem_encrypted  r  r   c                 
   t          dd                                          }| j                                        }|                     ||           | j                            d          }|                     ||           d S )Nr  r  r  rk  r  rr  s      r   r  z3TestExport_P256.test_export_private_pkcs8_and_pem_1  r  r   c                    | j                             dd          }|                     t          t          j        |           d|v sJ t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           d S r  r  r  s      r   r  z3TestExport_P256.test_export_private_pkcs8_and_pem_2   r  r   c                 L   t          dd          }| j                            d          }|                     ||           | j                            d          }|                     ||           | j                            dd          }|                     ||           d S )Nr  r  FOpenSSHrk  rm  r0   r   _export_opensshr   rq  rr  s      r    test_export_openssh_uncompressedz0TestExport_P256.test_export_openssh_uncompressed      :DAA/11%887+++ /,,I,>>7+++/,,I,NN7+++++r   c                    t          dd          }t          j        |          }|                    dd          }t	          |          t	          |          k    sJ |                     |t          j        |                     d S )Nr  r  r  Trm  r0   r   r   rq  lenr   r   r   ry  rz  s       r   test_export_openssh_compressedz.TestExport_P256.test_export_openssh_compressed#      :DAA.**%00	D0QQ8}}s#6777777#.1D"E"EFFFFFr   c                    | j                             dddt                                }| j                             dddt                                }|                     ||           | j                             dddt                                }| j                             dddt                                }|                     ||           d S r  r  r  s      r   r  zTestExport_P256.test_prng+  r  r   c                     | j                             dddt                                }| j                             dddt                                }|                     ||           d S r  r  r  s      r   r  z.TestExport_P256.test_byte_or_string_passphraseC  r  r   c                 v   |                      t          | j        j        d           | j                            ddd           |                      t          | j        j        dd           |                      t          | j        j        dddd	
           |                      t          | j        j        dd           |                      t          | j        j        ddd           |                      t          | j        j        ddd	           |                      t          | j        j        dd           d S Nr  rk  r  r   Fr  r  rj  r  r  r  r3   r  r  r  r   s    r   r  z"TestExport_P256.test_error_params1N  y   *d&6&A%PPP 	##5X). 	$ 	0 	0 	0*d&6&A%19 	 	; 	; 	; 	*d&6&A%19051S 	 	U 	U 	U 	*do&@$) 	 	+ 	+ 	+ 	*d&6&A%13u 	 	F 	F 	F*d&6&A%131S 	 	U 	U 	U
 	*d&6&A)19 	 	; 	; 	; 	; 	;r   c                 &   d}d}t          j        |          }t          |j        j        dz            }|                     |d           t          j        |          }t          |j        j        dz            }|                     |d           d S )Nz-----BEGIN EC PRIVATE KEY-----
        MFcCAQEEIHTuc09jC51xXomV6MVCDN+DpAAvSmaJWZPTEHM6D5H1oAoGCCqGSM49
        AwEHoSQDIgACWFuGbHe8yJ43rir7PMTE9w8vHz0BSpXHq90Xi7/s+a0=
        -----END EC PRIVATE KEY-----z-----BEGIN EC PRIVATE KEY-----
        MFcCAQEEIFggiPN9SQP+FAPTCPp08fRUz7rHp2qNBRcBJ1DXhb3ZoAoGCCqGSM49
        AwEHoSQDIgADLpph1trTIlVfa8NJvlMUPyWvL+wP+pW3BJITUL/wj9A=
        -----END EC PRIVATE KEY-----r  i  iWn  r  r  s         r   r  z%TestExport_P256.test_compressed_curven  s    ((
 ~d##DKME)**'''~d##DKME)**'''''r   r   r   r   r   rt  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   s   @r   r  r  e  sd       C C C C C
, 
, 
,G G G) ) )) ) )	, 	, 	,	, 	, 	,4 4 46, , ,G G G	, 	, 	,4 4 4&
, 
, 
,4 4 4*, , ,G G G- - -0	- 	- 	-; ; ;@( ( ( ( ( ( (r   r  c                        e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )TestExport_P384c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S r   )r   r%  r   r^   r   r   r   s      r   r   zTestExport_P384.__init__  r   r   c                 J   t          d          }| j                            d          }|                     ||           | j                            d          }|                     ||           | j                            dd          }|                     ||           d S )Nr.  Frj  rk  rm  ro  rr  s      r   rt  z3TestExport_P384.test_export_public_der_uncompressed  ru  r   c                     t          d          }t          j        |          }|                    dd          }t          d          }|                     ||           d S )Nr.  rj  Trm  r2  rw  rx  s        r   r|  z1TestExport_P384.test_export_public_der_compressed  r}  r   c                     t          d          }t          |          }| j                            d          }|                     ||           d S )Nr.  r  rk  r  r  s       r   r  z4TestExport_P384.test_export_public_sec1_uncompressed  r  r   c                     t          d          }| j                            dd          }t          d          }t          |          }|                     ||           d S )Nr.  r  Trm  r2  r  r  s        r   r  z2TestExport_P384.test_export_public_sec1_compressed  r  r   c                     t          d          }| j                                        }|                     ||           | j                            dd          }|                     ||           d S )Nr4  rj  Fr  r  rr  s      r   r  z/TestExport_P384.test_export_rfc5915_private_der  r  r   c                     t          d          }| j                                        }|                     ||           | j                            d          }|                     ||           d S )Nr6  rj  rk  r  rr  s      r   r  z/TestExport_P384.test_export_private_pkcs8_clear  r  r   c                 &   | j                             dd          }|                     t          t          j        |d            t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           | j                             dddddi	          }t	          j        |d          }|                     | j         |           d S 
Nr   r  r  rj  r  z"PBKDF2WithHMAC-SHA384AndAES128-CBCr  r  r  r  r  s      r   r  z3TestExport_P384.test_export_private_pkcs8_encrypted  (   "00H7Y 1 [ [ 	*c&7$GGG#GX66)7333 "--U4<4V . X X .(33)7333 "--U4<4X6G5L . N N .(33)733333r   c                 p   t          dd                                          }| j                            d          }|                     ||           | j                            d          }|                     ||           | j                            dd          }|                     ||           d S )Nr>  r  Fr  rk  rm  r  rr  s      r   r  z3TestExport_P384.test_export_public_pem_uncompressed  r  r   c                    t          dd                                          }t          j        |          }|                    dd          }t          dd                                          }|                     ||           d S )Nr>  r  r  Trm  zecc_p384_public_compressed.pemr  rx  s        r   r  z1TestExport_P384.test_export_public_pem_compressed  r  r   c                    t          dd                                          }| j                            d           }|                     ||           | j                            dd          }|                     ||           d S )Nr@  r  r  Fr  r  rr  s      r   r  z-TestExport_P384.test_export_private_pem_clear  r  r   c                    | j                             d          }|                     t          t          j        |           d|v sJ t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           d S r  r  r  s      r   r  z1TestExport_P384.test_export_private_pem_encrypted  r  r   c                 
   t          dd                                          }| j                                        }|                     ||           | j                            d          }|                     ||           d S )Nr8  r  r  rk  r  rr  s      r   r  z3TestExport_P384.test_export_private_pkcs8_and_pem_1  r  r   c                    | j                             dd          }|                     t          t          j        |           d|v sJ t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           d S r  r  r  s      r   r  z3TestExport_P384.test_export_private_pkcs8_and_pem_2   r  r   c                 L   t          dd          }| j                            d          }|                     ||           | j                            d          }|                     ||           | j                            dd          }|                     ||           d S )NrD  r  Fr  rk  rm  r  rr  s      r   r  z0TestExport_P384.test_export_openssh_uncompressed5  r  r   c                    t          dd          }t          j        |          }|                    dd          }t	          |          t	          |          k    sJ |                     |t          j        |                     d S )NrD  r  r  Trm  r  r  s       r   r  z.TestExport_P384.test_export_openssh_compressedC  r  r   c                    | j                             dddt                                }| j                             dddt                                }|                     ||           | j                             dddt                                }| j                             dddt                                }|                     ||           d S r  r  r  s      r   r  zTestExport_P384.test_prngK  r  r   c                     | j                             dddt                                }| j                             dddt                                }|                     ||           d S r  r  r  s      r   r  z.TestExport_P384.test_byte_or_string_passphrasec  r  r   c                 v   |                      t          | j        j        d           | j                            ddd           |                      t          | j        j        dd           |                      t          | j        j        dddd	
           |                      t          | j        j        dd           |                      t          | j        j        ddd           |                      t          | j        j        ddd	           |                      t          | j        j        dd           d S r   r  r   s    r   r  z"TestExport_P384.test_error_params1n  r!  r   c                 &   d}d}t          j        |          }t          |j        j        dz            }|                     |d           t          j        |          }t          |j        j        dz            }|                     |d           d S )Na  -----BEGIN EC PRIVATE KEY-----
MIGkAgEBBDAM0lEIhvXuekK2SWtdbgOcZtBaxa9TxfpO/GcDFZLCJ3JVXaTgwken
QT+C+XLtD6WgBwYFK4EEACKhZANiAATs0kZMhFDu8DoBC21jrSDPyAUn4aXZ/DM4
ylhDfWmb4LEbeszXceIzfhIUaaGs5y1xXaqf5KXTiAAYx2pKUzAAM9lcGUHCGKJG
k4AgUmVJON29XoUilcFrzjDmuye3B6Q=
-----END EC PRIVATE KEY-----a  -----BEGIN EC PRIVATE KEY-----
MIGkAgEBBDDHPFTslYLltE16fHdSDTtE/2HTmd3M8mqy5MttAm4wZ833KXiGS9oe
kFdx9sNV0KygBwYFK4EEACKhZANiAASLIE5RqVMtNhtBH/u/p/ifqOAlKnK/+RrQ
YC46ZRsnKNayw3wATdPjgja7L/DSII3nZK0G6KOOVwJBznT/e+zudUJYhZKaBLRx
/bgXyxUtYClOXxb1Y/5N7txLstYRyP0=
-----END EC PRIVATE KEY-----r  i  i  r  r  s         r   r  z%TestExport_P384.test_compressed_curve  s    
   ~d##DKME)**'''~d##DKME)**'''''r   r#  r   s   @r   r%  r%    sc       C C C C C
, 
, 
,G G G) ) )) ) )	, 	, 	,	, 	, 	,4 4 46, , ,G G G	, 	, 	,4 4 4&
, 
, 
,4 4 4*, , ,G G G- - -0	- 	- 	-; ; ;>( ( ( ( ( ( (r   r%  c                        e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )TestExport_P521c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S r   )r   r=  r   rc   r   r   r   s      r   r   zTestExport_P521.__init__  r   r   c                 J   t          d          }| j                            d          }|                     ||           | j                            d          }|                     ||           | j                            dd          }|                     ||           d S )NrM  Frj  rk  rm  ro  rr  s      r   rt  z3TestExport_P521.test_export_public_der_uncompressed  ru  r   c                     t          d          }t          j        |          }|                    dd          }t          d          }|                     ||           d S )NrM  rj  Trm  rQ  rw  rx  s        r   r|  z1TestExport_P521.test_export_public_der_compressed  r}  r   c                    t          d          }t          |          }| j                            d          }|                     ||           | j                            d          }|                     ||           d S )NrM  r  rk  rawr  r  s       r   r  z4TestExport_P521.test_export_public_sec1_uncompressed  s    233+H55/,,F,;;(((/,,E,::(((((r   c                 (   t          d          }| j                            dd          }t          d          }t          |          }|                     ||           | j                            dd          }|                     ||           d S )NrM  r  Trm  rQ  rB  r  r  s        r   r  z2TestExport_P521.test_export_public_sec1_compressed  s    233/,,FT,JJ"+,L"M"M+,CDD(((/,,ED,II(((((r   c                     t          d          }| j                                        }|                     ||           | j                            dd          }|                     ||           d S )NrS  rj  Fr  r  rr  s      r   r  z/TestExport_P521.test_export_rfc5915_private_der  r  r   c                     t          d          }| j                                        }|                     ||           | j                            d          }|                     ||           d S )NrU  rj  rk  r  rr  s      r   r  z/TestExport_P521.test_export_private_pkcs8_clear  r  r   c                 &   | j                             dd          }|                     t          t          j        |d            t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           | j                             dddddi          }t	          j        |d          }|                     | j         |           d S )	Nr   r  r  rj  r  r  r  r  r  r  s      r   r  z3TestExport_P521.test_export_private_pkcs8_encrypted  s(   "00H7Y 1 [ [ 	*c&7$GGG#GX66)7333 "--U4<4V . X X .(33)7333 "--U4<4V6G5L . N N .(33)733333r   c                 p   t          dd                                          }| j                            d          }|                     ||           | j                            d          }|                     ||           | j                            dd          }|                     ||           d S )Nr]  r  Fr  rk  rm  r  rr  s      r   r  z3TestExport_P521.test_export_public_pem_uncompressed
  r  r   c                    t          dd                                          }t          j        |          }|                    dd          }t          dd                                          }|                     ||           d S )Nr]  r  r  Trm  zecc_p521_public_compressed.pemr  rx  s        r   r  z1TestExport_P521.test_export_public_pem_compressed  r  r   c                    t          dd                                          }| j                            d           }|                     ||           | j                            dd          }|                     ||           d S )Nr_  r  r  Fr  r  rr  s      r   r  z-TestExport_P521.test_export_private_pem_clear!  r  r   c                    | j                             d          }|                     t          t          j        |           d|v sJ t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           d S r  r  r  s      r   r  z1TestExport_P521.test_export_private_pem_encrypted,  r  r   c                 
   t          dd                                          }| j                                        }|                     ||           | j                            d          }|                     ||           d S )NrW  r  r  rk  r  rr  s      r   r  z3TestExport_P521.test_export_private_pkcs8_and_pem_1?  r  r   c                    | j                             dd          }|                     t          t          j        |           d|v sJ t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           d S r  r  r  s      r   r  z3TestExport_P521.test_export_private_pkcs8_and_pem_2K  r  r   c                 L   t          dd          }| j                            d          }|                     ||           | j                            d          }|                     ||           | j                            dd          }|                     ||           d S )Nrc  r  Fr  rk  rm  r  rr  s      r   r  z0TestExport_P521.test_export_openssh_uncompressed`  r  r   c                    t          dd          }t          j        |          }|                    dd          }t	          |          t	          |          k    sJ |                     |t          j        |                     d S )Nrc  r  r  Trm  r  r  s       r   r  z.TestExport_P521.test_export_openssh_compressedn  r  r   c                    | j                             dddt                                }| j                             dddt                                }|                     ||           | j                             dddt                                }| j                             dddt                                }|                     ||           d S r  r  r  s      r   r  zTestExport_P521.test_prngv  r  r   c                     | j                             dddt                                }| j                             dddt                                }|                     ||           d S r  r  r  s      r   r  z.TestExport_P521.test_byte_or_string_passphrase  r  r   c                 v   |                      t          | j        j        d           | j                            ddd           |                      t          | j        j        dd           |                      t          | j        j        dddd	
           |                      t          | j        j        dd           |                      t          | j        j        ddd           |                      t          | j        j        ddd	           |                      t          | j        j        dd           d S r   r  r   s    r   r  z"TestExport_P521.test_error_params1  r!  r   c                 &   d}d}t          j        |          }t          |j        j        dz            }|                     |d           t          j        |          }t          |j        j        dz            }|                     |d           d S )Nal  -----BEGIN EC PRIVATE KEY-----
MIHcAgEBBEIAnm1CEjVjvNfXEN730p+D6su5l+mOztdc5XmTEoti+s2R4GQ4mAv3
0zYLvyklvOHw0+yy8d0cyGEJGb8T3ZVKmg2gBwYFK4EEACOhgYkDgYYABAHzjTI1
ckxQ3Togi0LAxiG0PucdBBBs5oIy3df95xv6SInp70z+4qQ2EltEmdNMssH8eOrl
M5CYdZ6nbcHMVaJUvQEzTrYxvFjOgJiOd+E9eBWbLkbMNqsh1UKVO6HbMbW0ohCI
uGxO8tM6r3w89/qzpG2SvFM/fvv3mIR30wSZDD84qA==
-----END EC PRIVATE KEY-----al  -----BEGIN EC PRIVATE KEY-----
MIHcAgEBBEIB84OfhJluLBRLn3+cC/RQ37C2SfQVP/t0gQK2tCsTf5avRcWYRrOJ
PmX9lNnkC0Hobd75QFRmdxrB0Wd1/M4jZOWgBwYFK4EEACOhgYkDgYYABAAMZcdJ
1YLCGHt3bHCEzdidVy6+brlJIbv1aQ9fPQLF7WKNv4c8w3H8d5a2+SDZilBOsk5c
6cNJDMz2ExWQvxl4CwDJtJGt1+LHVKFGy73NANqVxMbRu+2F8lOxkNp/ziFTbVyV
vv6oYkMIIi7r5oQWAiQDrR2mlrrFDL9V7GH/r8SWQw==
-----END EC PRIVATE KEY-----r  i8  iC  r  r  s         r   r  z%TestExport_P521.test_compressed_curve  s    
   ~d##DKME)**'''~d##DKME)**'''''r   r#  r   s   @r   r=  r=    sc       C C C C C
, 
, 
,G G G) ) )	) 	) 	)	, 	, 	,	, 	, 	,4 4 46, , ,G G G	, 	, 	,4 4 4&
, 
, 
,4 4 4*, , ,G G G- - -0	- 	- 	-; ; ;>( ( ( ( ( ( (r   r=  c                   l     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Z xZS )TestImport_Ed25519c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S r   )r   rT  r   rl   r   r   r   s      r   r   zTestImport_Ed25519.__init__  ?    0 $''0$A&AAA,C,E,E)$///r   c                 @   t          d          }t          j        |          }|                     | j        |           t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_ed25519_public.derr   r   s      r   r   z)TestImport_Ed25519.test_import_public_der  s    566.x88#...oh--#...nX&&#.....r   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_ed25519_private.derr   r   s      r   test_import_pkcs8_derz(TestImport_Ed25519.test_import_pkcs8_der  sh    677oh--)3///nX&&)3/////r   c                     t          d          }t          j        |d          }|                     | j        |           t          j        |d          }|                     | j        |           d S )Nzecc_ed25519_private_p8.derr   r   r   s      r   r   z8TestImport_Ed25519.test_import_private_pkcs8_encrypted_1  j    9::oh11)3///nXx00)3/////r   c                     t          d          }t          j        |d          }|                     | j        |           d S )Nzecc_ed25519_private_p8.pemr   r   r   s      r   r   z8TestImport_Ed25519.test_import_private_pkcs8_encrypted_2  s@    9::nXx00)3/////r   c                     t          d          }t          j        |d          }|                     | j        |           t          j        |d          }|                     | j        |           d S )Nzecc_ed25519_private_p8_2.derr   r   r   s      r   r   z8TestImport_Ed25519.test_import_private_pkcs8_encrypted_3	  sj    ;<<oh11)3///nXx00)3/////r   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Nzecc_ed25519_x509.derr   r   s      r   r   z'TestImport_Ed25519.test_import_x509_der
	  sf    344oh--#...nX&&#.....r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_ed25519_public.pemr   r   s      r   r   z)TestImport_Ed25519.test_import_public_pem	  s=    566nX&&#.....r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_ed25519_private.pemr   r   s      r   r   z*TestImport_Ed25519.test_import_private_pem	  s>    677nX&&)3/////r   c                    dD ]}t          d|z            }t          j        |d          }|                     | j        |           t          j        t          |          d          }|                     | j        |           d S )Nr   r   r   r   zecc_ed25519_private_enc_%s.pemr   r   r   r   s       r   r   z4TestImport_Ed25519.test_import_private_pem_encrypted	  s    8 	4 	4D !AD!HIIH.844CT-s333.x)<<CT-s3333	4 	4r   c                     t          d          }t          j        |          }|                     | j        |           d S )Nzecc_ed25519_x509.pemr   r   s      r   r   z'TestImport_Ed25519.test_import_x509_pem)	  =    344nX&&#.....r   c                    t          d          }t          j        |          }|                     |                                           t          j        |          }|                     |                                           d S )Necc_ed25519_public_openssh.txt)r0   r   r  assertFalsehas_privater   r   s      r   r  z-TestImport_Ed25519.test_import_openssh_public/	  sq    =>>(22**+++nX&&**+++++r   c                 L    t          d          }t          j        |          }d S )Nzecc_ed25519_private_openssh.pemr  r   s      r   r$  z4TestImport_Ed25519.test_import_openssh_private_clear6	  s#    >??nX&&r   c                 N    t          d          }t          j        |d          }d S )Nz#ecc_ed25519_private_openssh_pwd.pemr'  r  r   s      r   r(  z7TestImport_Ed25519.test_import_openssh_private_password:	  s%    BCCnX{33r   )r   r   r   r   r   r[  r   r   r   r   r   r   r   r   r  r$  r(  r   r   s   @r   rT  rT    s        F F F F F
/ 
/ 
/0 0 00 0 00 0 00 0 0/ / // / /0 0 04 4 4/ / /, , ,' ' '4 4 4 4 4 4 4r   rT  c                   f     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Z xZS )TestExport_Ed25519c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S r   )r   rp  r   rl   r   r   r   s      r   r   zTestExport_Ed25519.__init__A	  rV  r   c                 J   t          d          }| j                            d          }|                     ||           | j                            d          }|                     ||           | j                            dd          }|                     ||           d S )NrX  Trj  rk  Frm  ro  rr  s      r   test_export_public_derz)TestExport_Ed25519.test_export_public_derE	  s    566/>>tDD7+++/,,E,::7+++/,,EE,JJ7+++++r   c                 T    |                      t          | j        j        d           d S Nr  rk  r   r   r   rq  r   s    r   test_export_public_sec1z*TestExport_Ed25519.test_export_public_sec1Q	  (    *do&@PPPPPr   c                 4   t          d          }| j                                        }|                     ||           | j                            d          }|                     ||           |                     t          | j        j        dd           d S )NrZ  rj  rk  Fr  r0   r   r  r   rq  r   r   rr  s      r   r  z2TestExport_Ed25519.test_export_private_pkcs8_clearT	  s    677"00227+++ "--U-;;7+++*d&6&A!&% 	 	9 	9 	9 	9 	9r   c                 &   | j                             dd          }|                     t          t          j        |d            t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           | j                             dddddi	          }t	          j        |d          }|                     | j         |           d S )
Nr   r  r  rj  r  z"PBKDF2WithHMAC-SHA256AndAES128-CBCr  r  r  r  r  s      r   r  z6TestExport_Ed25519.test_export_private_pkcs8_encryptedb	  r/  r   c                     t          dd                                          }| j                            d                                          }|                     ||           d S )Nrb  r  r  rk  r0   r  r   rq  r   r   key_file_refr   s      r   test_export_public_pemz)TestExport_Ed25519.test_export_public_pem}	  s^     !94@@FFHH?--U-;;AACCx00000r   c                     t          dd                                          }| j                            d                                          }|                     ||           d S )Nrd  r  r  rk  r0   r  r   rq  r   rr  s      r   r  z0TestExport_Ed25519.test_export_private_pem_clear	  s_    6==CCEE"--U-;;AACC7+++++r   c                     | j                             ddd          }|                     t          t          j        |           d|v sJ t	          j        |d          }|                     | j         |           d S Nr  r   r  r  r  r   r   rq  r   r   r   r   r   r  s      r   r  z4TestExport_Ed25519.test_export_private_pem_encrypted	      "--U9B:\ . ^ ^
 	*cng>>>&'1111.(33)733333r   c                    t          dd          }t          j        |          }d                    |                    d          d d                   }|                    d          }|                     ||                                           |                    d          }|                     ||                                           d S )Nrj  r  r2   r   Fr  rk  )	r0   r   r   r#   splitr  r   r  rq  )r   r   ri   rs  s       r   test_export_opensshz&TestExport_Ed25519.test_export_openssh	  s    =tDD^H--
88HNN3//344,,U337==??333''y'997==??33333r   c                     | j                             d          }|                     |t          d                     d S )NrB  rk  s@   bc85b8cf585d20a4de47e84d1cb6183f63d9ba96223fcbc886e363ffdea20cffr   rq  r   r   r   rs  s     r   test_export_rawz"TestExport_Ed25519.test_export_raw	  s?    /,,E,::),o"p"pqqqqqr   c                     | j                             dddt                                }| j                             dddt                                }|                     ||           d S Nr  r   r  r  r  r  s      r   r  zTestExport_Ed25519.test_prng	      #..e5=5W3A3C3C / E E #..e5=5W3A3C3C / E E 	8,,,,,r   c                     | j                             dddt                                }| j                             dddt                                }|                     ||           d S Nr  r   r  r  r   r  r  s      r   r  z1TestExport_Ed25519.test_byte_or_string_passphrase	      #..e5=5W3A3C3C / E E #..e5>5W3A3C3C / E E 	8,,,,,r   c                    |                      t          | j        j        d           |                      t          | j        j        dd           |                      t          | j        j        ddd           |                      t          | j        j        ddd	
           |                      t          | j        j        dd           d S Nr  rk  r  r   r  r3   Fr  r  r  r  r   r   r   rq  r   s    r   r  z%TestExport_Ed25519.test_error_params1	      *d&6&A%PPP 	*d&6&A%19 	 	; 	; 	; 	*d&6&A%13u 	 	F 	F 	F*d&6&A%131S 	 	U 	U 	U
 	*d&6&A)19 	 	; 	; 	; 	; 	;r   r   r   r   r   rs  rw  r  r  r  r  r  r  r  r  r  r  r   r   s   @r   rp  rp  ?	  s        F F F F F
, 
, 
,Q Q Q9 9 94 4 461 1 1
, , ,
4 4 4	4 	4 	4r r r
- 
- 
-	- 	- 	-; ; ; ; ; ; ;r   rp  c                   Z     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Z xZS )TestImport_Ed448c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S r   )r   r  r   rp   r   r   r   s      r   r   zTestImport_Ed448.__init__	  ?    .%%.????,A,C,C)$///r   c                 @   t          d          }t          j        |          }|                     | j        |           t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_ed448_public.derr   r   s      r   r   z'TestImport_Ed448.test_import_public_der	  s    344.x88#...oh--#...nX&&#.....r   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_ed448_private.derr   r   s      r   r[  z&TestImport_Ed448.test_import_pkcs8_der	  sh    455oh--)3///nX&&)3/////r   c                     t          d          }t          j        |d          }|                     | j        |           t          j        |d          }|                     | j        |           d S )Nzecc_ed448_private_p8.derr   r   r   s      r   r   z6TestImport_Ed448.test_import_private_pkcs8_encrypted_1	  sj    788oh11)3///nXx00)3/////r   c                     t          d          }t          j        |d          }|                     | j        |           d S )Nzecc_ed448_private_p8.pemr   r   r   s      r   r   z6TestImport_Ed448.test_import_private_pkcs8_encrypted_2	  s@    788nXx00)3/////r   c                     t          d          }t          j        |d          }|                     | j        |           t          j        |d          }|                     | j        |           d S )Nzecc_ed448_private_p8_2.derr   r   r   s      r   r   z6TestImport_Ed448.test_import_private_pkcs8_encrypted_3	  r]  r   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Nzecc_ed448_x509.derr   r   s      r   r   z%TestImport_Ed448.test_import_x509_der
  sf    122oh--#...nX&&#.....r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_ed448_public.pemr   r   s      r   r   z'TestImport_Ed448.test_import_public_pem

  rh  r   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_ed448_private.pemr   r   s      r   r   z(TestImport_Ed448.test_import_private_pem
  s>    455nX&&)3/////r   c                    dD ]}t          d|z            }t          j        |d          }|                     | j        |           t          j        t          |          d          }|                     | j        |           d S )Nrf  zecc_ed448_private_enc_%s.pemr   r   r   r   s       r   r   z2TestImport_Ed448.test_import_private_pem_encrypted
  s    8 	4 	4D !?$!FGGH.844CT-s333.x)<<CT-s3333	4 	4r   c                     t          d          }t          j        |          }|                     | j        |           d S )Nzecc_ed448_x509.pemr   r   s      r   r   z%TestImport_Ed448.test_import_x509_pem 
  s=    122nX&&#.....r   )r   r   r   r   r   r[  r   r   r   r   r   r   r   r   r   r   s   @r   r  r  	  s        D D D D D
/ 
/ 
/0 0 00 0 00 0 00 0 0/ / // / /0 0 04 4 4/ / / / / / /r   r  c                   f     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Z xZS )TestExport_Ed448c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S r   )r   r  r   rp   r   r   r   s      r   r   zTestExport_Ed448.__init__)
  r  r   c                 J   t          d          }| j                            d          }|                     ||           | j                            d          }|                     ||           | j                            dd          }|                     ||           d S )Nr  Trj  rk  Frm  ro  rr  s      r   rs  z'TestExport_Ed448.test_export_public_der-
  s    344/>>tDD7+++/,,E,::7+++/,,EE,JJ7+++++r   c                 T    |                      t          | j        j        d           d S ru  rv  r   s    r   rw  z(TestExport_Ed448.test_export_public_sec19
  rx  r   c                 4   t          d          }| j                                        }|                     ||           | j                            d          }|                     ||           |                     t          | j        j        dd           d S )Nr  rj  rk  Fr  rz  rr  s      r   r  z0TestExport_Ed448.test_export_private_pkcs8_clear<
  s    455"00227+++ "--U-;;7+++*d&6&A!&% 	 	9 	9 	9 	9 	9r   c                 &   | j                             dd          }|                     t          t          j        |d            t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           | j                             dddddi	          }t	          j        |d          }|                     | j         |           d S r.  r  r  s      r   r  z4TestExport_Ed448.test_export_private_pkcs8_encryptedJ
  r/  r   c                     t          dd                                          }| j                            d                                          }|                     ||           d S )Nr  r  r  rk  r}  r~  s      r   r  z'TestExport_Ed448.test_export_public_pemf
  s^     !7>>DDFF?--U-;;AACCx00000r   c                     t          dd                                          }| j                            d                                          }|                     ||           d S )Nr  r  r  rk  r  rr  s      r   r  z.TestExport_Ed448.test_export_private_pem_cleark
  s_    4d;;AACC"--U-;;AACC7+++++r   c                     | j                             ddd          }|                     t          t          j        |           d|v sJ t	          j        |d          }|                     | j         |           d S r  r  r  s      r   r  z2TestExport_Ed448.test_export_private_pem_encryptedp
  r  r   c                 T    |                      t          | j        j        d           d S )Nr  rk  rv  r   s    r   r  z$TestExport_Ed448.test_export_openssh}
  s(    *do&@SSSSSr   c                     | j                             d          }|                     |t          d                     d S )NrB  rk  sr   899014ddc0a0e1260cfc1085afdf952019e9fd63372e3e366e26dad32b176624884330a14617237e3081febd9d1a15069e7499433d2f55dd80r  r  s     r   r  z TestExport_Ed448.test_export_raw
  sW    /,,E,::)  -b  #c  #c  	d  	d  	d  	d  	dr   c                     | j                             dddt                                }| j                             dddt                                }|                     ||           d S r  r  r  s      r   r  zTestExport_Ed448.test_prng
  r  r   c                     | j                             dddt                                }| j                             dddt                                }|                     ||           d S r  r  r  s      r   r  z/TestExport_Ed448.test_byte_or_string_passphrase
  r  r   c                    |                      t          | j        j        d           |                      t          | j        j        dd           |                      t          | j        j        ddd           |                      t          | j        j        ddd	
           |                      t          | j        j        dd           d S r  r  r   s    r   r  z#TestExport_Ed448.test_error_params1
  r  r   r  r   s   @r   r  r  '
  s        D D D D D
, 
, 
,Q Q Q9 9 94 4 481 1 1
, , ,
4 4 4T T Td d d
- 
- 
-	- 	- 	-; ; ; ; ; ; ;r   r  c                    g }|t          t                    z  }	 |t          t                    z  }|t          t                    z  }|t          t                    z  }|t          t
                    z  }|t          t                    z  }|t          t                    z  }|t          t                    z  }|t          t                    z  }|t          t                    z  }|t          t                    z  }|t          t                    z  }|t          t                    z  }|t          t                    z  }|t          t                    z  }n# t           $ r Y nw xY w|S r   )r   r}   r   r   r   r+  rJ  rT  r  rg  r  r  r%  r=  rp  r  r   )configtestss     r   	get_testsr  
  sE   E	_Z(((E111111111111111!3444!1222111111111111111!3444!1222%   Ls   EE 
E+*E+__main__c                  B    t          j        t                                S r   )unittest	TestSuiter  r   r   r   <lambda>r  
  s    H&y{{33 r   suite)defaultTest)r   )9r   r   r&   r  binasciir   Crypto.SelfTest.st_commonr   Crypto.Util.py3compatr   r   r   Crypto.Util.asn1r   r	   Crypto.Util.numberr
   Crypto.Hashr   Crypto.PublicKeyr   r!   r   ImportErrorr   r   r0   r8   rO   rS   rX   r^   rc   rl   rp   rt   r{   TestCaser}   r   r   r   r+  rJ  rg  r  r  r%  r=  rT  rp  r  r  r  r   r  mainr   r   r   <module>r     s\  > 
			          5 5 5 5 5 5 @ @ @ @ @ @ @ @ @ @ 6 6 6 6 6 6 6 6 , , , , , ,                        #$$$$! # # #"#	 	 	 	 	 	 	 	   4C C C

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