Ë
    (üàg[ª ã                   óÌ  — d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZ d dlmZmZ d dlmZ d dlmZ d dlmZ d d	lmZ 	 d dlZd
Z 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jN                  «      Z( G d„ dejN                  «      Z) G d„ dejN                  «      Z* G d„ d ejN                  «      Z+ G d!„ d"ejN                  «      Z, G d#„ d$ejN                  «      Z- G d%„ d&ejN                  «      Z. G d'„ d(ejN                  «      Z/ G d)„ d*ejN                  «      Z0 G d+„ d,ejN                  «      Z1 G d-„ d.ejN                  «      Z2 G d/„ d0ejN                  «      Z3 G d1„ d2ejN                  «      Z4 G d3„ d4ejN                  «      Z5 G d5„ d6ejN                  «      Z6i fd7„Z7e8d8k(  rd9„ Z9 ejt                  d:¬;«       yy# e$ r dZY �Œ”w xY w)=é    N)Ú	unhexlify)Úlist_test_cases)ÚbordÚtostrÚFileNotFoundError)ÚDerSequenceÚDerBitString)Úbytes_to_long)ÚSHAKE128)ÚECC)Ú_import_rfc5915_derTFc                   ó   — e Zd Zy)ÚMissingTestVectorExceptionN)Ú__name__Ú
__module__Ú__qualname__© ó    úg/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/Crypto/SelfTest/PublicKey/test_import_ECC.pyr   r   6   s   „ Ør   r   c                 óB  — d }	 t         s<t        t        j                  t	        j
                  t        j                  «      | «      ‚d}t        j                  j                  t        j                  «      }t        j                  j                  t	        j                  j                  |g|¢­Ž | «      }t        ||«      5 }|j                  «       }d d d «       |€t!        d| z  «      ‚|S # 1 sw Y   ŒxY w# t        $ r t        j                  dt        d¬«       Y ŒEw xY w)N)Ú	PublicKeyr   zSkipping extended tests for ECCé   )Ú
stacklevelz
Missing %s)Útest_vectors_availabler   ÚerrnoÚENOENTÚosÚstrerrorÚpathÚdirnameÚpycryptodome_test_vectorsÚ__file__ÚjoinÚopenÚreadÚwarningsÚwarnÚUserWarningr   )Ú	file_nameÚmodeÚresultsÚ	dir_compsÚinit_dirÚfull_file_nameÚfile_ins          r   Ú	load_filer0   :   sè   € Ø€Gð$Ý%Ü#¤E§L¡LÜ$&§K¡K´·±Ó$=Ø$-ó/ð /ð )ˆ	Ü—7‘7—?‘?Ô#<×#EÑ#EÓFˆÜŸ™Ÿ™¤b§g¡g§l¡l°8Ð&H¸iÒ&HÈ)ÓTˆÜ�. $Ó'ð 	%¨7Ø—l‘l“nˆG÷	%ð €Ü(¨¸	Ñ)AÓBÐBà€N÷	%ð 	%ûô ò $Ü�‰Ð7Ü!Ø!"÷	$ð$ús*   „B;C6 Â?C*ÃC6 Ã*C3Ã/C6 Ã6%DÄDc                 óŒ   — dj                  | «      }t        t        |«      j                  dd«      j                  dd«      «      S )Nr   ú Ú ú:)r#   r   r   Úreplace)ÚlinesÚexts     r   Úcompactr8   T   s8   € Ø
�(‰(�5‹/€CÜ”U˜3“Z×'Ñ'¨¨RÓ0×8Ñ8¸¸bÓAÓBÐBr   c                  óJ  — d} t        d«      j                  «       }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   Y   ó«   € Ø€GÜ˜.Ó)×4Ñ4Ó6€IÜ!¤'¨)°A°a¨.Ó"9Ó:€MÜ˜I a¨˜NÓ+€MÜ�˜aÑ Ó! QÒ&Ð&Ð&Ü  ¨q°¸±Ð!;Ó<€LÜ  ¨w°q©y¨zÐ!:Ó;€Lä�M‰M ¨=Ô9Ü�M‰M °À|ÔTðVð Vr   c                  óJ  — d} t        d«      j                  «       }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   f   rP   r   c                  óJ  — d} t        d«      j                  «       }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   s   ó«   € Ø€GÜ˜.Ó)×4Ñ4Ó6€IÜ!¤'¨)°A°a¨.Ó"9Ó:€MÜ˜I a¨˜OÓ,€MÜ�˜aÑ Ó! QÒ&Ð&Ð&Ü  ¨q°¸±Ð!;Ó<€LÜ  ¨w°q©y¨zÐ!:Ó;€Lä�M‰M ¨=Ô9Ü�M‰M °À|ÔTðVð Vr   c                  óJ  — d} t        d«      j                  «       }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é0   zecc_p384.txtr   rV   é   é   r   r;   r>   zP-384r?   rB   rE   rH   s         r   Úcreate_ref_keys_p384r^   €   rY   r   c                  óJ  — d} t        d«      j                  «       }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éB   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«      j                  «       } t        | dd «      }t        j                  d|¬«      }||j                  «       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   š   sH   € ÜÐ+Ó,×7Ñ7Ó9€IÜ�9˜Q˜q�>Ó"€DÜ
�-‰-˜i¨dÔ
3€CØ�—‘Ó!Ð"Ð"r   c                  ó¢   — t        d«      j                  «       } t        | dd «      }t        j                  d|¬«      }||j                  «       fS )Nzecc_ed448.txtrV   é
   ÚEd448rf   rh   rj   s      r   Úcreate_ref_keys_ed448rp   ¡   sG   € Ü˜/Ó*×5Ñ5Ó7€IÜ�9˜Q˜r�?Ó#€DÜ
�-‰-˜g¨DÔ
1€CØ�—‘Ó!Ð"Ð"r   c                  ó\   — t        j                  «       j                  d«      j                  S )Ns   SEED)r   ÚnewÚupdater%   r   r   r   Úget_fixed_prngrt   «   s   € Ü�<‰<‹>× Ñ  Ó)×.Ñ.Ð.r   c                 óŒ   — t        «       }|j                  | «       t        «       }|j                  |d   «       |j                  S )Nr>   )r   Údecoder	   Úvalue)ÚdataÚseqÚbss      r   Úextract_bitstring_from_spkir{   ¯   s5   € Ü‹mˆØ�
‰
�4ÔÜ‹^ˆØ
�	‰	�#�a‘&ÔØ�x‰xˆr   c                   ó*   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú
TestImportc                 óN   — | j                  t        t        j                  d«       y )Nr   ©ÚassertRaisesÚ
ValueErrorr   Ú
import_key©Úselfs    r   Ú
test_emptyzTestImport.test_empty¹   s   € Ø×Ñœ*¤c§n¡n°cÕ:r   c                 óR   — d}| j                  t        t        j                  |«       y )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!   € ðˆð 	×Ñœ*¤c§n¡n°hÕ?r   c                 ól   — d}t        t        |«      d d«      }| j                  |j                  d«       y )NÚN302502010104205c4e4320ef260f91ed9fc597aee98c8236b60e0ced692cc7a057d5e45798a052ú1.2.840.10045.3.1.7ì   R 1/‘W¾zL%-;[6S»^,~ÙòAÉ;�!N\©r   r   ÚassertEqualrA   ©r„   Údata_hexrk   s      r   Ú test_import_private_rfc5915_nonez+TestImport.test_import_private_rfc5915_noneÆ   s0   € àcˆÜ!¤)¨HÓ"5°tÐ=RÓSˆØ×Ñ˜Ÿ™Ð bÕcr   c                 ój   — d}t        t        |«      d «      }| j                  |j                  d«       y )NÚf303102010104205c4e4320ef260f91ed9fc597aee98c8236b60e0ced692cc7a057d5e45798a052a00a06082a8648ce3d030107rŒ   r�   r�   s      r   Ú"test_import_private_rfc5915_only_0z-TestImport.test_import_private_rfc5915_only_0Ì   s-   € à{ˆÜ!¤)¨HÓ"5°tÓ<ˆØ×Ñ˜Ÿ™Ð bÕcr   c                 ól   — d}t        t        |«      d d«      }| j                  |j                  d«       y )NÚÚ306b02010104205c4e4320ef260f91ed9fc597aee98c8236b60e0ced692cc7a057d5e45798a052a14403420004a40ad59a2050ebe92479bd5fb16bb2e45b6465eb3cb2b1effe423fabe6cb7424db8219ef0bab80acf26fd70595b61fe4760d33eed80dd03d2fd0dfb27b8ce75cr‹   rŒ   r�   r�   s      r   Ú"test_import_private_rfc5915_only_1z-TestImport.test_import_private_rfc5915_only_1Ò   s3   € ð pˆÜ!¤)¨HÓ"5°tÐ=RÓSˆØ×Ñ˜Ÿ™Ð bÕcr   N)r   r   r   r…   rˆ   r‘   r”   r—   r   r   r   r}   r}   ·   s   „ ò;ò@òdòdódr   r}   c                   ól   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )ÚTestImport_P192c                 óZ   •— t        t        | �
  |i |¤Ž t        «       \  | _        | _        y ©N)Úsuperr™   Ú__init__rO   Úref_privateÚ
ref_public©r„   ÚargsÚkwargsÚ	__class__s      €r   r�   zTestImport_P192.__init__Ú   ó)   ø€ ÜŒo˜tÑ-¨tÐ>°vÒ>Ü,@Ó,BÑ)ˆÔ˜$�/r   c                 óB  — t        d«      }t        j                  |«      }| j                  | j                  |«       t        j
                  |d «      }| j                  | j                  |«       t        j                  |«      }| j                  | j                  |«       y )Núecc_p192_public.der©r0   r   Ú_import_subjectPublicKeyInforŽ   rŸ   Ú_import_derr‚   ©r„   Úkey_filerk   s      r   Útest_import_public_derz&TestImport_P192.test_import_public_derÞ   ów   € ÜÐ2Ó3ˆä×.Ñ.¨xÓ8ˆØ×Ñ˜Ÿ™¨#Ô.ä�o‰o˜h¨Ó-ˆØ×Ñ˜Ÿ™¨#Ô.ä�n‰n˜XÓ&ˆØ×Ñ˜Ÿ™¨#Õ.r   c                 ó–   — t        d«      }t        |«      }t        j                  |d¬«      }| j	                  | j
                  |«       y )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ê   ó;   € ÜÐ2Ó3ˆÜ+¨HÓ5ˆÜ�n‰n˜X°&Ô9ˆØ×Ñ˜Ÿ™¨#Õ.r   c                 ó–   — t        d«      }t        |«      }t        j                  |d¬«      }| j	                  | j
                  |«       y )Núecc_p192_public_compressed.derr¯   r°   r²   r³   s       r   Útest_import_sec1_compressedz+TestImport_P192.test_import_sec1_compressedð   ó;   € ÜÐ=Ó>ˆÜ+¨HÓ5ˆÜ�n‰n˜X°&Ô9ˆØ×Ñ˜Ÿ™¨#Õ.r   c                 óD  — t        d«      }t        j                  |d «      }| j                  | j                  |«       t        j
                  |d «      }| j                  | j                  |«       t        j                  |«      }| j                  | j                  |«       y )Núecc_p192_private.der©r0   r   r   rŽ   rž   r©   r‚   rª   s      r   Útest_import_rfc5915_derz'TestImport_P192.test_import_rfc5915_derö   ó   € ÜÐ3Ó4ˆä×%Ñ% h°Ó5ˆØ×Ñ˜×)Ñ)¨3Ô/ä�o‰o˜h¨Ó-ˆØ×Ñ˜×)Ñ)¨3Ô/ä�n‰n˜XÓ&ˆØ×Ñ˜×)Ñ)¨3Õ/r   c                 óà   — t        d«      }t        j                  |d «      }| j                  | j                  |«       t        j
                  |«      }| j                  | j                  |«       y )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  óW   € ÜÐ<Ó=ˆä�o‰o˜h¨Ó-ˆØ×Ñ˜×)Ñ)¨3Ô/ä�n‰n˜XÓ&ˆØ×Ñ˜×)Ñ)¨3Õ/r   c                 ó|   — t        d«      }t        j                  |«      }| j                  | j                  |«       y )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  ó1   € ÜÐ<Ó=ˆä�n‰n˜XÓ&ˆØ×Ñ˜×)Ñ)¨3Õ/r   c                 óâ   — t        d«      }t        j                  |d«      }| j                  | j                  |«       t        j
                  |d«      }| j                  | j                  |«       y )Nzecc_p192_private_p8.derÚsecretrÁ   rª   s      r   Ú%test_import_private_pkcs8_encrypted_1z5TestImport_P192.test_import_private_pkcs8_encrypted_1  óY   € ÜÐ6Ó7ˆä�o‰o˜h¨Ó1ˆØ×Ñ˜×)Ñ)¨3Ô/ä�n‰n˜X xÓ0ˆØ×Ñ˜×)Ñ)¨3Õ/r   c                 ó~   — t        d«      }t        j                  |d«      }| j                  | j                  |«       y )Nzecc_p192_private_p8.pemrÊ   rÆ   rª   s      r   Ú%test_import_private_pkcs8_encrypted_2z5TestImport_P192.test_import_private_pkcs8_encrypted_2  ó3   € ÜÐ6Ó7ˆä�n‰n˜X xÓ0ˆØ×Ñ˜×)Ñ)¨3Õ/r   c                 óà   — t        d«      }t        j                  |d «      }| j                  | j                  |«       t        j
                  |«      }| j                  | j                  |«       y )Nzecc_p192_x509.der©r0   r   r©   rŽ   rŸ   r‚   rª   s      r   Útest_import_x509_derz$TestImport_P192.test_import_x509_der   óS   € ÜÐ0Ó1ˆä�o‰o˜h¨Ó-ˆØ×Ñ˜Ÿ™¨#Ô.ä�n‰n˜XÓ&ˆØ×Ñ˜Ÿ™¨#Õ.r   c                 ó|   — t        d«      }t        j                  |«      }| j                  | j                  |«       y )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ˆä�n‰n˜XÓ&ˆØ×Ñ˜Ÿ™¨#Õ.r   c                 ó|   — t        d«      }t        j                  |«      }| j                  | j                  |«       y )Núecc_p192_private.pemrÆ   rª   s      r   Útest_import_private_pemz'TestImport_P192.test_import_private_pem/  ó1   € ÜÐ3Ó4ˆä�n‰n˜XÓ&ˆØ×Ñ˜×)Ñ)¨3Õ/r   c                 ó  — dD ]}  }t        d|z  «      }t        j                  |d«      }| j                  | j                  |«       t        j                  t        |«      d«      }| j                  | j                  |«       Œ y )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_encrypted5  óq   € ØFò 	4ˆDÜ Ð!>ÀÑ!EÓFˆHä—.‘. ¨8Ó4ˆCØ×Ñ˜T×-Ñ-¨sÔ3ä—.‘.¤ x£°)Ó<ˆCØ×Ñ˜T×-Ñ-¨sÕ3ñ	4r   c                 ó|   — t        d«      }t        j                  |«      }| j                  | j                  |«       y )Nzecc_p192_x509.pemrÖ   rª   s      r   Útest_import_x509_pemz$TestImport_P192.test_import_x509_pem?  ó/   € ÜÐ0Ó1ˆä�n‰n˜XÓ&ˆØ×Ñ˜Ÿ™¨#Õ.r   )r   r   r   r�   r¬   r´   r¸   r½   rÂ   rÇ   rË   rÎ   rÒ   r×   rÛ   rè   rë   Ú__classcell__©r£   s   @r   r™   r™   Ø   sJ   ø„ ôCò
/ò/ò/ò
0ò0ò0ò0ò0ò/ò/ò0ò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                 óZ   •— t        t        | �
  |i |¤Ž t        «       \  | _        | _        y r›   )rœ   rð   r�   rS   rž   rŸ   r    s      €r   r�   zTestImport_P224.__init__H  r¤   r   c                 óB  — t        d«      }t        j                  |«      }| j                  | j                  |«       t        j
                  |d «      }| j                  | j                  |«       t        j                  |«      }| j                  | j                  |«       y )Núecc_p224_public.derr§   rª   s      r   r¬   z&TestImport_P224.test_import_public_derL  r­   r   c                 ó–   — t        d«      }t        |«      }t        j                  |d¬«      }| j	                  | j
                  |«       y )Nró   ÚP224r°   r²   r³   s       r   r´   z-TestImport_P224.test_import_sec1_uncompressedX  rµ   r   c                 ó–   — t        d«      }t        |«      }t        j                  |d¬«      }| j	                  | j
                  |«       y )Núecc_p224_public_compressed.derrõ   r°   r²   r³   s       r   r¸   z+TestImport_P224.test_import_sec1_compressed^  r¹   r   c                 óD  — t        d«      }t        j                  |d «      }| j                  | j                  |«       t        j
                  |d «      }| j                  | j                  |«       t        j                  |«      }| j                  | j                  |«       y )Núecc_p224_private.derr¼   rª   s      r   r½   z'TestImport_P224.test_import_rfc5915_derd  r¾   r   c                 óà   — t        d«      }t        j                  |d «      }| j                  | j                  |«       t        j
                  |«      }| j                  | j                  |«       y )Núecc_p224_private_p8_clear.derrÁ   rª   s      r   rÂ   z/TestImport_P224.test_import_private_pkcs8_clearp  rÃ   r   c                 ó|   — t        d«      }t        j                  |«      }| j                  | j                  |«       y )Núecc_p224_private_p8_clear.pemrÆ   rª   s      r   rÇ   z6TestImport_P224.test_import_private_pkcs8_in_pem_cleary  rÈ   r   c                 óâ   — t        d«      }t        j                  |d«      }| j                  | j                  |«       t        j
                  |d«      }| j                  | j                  |«       y )Nzecc_p224_private_p8.derrÊ   rÁ   rª   s      r   rË   z5TestImport_P224.test_import_private_pkcs8_encrypted_1  rÌ   r   c                 ó~   — t        d«      }t        j                  |d«      }| j                  | j                  |«       y )Nzecc_p224_private_p8.pemrÊ   rÆ   rª   s      r   rÎ   z5TestImport_P224.test_import_private_pkcs8_encrypted_2ˆ  rÏ   r   c                 óâ   — t        d«      }t        j                  |d«      }| j                  | j                  |«       t        j
                  |d«      }| j                  | j                  |«       y )Nzecc_p224_private_p8_2.derrÊ   rÁ   rª   s      r   Ú%test_import_private_pkcs8_encrypted_3z5TestImport_P224.test_import_private_pkcs8_encrypted_3Ž  óY   € ÜÐ8Ó9ˆä�o‰o˜h¨Ó1ˆØ×Ñ˜×)Ñ)¨3Ô/ä�n‰n˜X xÓ0ˆØ×Ñ˜×)Ñ)¨3Õ/r   c                 óà   — t        d«      }t        j                  |d «      }| j                  | j                  |«       t        j
                  |«      }| j                  | j                  |«       y )Nzecc_p224_x509.derrÑ   rª   s      r   rÒ   z$TestImport_P224.test_import_x509_der—  rÓ   r   c                 ó|   — t        d«      }t        j                  |«      }| j                  | j                  |«       y )Núecc_p224_public.pemrÖ   rª   s      r   r×   z&TestImport_P224.test_import_public_pem   rØ   r   c                 ó|   — t        d«      }t        j                  |«      }| j                  | j                  |«       y )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                  | j                  |«       t        j                  t        |«      d«      }| j                  | j                  |«       Œ y )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                  | j                  |«       y )Nzecc_p224_x509.pemrÖ   rª   s      r   rë   z$TestImport_P224.test_import_x509_pem¶  rì   r   )r   r   r   r�   r¬   r´   r¸   r½   rÂ   rÇ   rË   rÎ   r  rÒ   r×   rÛ   rè   rë   rí   rî   s   @r   rð   rð   F  sO   ø„ ôCò
/ò/ò/ò
0ò0ò0ò0ò0ò0ò/ò/ò0ò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                 óZ   •— t        t        | �
  |i |¤Ž t        «       \  | _        | _        y r›   )rœ   r  r�   rX   rž   rŸ   r    s      €r   r�   zTestImport_P256.__init__¿  r¤   r   c                 óB  — t        d«      }t        j                  |«      }| j                  | j                  |«       t        j
                  |d «      }| j                  | j                  |«       t        j                  |«      }| j                  | j                  |«       y )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	                  | j
                  |«       y )Nr  ÚP256r°   r²   r³   s       r   r´   z-TestImport_P256.test_import_sec1_uncompressedÏ  rµ   r   c                 ó–   — t        d«      }t        |«      }t        j                  |d¬«      }| j	                  | j
                  |«       y )Núecc_p256_public_compressed.derr  r°   r²   r³   s       r   r¸   z+TestImport_P256.test_import_sec1_compressedÕ  r¹   r   c                 óD  — t        d«      }t        j                  |d «      }| j                  | j                  |«       t        j
                  |d «      }| j                  | j                  |«       t        j                  |«      }| j                  | j                  |«       y )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                  | j                  |«       t        j
                  |«      }| j                  | j                  |«       y )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                  | j                  |«       y )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                  | j                  |«       t        j
                  |d«      }| j                  | j                  |«       y )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                  | j                  |«       y )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                  | j                  |«       t        j
                  |d«      }| j                  | j                  |«       y )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                  | j                  |«       t        j
                  |«      }| j                  | j                  |«       y )Nzecc_p256_x509.derrÑ   rª   s      r   rÒ   z$TestImport_P256.test_import_x509_der  rÓ   r   c                 ó|   — t        d«      }t        j                  |«      }| j                  | j                  |«       y )Núecc_p256_public.pemrÖ   rª   s      r   r×   z&TestImport_P256.test_import_public_pem  rØ   r   c                 ó|   — t        d«      }t        j                  |«      }| j                  | j                  |«       y )Núecc_p256_private.pemrÆ   rª   s      r   rÛ   z'TestImport_P256.test_import_private_pem  rÜ   r   c                 óD   — t        d«      }t        j                  |«      }y )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   € ÜÐ<Ó=ˆÜ�n‰n˜XÓ&‰r   c                 ó  — dD ]}  }t        d|z  «      }t        j                  |d«      }| j                  | j                  |«       t        j                  t        |«      d«      }| j                  | j                  |«       Œ y )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                  | j                  |«       y )Nzecc_p256_x509.pemrÖ   rª   s      r   rë   z$TestImport_P256.test_import_x509_pem2  rì   r   c                 óÞ   — t        d«      }t        j                  |«      }| j                  | j                  |«       t        j
                  |«      }| j                  | j                  |«       y )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_public8  óS   € ÜÐ:Ó;ˆä×(Ñ(¨Ó2ˆØ×Ñ˜Ÿ™¨#Ô.ä�n‰n˜XÓ&ˆØ×Ñ˜Ÿ™¨#Õ.r   c                 ó¨   — t        d«      }t        d«      }t        j                  |«      }t        j                  |«      }| j                  ||«       y )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_clearA  óD   € ÜÐ;Ó<ˆÜ Ð!CÓDˆä�n‰n˜XÓ&ˆÜ—.‘. Ó.ˆØ×Ñ˜˜gÕ&r   c                 óª   — t        d«      }t        d«      }t        j                  |d«      }t        j                  |«      }| j                  ||«       y )Nz ecc_p256_private_openssh_pwd.pemz$ecc_p256_private_openssh_pwd_old.pemó   passwordr-  r.  s        r   Ú$test_import_openssh_private_passwordz4TestImport_P256.test_import_openssh_private_passwordI  óF   € ÜÐ?Ó@ˆÜ Ð!GÓHˆä�n‰n˜X {Ó3ˆÜ—.‘. Ó.ˆØ×Ñ˜˜gÕ&r   )r   r   r   r�   r¬   r´   r¸   r½   rÂ   rÇ   rË   rÎ   r  rÒ   r×   rÛ   r#  rè   rë   r*  r1  r5  rí   rî   s   @r   r  r  ½  sc   ø„ ôCò
/ò/ò/ò
0ò0ò0ò0ò0ò0ò/ò/ò0ò'ò
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                 óZ   •— t        t        | �
  |i |¤Ž t        «       \  | _        | _        y r›   )rœ   r8  r�   r^   rž   rŸ   r    s      €r   r�   zTestImport_P384.__init__T  r¤   r   c                 óB  — t        d«      }t        j                  |«      }| j                  | j                  |«       t        j
                  |d «      }| j                  | j                  |«       t        j                  |«      }| j                  | j                  |«       y )Núecc_p384_public.derr§   rª   s      r   r¬   z&TestImport_P384.test_import_public_derX  r­   r   c                 ó–   — t        d«      }t        |«      }t        j                  |d¬«      }| j	                  | j
                  |«       y )Nr;  ÚP384r°   r²   r³   s       r   r´   z-TestImport_P384.test_import_sec1_uncompressedd  rµ   r   c                 ó–   — t        d«      }t        |«      }t        j                  |d¬«      }| j	                  | j
                  |«       y )Núecc_p384_public_compressed.derr=  r°   r²   r³   s       r   r¸   z+TestImport_P384.test_import_sec1_compressedj  r¹   r   c                 óD  — t        d«      }t        j                  |d «      }| j                  | j                  |«       t        j
                  |d «      }| j                  | j                  |«       t        j                  |«      }| j                  | j                  |«       y )Núecc_p384_private.derr¼   rª   s      r   r½   z'TestImport_P384.test_import_rfc5915_derp  r¾   r   c                 óà   — t        d«      }t        j                  |d «      }| j                  | j                  |«       t        j
                  |«      }| j                  | j                  |«       y )Núecc_p384_private_p8_clear.derrÁ   rª   s      r   rÂ   z/TestImport_P384.test_import_private_pkcs8_clear|  rÃ   r   c                 ó|   — t        d«      }t        j                  |«      }| j                  | j                  |«       y )Núecc_p384_private_p8_clear.pemrÆ   rª   s      r   rÇ   z6TestImport_P384.test_import_private_pkcs8_in_pem_clear…  rÈ   r   c                 óâ   — t        d«      }t        j                  |d«      }| j                  | j                  |«       t        j
                  |d«      }| j                  | j                  |«       y )Nzecc_p384_private_p8.derrÊ   rÁ   rª   s      r   rË   z5TestImport_P384.test_import_private_pkcs8_encrypted_1‹  rÌ   r   c                 ó~   — t        d«      }t        j                  |d«      }| j                  | j                  |«       y )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                  | j                  |«       t        j
                  |d«      }| j                  | j                  |«       y )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                  | j                  |«       t        j
                  |«      }| j                  | j                  |«       y )Nzecc_p384_x509.derrÑ   rª   s      r   rÒ   z$TestImport_P384.test_import_x509_der£  rÓ   r   c                 ó|   — t        d«      }t        j                  |«      }| j                  | j                  |«       y )Núecc_p384_public.pemrÖ   rª   s      r   r×   z&TestImport_P384.test_import_public_pem¬  rØ   r   c                 ó|   — t        d«      }t        j                  |«      }| j                  | j                  |«       y )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                  | j                  |«       t        j                  t        |«      d«      }| j                  | j                  |«       Œ y )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                  | j                  |«       y )Nzecc_p384_x509.pemrÖ   rª   s      r   rë   z$TestImport_P384.test_import_x509_pemÂ  rì   r   c                 óÞ   — t        d«      }t        j                  |«      }| j                  | j                  |«       t        j
                  |«      }| j                  | j                  |«       y )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                  |«      }| j                  ||«       y )Nzecc_p384_private_openssh.pemz ecc_p384_private_openssh_old.pemr-  r.  s        r   r1  z1TestImport_P384.test_import_openssh_private_clearÑ  r2  r   c                 óª   — t        d«      }t        d«      }t        j                  |d«      }t        j                  |«      }| j                  ||«       y )Nz ecc_p384_private_openssh_pwd.pemz$ecc_p384_private_openssh_pwd_old.pemr4  r-  r.  s        r   r5  z4TestImport_P384.test_import_openssh_private_passwordÙ  r6  r   ©r   r   r   r�   r¬   r´   r¸   r½   rÂ   rÇ   rË   rÎ   r  rÒ   r×   rÛ   rè   rë   r*  r1  r5  rí   rî   s   @r   r8  r8  R  ó^   ø„ ôCò
/ò/ò/ò
0ò0ò0ò0ò0ò0ò/ò/ò0ò4ò/ò/ò'ö'r   r8  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                 óZ   •— t        t        | �
  |i |¤Ž t        «       \  | _        | _        y r›   )rœ   rW  r�   rc   rž   rŸ   r    s      €r   r�   zTestImport_P521.__init__ä  r¤   r   c                 óB  — t        d«      }t        j                  |«      }| j                  | j                  |«       t        j
                  |d «      }| j                  | j                  |«       t        j                  |«      }| j                  | j                  |«       y )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	                  | j
                  |«       y )NrZ  ÚP521r°   r²   r³   s       r   r´   z-TestImport_P521.test_import_sec1_uncompressedô  rµ   r   c                 ó–   — t        d«      }t        |«      }t        j                  |d¬«      }| j	                  | j
                  |«       y )Núecc_p521_public_compressed.derr\  r°   r²   r³   s       r   r¸   z+TestImport_P521.test_import_sec1_compressedú  r¹   r   c                 óD  — t        d«      }t        j                  |d «      }| j                  | j                  |«       t        j
                  |d «      }| j                  | j                  |«       t        j                  |«      }| j                  | j                  |«       y )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                  | j                  |«       t        j
                  |«      }| j                  | j                  |«       y )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                  | j                  |«       y )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                  | j                  |«       t        j
                  |d«      }| j                  | j                  |«       y )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                  | j                  |«       y )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                  | j                  |«       t        j
                  |d«      }| j                  | j                  |«       y )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                  | j                  |«       t        j
                  |«      }| j                  | j                  |«       y )Nzecc_p521_x509.derrÑ   rª   s      r   rÒ   z$TestImport_P521.test_import_x509_der3  rÓ   r   c                 ó|   — t        d«      }t        j                  |«      }| j                  | j                  |«       y )Núecc_p521_public.pemrÖ   rª   s      r   r×   z&TestImport_P521.test_import_public_pem<  rØ   r   c                 ó|   — t        d«      }t        j                  |«      }| j                  | j                  |«       y )Núecc_p521_private.pemrÆ   rª   s      r   rÛ   z'TestImport_P521.test_import_private_pemB  rÜ   r   c                 ó  — dD ]}  }t        d|z  «      }t        j                  |d«      }| j                  | j                  |«       t        j                  t        |«      d«      }| j                  | j                  |«       Œ y )NrÞ   zecc_p521_private_enc_%s.pemrÊ   rä   rå   ræ   s       r   rè   z1TestImport_P521.test_import_private_pem_encryptedH  ré   r   c                 ó|   — t        d«      }t        j                  |«      }| j                  | j                  |«       y )Nzecc_p521_x509.pemrÖ   rª   s      r   rë   z$TestImport_P521.test_import_x509_pemR  rì   r   c                 óÞ   — t        d«      }t        j                  |«      }| j                  | j                  |«       t        j
                  |«      }| j                  | j                  |«       y )Núecc_p521_public_openssh.txtr(  rª   s      r   r*  z*TestImport_P521.test_import_openssh_publicX  r+  r   c                 ó¨   — t        d«      }t        d«      }t        j                  |«      }t        j                  |«      }| j                  ||«       y )Nzecc_p521_private_openssh.pemz ecc_p521_private_openssh_old.pemr-  r.  s        r   r1  z1TestImport_P521.test_import_openssh_private_cleara  r2  r   c                 óª   — t        d«      }t        d«      }t        j                  |d«      }t        j                  |«      }| j                  ||«       y )Nz ecc_p521_private_openssh_pwd.pemz$ecc_p521_private_openssh_pwd_old.pemr4  r-  r.  s        r   r5  z4TestImport_P521.test_import_openssh_private_passwordi  r6  r   rT  rî   s   @r   rW  rW  â  rU  r   rW  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                 óZ   •— t        t        | �
  |i |¤Ž t        «       \  | _        | _        y r›   )rœ   rt  r�   rO   rž   rŸ   r    s      €r   r�   zTestExport_P192.__init__t  r¤   r   c                 ó.  — t        d«      }| j                  j                  d«      }| j                  ||«       | j                  j	                  d¬«      }| j                  ||«       | j                  j	                  dd¬«      }| j                  ||«       y )Nr¦   FÚDER©Úformat©ry  Úcompress©r0   rŸ   Ú_export_subjectPublicKeyInforŽ   Ú
export_key©r„   r«   Úencodeds      r   Ú#test_export_public_der_uncompressedz3TestExport_P192.test_export_public_der_uncompressedx  ó�   € ÜÐ2Ó3ˆà—/‘/×>Ñ>¸uÓEˆØ×Ñ˜ 7Ô+à—/‘/×,Ñ,°EÐ,Ó:ˆØ×Ñ˜ 7Ô+à—/‘/×,Ñ,°EÀEÐ,ÓJˆØ×Ñ˜ 7Õ+r   c                 ó¤   — t        d«      }t        j                  |«      }|j                  dd¬«      }t        d«      }| j	                  ||«       y )Nr¦   rw  Trz  r·   ©r0   r   r‚   r~  rŽ   ©r„   r«   Úpub_keyÚkey_file_compressedÚkey_file_compressed_refs        r   Ú!test_export_public_der_compressedz1TestExport_P192.test_export_public_der_compressed„  óO   € ÜÐ2Ó3ˆÜ—.‘. Ó*ˆØ%×0Ñ0¸ÈÐ0ÓMÐä"+Ð,LÓ"MÐØ×ÑÐ,Ð.EÕFr   c                 óŒ   — t        d«      }t        |«      }| j                  j                  d¬«      }| j	                  ||«       y )Nr¦   ÚSEC1rx  ©r0   r{   rŸ   r~  rŽ   ©r„   r«   rw   r€  s       r   Ú$test_export_public_sec1_uncompressedz4TestExport_P192.test_export_public_sec1_uncompressedŒ  ó>   € ÜÐ2Ó3ˆÜ+¨HÓ5ˆà—/‘/×,Ñ,°FÐ,Ó;ˆØ×Ñ˜ Õ(r   c                 ó¤   — t        d«      }| j                  j                  dd¬«      }t        d«      }t        |«      }| j	                  ||«       y )Nr¦   rŒ  Trz  r·   ©r0   rŸ   r~  r{   rŽ   ©r„   r«   r€  rˆ  rw   s        r   Ú"test_export_public_sec1_compressedz2TestExport_P192.test_export_public_sec1_compressed“  óM   € ÜÐ2Ó3ˆØ—/‘/×,Ñ,°FÀTÐ,ÓJˆä"+Ð,LÓ"MÐÜ+Ð,CÓDˆØ×Ñ˜ Õ(r   c                 óÐ   — t        d«      }| j                  j                  «       }| j                  ||«       | j                  j	                  dd¬«      }| j                  ||«       y )Nr»   rw  F©ry  Ú	use_pkcs8©r0   rž   Ú_export_rfc5915_private_derrŽ   r~  r  s      r   Útest_export_rfc5915_private_derz/TestExport_P192.test_export_rfc5915_private_der›  ó^   € ÜÐ3Ó4ˆà×"Ñ"×>Ñ>Ó@ˆØ×Ñ˜ 7Ô+ð ×"Ñ"×-Ñ-°UÀeÐ-ÓLˆØ×Ñ˜ 7Õ+r   c                 óÎ   — t        d«      }| j                  j                  «       }| j                  ||«       | j                  j	                  d¬«      }| j                  ||«       y )NrÀ   rw  rx  ©r0   rž   Ú_export_pkcs8rŽ   r~  r  s      r   Útest_export_private_pkcs8_clearz/TestExport_P192.test_export_private_pkcs8_clear¦  ó\   € ÜÐ<Ó=ˆà×"Ñ"×0Ñ0Ó2ˆØ×Ñ˜ 7Ô+ð ×"Ñ"×-Ñ-°UÐ-Ó;ˆØ×Ñ˜ 7Õ+r   c                 ó4  — | j                   j                  dd¬«      }| j                  t        t        j
                  |d «       t	        j
                  |d«      }| j                  | j                   |«       | j                   j                  ddd¬«      }t	        j                  |d«      }| j                  | j                   |«       | j                   j                  dddddi¬	«      }t	        j                  |d«      }| j                  | j                   |«       y )
NrÊ   ú PBKDF2WithHMAC-SHA1AndAES128-CBC©Ú
passphraseÚ
protectionrw  ©ry  r¥  r¦  z"PBKDF2WithHMAC-SHA224AndAES192-CBCÚiteration_counté{   ©ry  r¥  r¦  Úprot_params©	rž   rŸ  r€   r�   r   Ú_import_pkcs8rŽ   r~  r‚   ©r„   r€  Údecodeds      r   Ú#test_export_private_pkcs8_encryptedz3TestExport_P192.test_export_private_pkcs8_encrypted±  s  € Ø×"Ñ"×0Ñ0¸HØ?að 1ó cˆð 	×Ñœ*¤c×&7Ñ&7¸À$ÔGä×#Ñ# G¨XÓ6ˆØ×Ñ˜×)Ñ)¨7Ô3ð ×"Ñ"×-Ñ-°UØ;CØ;]ð .ó _ˆô —.‘. ¨(Ó3ˆØ×Ñ˜×)Ñ)¨7Ô3ð ×"Ñ"×-Ñ-°UØ;CØ;_Ø=NÈsÐ<Sð .ó Uˆô —.‘. ¨(Ó3ˆØ×Ñ˜×)Ñ)¨7Õ3r   c                 óL  — t        dd«      j                  «       }| j                  j                  d«      }| j	                  ||«       | j
                  j                  d¬«      }| j	                  ||«       | j
                  j                  dd¬«      }| j	                  ||«       y )NrÕ   ÚrtFÚPEMrx  rz  ©r0   Ústriprž   Ú_export_public_pemrŽ   rŸ   r~  r  s      r   Ú#test_export_public_pem_uncompressedz3TestExport_P192.test_export_public_pem_uncompressedÌ  ó�   € ÜÐ2°DÓ9×?Ñ?ÓAˆà×"Ñ"×5Ñ5°eÓ<ˆØ×Ñ˜ 7Ô+ð —/‘/×,Ñ,°EÐ,Ó:ˆØ×Ñ˜ 7Ô+à—/‘/×,Ñ,°EÀEÐ,ÓJˆØ×Ñ˜ 7Õ+r   c                 óà   — t        dd«      j                  «       }t        j                  |«      }|j	                  dd¬«      }t        dd«      j                  «       }| j                  ||«       y )NrÕ   r²  r³  Trz  zecc_p192_public_compressed.pem©r0   rµ  r   r‚   r~  rŽ   r…  s        r   Ú!test_export_public_pem_compressedz1TestExport_P192.test_export_public_pem_compressedÚ  óe   € ÜÐ2°DÓ9×?Ñ?ÓAˆÜ—.‘. Ó*ˆà%×0Ñ0¸ÈÐ0ÓMÐÜ"+Ð,LÈdÓ"S×"YÑ"YÓ"[Ðà×ÑÐ,Ð.EÕFr   c                 óð   — t        dd«      j                  «       }| j                  j                  d «      }| j	                  ||«       | j                  j                  dd¬«      }| j	                  ||«       y )NrÚ   r²  r³  Fr—  ©r0   rµ  rž   Ú_export_private_pemrŽ   r~  r  s      r   Útest_export_private_pem_clearz-TestExport_P192.test_export_private_pem_clearã  ók   € ÜÐ3°TÓ:×@Ñ@ÓBˆà×"Ñ"×6Ñ6°tÓ<ˆØ×Ñ˜ 7Ô+ð ×"Ñ"×-Ñ-°UÀeÐ-ÓLˆØ×Ñ˜ 7Õ+r   c                 ó–  — | j                   j                  d¬«      }| j                  t        t        j
                  |«       d|v sJ ‚t	        j
                  |d«      }| j                  | j                   |«       | j                   j                  ddd¬«      }t	        j
                  |d«      }| j                  | j                   |«       y ©Nrä   )r¥  zEC PRIVATE KEYrÊ   r³  F©ry  r¥  r˜  ©rž   r¿  r€   r�   r   r‚   rŽ   r~  r®  s      r   Ú!test_export_private_pem_encryptedz1TestExport_P192.test_export_private_pem_encryptedî  ó´   € Ø×"Ñ"×6Ñ6À)Ð6ÓLˆð 	×Ñœ*¤c§n¡n°gÔ>à 7Ñ*Ð*Ð*ä—.‘. ¨(Ó3ˆØ×Ñ˜×)Ñ)¨7Ô3ð ×"Ñ"×-Ñ-°UØ4<Ø38ð .ó :ˆô —.‘. ¨(Ó3ˆØ×Ñ˜×)Ñ)¨7Õ3r   c                 óì   — t        dd«      j                  «       }| j                  j                  «       }| j	                  ||«       | j                  j                  d¬«      }| j	                  ||«       y )NrÅ   r²  r³  rx  ©r0   rµ  rž   Ú(_export_private_clear_pkcs8_in_clear_pemrŽ   r~  r  s      r   Ú#test_export_private_pkcs8_and_pem_1z3TestExport_P192.test_export_private_pkcs8_and_pem_1  óg   € äÐ<¸dÓC×IÑIÓKˆà×"Ñ"×KÑKÓMˆØ×Ñ˜ 7Ô+ð ×"Ñ"×-Ñ-°UÐ-Ó;ˆØ×Ñ˜ 7Õ+r   c                 ó˜  — | j                   j                  dd¬«      }| j                  t        t        j
                  |«       d|v sJ ‚t	        j
                  |d«      }| j                  | j                   |«       | j                   j                  ddd¬«      }t	        j
                  |d«      }| j                  | j                   |«       y ©NrÊ   r£  )r¦  úENCRYPTED PRIVATE KEYr³  r§  ©rž   Ú,_export_private_encrypted_pkcs8_in_clear_pemr€   r�   r   r‚   rŽ   r~  r®  s      r   Ú#test_export_private_pkcs8_and_pem_2z3TestExport_P192.test_export_private_pkcs8_and_pem_2  ó¿   € à×"Ñ"×OÑOÐPXØ)Kð Pó Mˆð 	×Ñœ*¤c§n¡n°gÔ>à&¨'Ñ1Ð1Ð1ä—.‘. ¨(Ó3ˆØ×Ñ˜×)Ñ)¨7Ô3ð ×"Ñ"×-Ñ-°UØ4<Ø4Vð .ó Xˆô —.‘. ¨(Ó3ˆØ×Ñ˜×)Ñ)¨7Õ3r   c                 ó„  — | j                   j                  dddt        «       ¬«      }| j                   j                  dddt        «       ¬«      }| j                  ||«       | j                   j                  dddt        «       ¬«      }| j                   j                  dddt        «       ¬«      }| j                  ||«       y ©Nr³  rÊ   r£  ©ry  r¥  r¦  ÚrandfuncF©ry  r˜  r¥  r×  ©rž   r~  rt   rŽ   ©r„   Úencoded1Úencoded2s      r   Ú	test_prngzTestExport_P192.test_prng"  óÔ   € à×#Ñ#×.Ñ.°eØ5=Ø5WÜ3AÓ3Cð /ó Eˆð ×#Ñ#×.Ñ.°eØ5=Ø5WÜ3AÓ3Cð /ó Eˆð 	×Ñ˜ 8Ô,ð ×#Ñ#×.Ñ.°eØ49Ø5=Ü3AÓ3Cð /ó Eˆð ×#Ñ#×.Ñ.°eØ49Ø5=Ü3AÓ3Cð /ó Eˆð 	×Ñ˜ 8Õ,r   c                 óÄ   — | j                   j                  dddt        «       ¬«      }| j                   j                  dddt        «       ¬«      }| j                  ||«       y ©Nr³  FrÊ   rØ  rä   rÙ  rÚ  s      r   Útest_byte_or_string_passphrasez.TestExport_P192.test_byte_or_string_passphrase:  ój   € Ø×#Ñ#×.Ñ.°eØ49Ø5=Ü3AÓ3Cð /ó Eˆð ×#Ñ#×.Ñ.°eØ49Ø5>Ü3AÓ3Cð /ó Eˆð 	×Ñ˜ 8Õ,r   c                 ób  — | j                  t        | j                  j                  d¬«       | j                  j                  ddd¬«       | j                  t        | j                  j                  dd¬«       | j                  t        | j                  j                  dddd	¬
«       | j                  t        | j                  j                  dd¬«       | j                  t        | j                  j                  ddd¬«       | j                  t        | j                  j                  ddd	¬«       y ©NÚXXXrx  r³  rÊ   FrÄ  ©ry  r¥  rw  r£  ©ry  r¥  r˜  r¦  r—  r3   r§  ©r€   r�   rž   r~  rŸ   rƒ   s    r   Útest_error_params1z"TestExport_P192.test_error_params1E  ó  € à×Ñœ* d×&6Ñ&6×&AÑ&AÈ%ÐÔPð 	×Ñ×#Ñ#¨5¸XØ).ð 	$ô 	0à×Ñœ* d×&6Ñ&6×&AÑ&AÈ%Ø19ð 	ô 	;ð 	×Ñœ* d×&6Ñ&6×&AÑ&AÈ%Ø19Ø05Ø1Sð 	ô 	Uð 	×Ñœ* d§o¡o×&@Ñ&@ÈØ$)ð 	ô 	+ð 	×Ñœ* d×&6Ñ&6×&AÑ&AÈ%Ø13¸uð 	ô 	Fà×Ñœ* d×&6Ñ&6×&AÑ&AÈ%Ø13Ø1Sð 	õ 	Ur   c                 ó0  — d}d}t        j                  |«      }t        |j                  j                  dz  «      }| j                  |d«       t        j                  |«      }t        |j                  j                  dz  «      }| j                  |d«       y )Nzâ-----BEGIN EC PRIVATE KEY-----
        MF8CAQEEGHvhXmIW95JxZYfd4AUPu9BwknjuvS36aqAKBggqhkjOPQMBAaE0AzIA
        BLJZCyTu35DQIlqvMlBynn3k1Ig+dWfg/brRhHecxptrbloqFSP8ITw0CwbGF+2X
        5g==
        -----END EC PRIVATE KEY-----zâ-----BEGIN EC PRIVATE KEY-----
        MF8CAQEEGA3rAotUaWl7d47eX6tz9JmLzOMJwl13XaAKBggqhkjOPQMBAaE0AzIA
        BG4tHlTBBBGokcWmGm2xubVB0NvPC/Ou5AYwivs+3iCxmEjsymVAj6iiuX2Lxr6g
        /Q==
        -----END EC PRIVATE KEY-----é   iæ—  iý   ©r   r‚   ÚintÚpointQÚyrŽ   ©r„   Úpem1Úpem2Úkey1Úlow16Úkey2s         r   Útest_compressed_curvez%TestExport_P192.test_compressed_curve`  ó|   € ð(ˆð(ˆô �~‰~˜dÓ#ˆÜ�D—K‘K—M‘M EÑ)Ó*ˆØ×Ñ˜ Ô'ä�~‰~˜dÓ#ˆÜ�D—K‘K—M‘M EÑ)Ó*ˆØ×Ñ˜ Õ'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   rt  rt  r  sa   ø„ ôCò
,òGò)ò)ò	,ò	,ò4ò6,òGò	,ò4ò&
,ò4ò*-ò0	-òUö6(r   rt  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                 óZ   •— t        t        | �
  |i |¤Ž t        «       \  | _        | _        y r›   )rœ   rû  r�   rS   rž   rŸ   r    s      €r   r�   zTestExport_P224.__init__{  r¤   r   c                 ó.  — t        d«      }| j                  j                  d«      }| j                  ||«       | j                  j	                  d¬«      }| j                  ||«       | j                  j	                  dd¬«      }| j                  ||«       y )Nró   Frw  rx  rz  r|  r  s      r   r�  z3TestExport_P224.test_export_public_der_uncompressed  r‚  r   c                 ó¤   — t        d«      }t        j                  |«      }|j                  dd¬«      }t        d«      }| j	                  ||«       y )Nró   rw  Trz  r÷   r„  r…  s        r   r‰  z1TestExport_P224.test_export_public_der_compressed‹  rŠ  r   c                 óŒ   — t        d«      }t        |«      }| j                  j                  d¬«      }| j	                  ||«       y )Nró   rŒ  rx  r�  rŽ  s       r   r�  z4TestExport_P224.test_export_public_sec1_uncompressed“  r�  r   c                 ó¤   — t        d«      }| j                  j                  dd¬«      }t        d«      }t        |«      }| j	                  ||«       y )Nró   rŒ  Trz  r÷   r’  r“  s        r   r”  z2TestExport_P224.test_export_public_sec1_compressedš  r•  r   c                 óÐ   — t        d«      }| j                  j                  «       }| j                  ||«       | j                  j	                  dd¬«      }| j                  ||«       y )Nrù   rw  Fr—  r™  r  s      r   r›  z/TestExport_P224.test_export_rfc5915_private_der¢  rœ  r   c                 óÎ   — t        d«      }| j                  j                  «       }| j                  ||«       | j                  j	                  d¬«      }| j                  ||«       y )Nrû   rw  rx  rž  r  s      r   r   z/TestExport_P224.test_export_private_pkcs8_clear­  r¡  r   c                 ó”  — | j                   j                  dd¬«      }| j                  t        t        j
                  |d «       t	        j
                  |d«      }| j                  | j                   |«       | j                   j                  dddddi¬«      }t	        j                  |d«      }| j                  | j                   |«       y )	NrÊ   r£  r¤  rw  z&PBKDF2WithHMAC-SHA512-224AndAES128-CBCr¨  r©  rª  r¬  r®  s      r   r°  z3TestExport_P224.test_export_private_pkcs8_encrypted¸  s½   € Ø×"Ñ"×0Ñ0¸HØ?að 1ó cˆð 	×Ñœ*¤c×&7Ñ&7¸À$ÔGä×#Ñ# G¨XÓ6ˆØ×Ñ˜×)Ñ)¨7Ô3ð ×"Ñ"×-Ñ-°UØ;CØ;cØ=NÈsÐ<Sð .ó Uˆô —.‘. ¨(Ó3ˆØ×Ñ˜×)Ñ)¨7Õ3r   c                 óL  — t        dd«      j                  «       }| j                  j                  d«      }| j	                  ||«       | j
                  j                  d¬«      }| j	                  ||«       | j
                  j                  dd¬«      }| j	                  ||«       y )Nr  r²  Fr³  rx  rz  r´  r  s      r   r·  z3TestExport_P224.test_export_public_pem_uncompressedË  r¸  r   c                 óà   — t        dd«      j                  «       }t        j                  |«      }|j	                  dd¬«      }t        dd«      j                  «       }| j                  ||«       y )Nr  r²  r³  Trz  zecc_p224_public_compressed.pemrº  r…  s        r   r»  z1TestExport_P224.test_export_public_pem_compressedÙ  r¼  r   c                 óð   — t        dd«      j                  «       }| j                  j                  d «      }| j	                  ||«       | j                  j                  dd¬«      }| j	                  ||«       y )Nr  r²  r³  Fr—  r¾  r  s      r   rÀ  z-TestExport_P224.test_export_private_pem_clearâ  rÁ  r   c                 ó–  — | j                   j                  d¬«      }| j                  t        t        j
                  |«       d|v sJ ‚t	        j
                  |d«      }| j                  | j                   |«       | j                   j                  ddd¬«      }t	        j
                  |d«      }| j                  | j                   |«       y rÃ  rÅ  r®  s      r   rÆ  z1TestExport_P224.test_export_private_pem_encryptedí  rÇ  r   c                 óì   — t        dd«      j                  «       }| j                  j                  «       }| j	                  ||«       | j                  j                  d¬«      }| j	                  ||«       y )Nrý   r²  r³  rx  rÉ  r  s      r   rË  z3TestExport_P224.test_export_private_pkcs8_and_pem_1   rÌ  r   c                 ó˜  — | j                   j                  dd¬«      }| j                  t        t        j
                  |«       d|v sJ ‚t	        j
                  |d«      }| j                  | j                   |«       | j                   j                  ddd¬«      }t	        j
                  |d«      }| j                  | j                   |«       y rÎ  rÐ  r®  s      r   rÒ  z3TestExport_P224.test_export_private_pkcs8_and_pem_2  rÓ  r   c                 ó„  — | j                   j                  dddt        «       ¬«      }| j                   j                  dddt        «       ¬«      }| j                  ||«       | j                   j                  dddt        «       ¬«      }| j                   j                  dddt        «       ¬«      }| j                  ||«       y rÕ  rÙ  rÚ  s      r   rÝ  zTestExport_P224.test_prng!  rÞ  r   c                 óÄ   — | j                   j                  dddt        «       ¬«      }| j                   j                  dddt        «       ¬«      }| j                  ||«       y rà  rÙ  rÚ  s      r   rá  z.TestExport_P224.test_byte_or_string_passphrase9  râ  r   c                 ób  — | j                  t        | j                  j                  d¬«       | j                  j                  ddd¬«       | j                  t        | j                  j                  dd¬«       | j                  t        | j                  j                  dddd	¬
«       | j                  t        | j                  j                  dd¬«       | j                  t        | j                  j                  ddd¬«       | j                  t        | j                  j                  ddd	¬«       y rä  rè  rƒ   s    r   ré  z"TestExport_P224.test_error_params1D  rê  r   c                 ó0  — d}d}t        j                  |«      }t        |j                  j                  dz  «      }| j                  |d«       t        j                  |«      }t        |j                  j                  dz  «      }| j                  |d«       y )Nzî-----BEGIN EC PRIVATE KEY-----
        MGgCAQEEHPYicBNI9nd6wDKAX2l+f3A0Q+KWUQeMqSt5GoOgBwYFK4EEACGhPAM6
        AATCL6rUIDT14zXKoS5GQUMDP/tpc+1iI/FyEZikt2roKDkhU5q08srmqaysbfJN
        eUr7Xf1lnCVGag==
        -----END EC PRIVATE KEY-----zî-----BEGIN EC PRIVATE KEY-----
        MGgCAQEEHEFjbaVPLJ3ngZyCibCvT0RLUqSlHjC5Z3e0FtugBwYFK4EEACGhPAM6
        AAT5IvL2V6m48y1JLMGr6ZbnOqNKP9hMf9mxyVkk6/SaRoBoJVkXrNIpYL0P7DS7
        QF8E/OGeZRwvow==
        -----END EC PRIVATE KEY-----rì  ijF  i£/  rí  rñ  s         r   r÷  z%TestExport_P224.test_compressed_curve_  rø  r   rù  rî   s   @r   rû  rû  y  sa   ø„ ôCò
,òGò)ò)ò	,ò	,ò4ò&,òGò	,ò4ò&
,ò4ò*-ò0	-ò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                 óZ   •— t        t        | �
  |i |¤Ž t        «       \  | _        | _        y r›   )rœ   r  r�   rX   rž   rŸ   r    s      €r   r�   zTestExport_P256.__init__z  r¤   r   c                 ó.  — t        d«      }| j                  j                  d«      }| j                  ||«       | j                  j	                  d¬«      }| j                  ||«       | j                  j	                  dd¬«      }| j                  ||«       y )Nr  Frw  rx  rz  r|  r  s      r   r�  z3TestExport_P256.test_export_public_der_uncompressed~  r‚  r   c                 ó¤   — t        d«      }t        j                  |«      }|j                  dd¬«      }t        d«      }| j	                  ||«       y )Nr  rw  Trz  r  r„  r…  s        r   r‰  z1TestExport_P256.test_export_public_der_compressedŠ  rŠ  r   c                 óŒ   — t        d«      }t        |«      }| j                  j                  d¬«      }| j	                  ||«       y )Nr  rŒ  rx  r�  rŽ  s       r   r�  z4TestExport_P256.test_export_public_sec1_uncompressed’  r�  r   c                 ó¤   — t        d«      }| j                  j                  dd¬«      }t        d«      }t        |«      }| j	                  ||«       y )Nr  rŒ  Trz  r  r’  r“  s        r   r”  z2TestExport_P256.test_export_public_sec1_compressed™  r•  r   c                 óÐ   — t        d«      }| j                  j                  «       }| j                  ||«       | j                  j	                  dd¬«      }| j                  ||«       y )Nr  rw  Fr—  r™  r  s      r   r›  z/TestExport_P256.test_export_rfc5915_private_der¡  rœ  r   c                 óÎ   — t        d«      }| j                  j                  «       }| j                  ||«       | j                  j	                  d¬«      }| j                  ||«       y )Nr  rw  rx  rž  r  s      r   r   z/TestExport_P256.test_export_private_pkcs8_clear¬  r¡  r   c                 ó4  — | j                   j                  dd¬«      }| j                  t        t        j
                  |d «       t	        j
                  |d«      }| j                  | j                   |«       | j                   j                  ddd¬«      }t	        j                  |d«      }| j                  | j                   |«       | j                   j                  dddddi¬	«      }t	        j                  |d«      }| j                  | j                   |«       y )
NrÊ   r£  r¤  rw  r§  z&PBKDF2WithHMAC-SHA512-256AndAES128-CBCr¨  r©  rª  r¬  r®  s      r   r°  z3TestExport_P256.test_export_private_pkcs8_encrypted·  s  € Ø×"Ñ"×0Ñ0¸HØ?að 1ó cˆð 	×Ñœ*¤c×&7Ñ&7¸À$ÔGä×#Ñ# G¨XÓ6ˆØ×Ñ˜×)Ñ)¨7Ô3ð ×"Ñ"×-Ñ-°UØ;CØ;]ð .ó _ˆô —.‘. ¨(Ó3ˆØ×Ñ˜×)Ñ)¨7Ô3ð ×"Ñ"×-Ñ-°UØ;CØ;cØ=NÈsÐ<Sð .ó Uˆô —.‘. ¨(Ó3ˆØ×Ñ˜×)Ñ)¨7Õ3r   c                 óL  — t        dd«      j                  «       }| j                  j                  d«      }| j	                  ||«       | j
                  j                  d¬«      }| j	                  ||«       | j
                  j                  dd¬«      }| j	                  ||«       y )Nr  r²  Fr³  rx  rz  r´  r  s      r   r·  z3TestExport_P256.test_export_public_pem_uncompressedÒ  r¸  r   c                 óà   — t        dd«      j                  «       }t        j                  |«      }|j	                  dd¬«      }t        dd«      j                  «       }| j                  ||«       y )Nr  r²  r³  Trz  zecc_p256_public_compressed.pemrº  r…  s        r   r»  z1TestExport_P256.test_export_public_pem_compressedà  r¼  r   c                 óð   — t        dd«      j                  «       }| j                  j                  d «      }| j	                  ||«       | j                  j                  dd¬«      }| j	                  ||«       y )Nr   r²  r³  Fr—  r¾  r  s      r   rÀ  z-TestExport_P256.test_export_private_pem_clearé  rÁ  r   c                 ó–  — | j                   j                  d¬«      }| j                  t        t        j
                  |«       d|v sJ ‚t	        j
                  |d«      }| j                  | j                   |«       | j                   j                  ddd¬«      }t	        j
                  |d«      }| j                  | j                   |«       y rÃ  rÅ  r®  s      r   rÆ  z1TestExport_P256.test_export_private_pem_encryptedô  rÇ  r   c                 óì   — t        dd«      j                  «       }| j                  j                  «       }| j	                  ||«       | j                  j                  d¬«      }| j	                  ||«       y )Nr  r²  r³  rx  rÉ  r  s      r   rË  z3TestExport_P256.test_export_private_pkcs8_and_pem_1  rÌ  r   c                 ó˜  — | j                   j                  dd¬«      }| j                  t        t        j
                  |«       d|v sJ ‚t	        j
                  |d«      }| j                  | j                   |«       | j                   j                  ddd¬«      }t	        j
                  |d«      }| j                  | j                   |«       y rÎ  rÐ  r®  s      r   rÒ  z3TestExport_P256.test_export_private_pkcs8_and_pem_2  rÓ  r   c                 ó0  — t        dd«      }| j                  j                  d«      }| j                  ||«       | j                  j	                  d¬«      }| j                  ||«       | j                  j	                  dd¬«      }| j                  ||«       y )Nr'  r²  FÚOpenSSHrx  rz  ©r0   rŸ   Ú_export_opensshrŽ   r~  r  s      r   Ú test_export_openssh_uncompressedz0TestExport_P256.test_export_openssh_uncompressed(  ó…   € ÜÐ:¸DÓAˆà—/‘/×1Ñ1°%Ó8ˆØ×Ñ˜ 7Ô+ð —/‘/×,Ñ,°IÐ,Ó>ˆØ×Ñ˜ 7Ô+à—/‘/×,Ñ,°IÈÐ,ÓNˆØ×Ñ˜ 7Õ+r   c                 óè   — t        dd«      }t        j                  |«      }|j                  dd¬«      }t	        |«      t	        |«      kD  sJ ‚| j                  |t        j                  |«      «       y )Nr'  r²  r  Trz  ©r0   r   r‚   r~  ÚlenrŽ   ©r„   r«   r†  r‡  s       r   Útest_export_openssh_compressedz.TestExport_P256.test_export_openssh_compressed6  óe   € ÜÐ:¸DÓAˆÜ—.‘. Ó*ˆà%×0Ñ0¸	ÈDÐ0ÓQÐÜ�8‹}œsÐ#6Ó7Ò7Ð7Ð7Ø×Ñ˜¤#§.¡.Ð1DÓ"EÕFr   c                 ó„  — | j                   j                  dddt        «       ¬«      }| j                   j                  dddt        «       ¬«      }| j                  ||«       | j                   j                  dddt        «       ¬«      }| j                   j                  dddt        «       ¬«      }| j                  ||«       y rÕ  rÙ  rÚ  s      r   rÝ  zTestExport_P256.test_prng>  rÞ  r   c                 óÄ   — | j                   j                  dddt        «       ¬«      }| j                   j                  dddt        «       ¬«      }| j                  ||«       y rà  rÙ  rÚ  s      r   rá  z.TestExport_P256.test_byte_or_string_passphraseV  râ  r   c                 ó¼  — | j                  t        | j                  j                  d¬«       | j                  j                  ddd¬«       | j                  t        | j                  j                  dd¬«       | j                  t        | j                  j                  dddd	¬
«       | j                  t        | j                  j                  dd¬«       | j                  t        | j                  j                  ddd¬«       | j                  t        | j                  j                  ddd	¬«       | j                  t        | j                  j                  dd¬«       y ©Nrå  rx  r³  rÊ   FrÄ  ræ  rw  r£  rç  r—  r3   r§  r  rè  rƒ   s    r   ré  z"TestExport_P256.test_error_params1a  óI  € à×Ñœ* d×&6Ñ&6×&AÑ&AÈ%ÐÔPð 	×Ñ×#Ñ#¨5¸XØ).ð 	$ô 	0à×Ñœ* d×&6Ñ&6×&AÑ&AÈ%Ø19ð 	ô 	;ð 	×Ñœ* d×&6Ñ&6×&AÑ&AÈ%Ø19Ø05Ø1Sð 	ô 	Uð 	×Ñœ* d§o¡o×&@Ñ&@ÈØ$)ð 	ô 	+ð 	×Ñœ* d×&6Ñ&6×&AÑ&AÈ%Ø13¸uð 	ô 	Fà×Ñœ* d×&6Ñ&6×&AÑ&AÈ%Ø13Ø1Sð 	ô 	Uð
 	×Ñœ* d×&6Ñ&6×&AÑ&AÈ)Ø19ð 	õ 	;r   c                 ó0  — d}d}t        j                  |«      }t        |j                  j                  dz  «      }| j                  |d«       t        j                  |«      }t        |j                  j                  dz  «      }| j                  |d«       y )NzÍ-----BEGIN EC PRIVATE KEY-----
        MFcCAQEEIHTuc09jC51xXomV6MVCDN+DpAAvSmaJWZPTEHM6D5H1oAoGCCqGSM49
        AwEHoSQDIgACWFuGbHe8yJ43rir7PMTE9w8vHz0BSpXHq90Xi7/s+a0=
        -----END EC PRIVATE KEY-----zÍ-----BEGIN EC PRIVATE KEY-----
        MFcCAQEEIFggiPN9SQP+FAPTCPp08fRUz7rHp2qNBRcBJ1DXhb3ZoAoGCCqGSM49
        AwEHoSQDIgADLpph1trTIlVfa8NJvlMUPyWvL+wP+pW3BJITUL/wj9A=
        -----END EC PRIVATE KEY-----rì  iü¦  iWn  rí  rñ  s         r   r÷  z%TestExport_P256.test_compressed_curve�  s|   € ð(ˆð(ˆô
 �~‰~˜dÓ#ˆÜ�D—K‘K—M‘M EÑ)Ó*ˆØ×Ñ˜ Ô'ä�~‰~˜dÓ#ˆÜ�D—K‘K—M‘M EÑ)Ó*ˆØ×Ñ˜ Õ'r   ©r   r   r   r�   r�  r‰  r�  r”  r›  r   r°  r·  r»  rÀ  rÆ  rË  rÒ  r"  r(  rÝ  rá  ré  r÷  rí   rî   s   @r   r  r  x  sl   ø„ ôCò
,òGò)ò)ò	,ò	,ò4ò6,òGò	,ò4ò&
,ò4ò*,ò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                 óZ   •— t        t        | �
  |i |¤Ž t        «       \  | _        | _        y r›   )rœ   r2  r�   r^   rž   rŸ   r    s      €r   r�   zTestExport_P384.__init__š  r¤   r   c                 ó.  — t        d«      }| j                  j                  d«      }| j                  ||«       | j                  j	                  d¬«      }| j                  ||«       | j                  j	                  dd¬«      }| j                  ||«       y )Nr;  Frw  rx  rz  r|  r  s      r   r�  z3TestExport_P384.test_export_public_der_uncompressedž  r‚  r   c                 ó¤   — t        d«      }t        j                  |«      }|j                  dd¬«      }t        d«      }| j	                  ||«       y )Nr;  rw  Trz  r?  r„  r…  s        r   r‰  z1TestExport_P384.test_export_public_der_compressedª  rŠ  r   c                 óŒ   — t        d«      }t        |«      }| j                  j                  d¬«      }| j	                  ||«       y )Nr;  rŒ  rx  r�  rŽ  s       r   r�  z4TestExport_P384.test_export_public_sec1_uncompressed²  r�  r   c                 ó¤   — t        d«      }| j                  j                  dd¬«      }t        d«      }t        |«      }| j	                  ||«       y )Nr;  rŒ  Trz  r?  r’  r“  s        r   r”  z2TestExport_P384.test_export_public_sec1_compressed¹  r•  r   c                 óÐ   — t        d«      }| j                  j                  «       }| j                  ||«       | j                  j	                  dd¬«      }| j                  ||«       y )NrA  rw  Fr—  r™  r  s      r   r›  z/TestExport_P384.test_export_rfc5915_private_derÁ  rœ  r   c                 óÎ   — t        d«      }| j                  j                  «       }| j                  ||«       | j                  j	                  d¬«      }| j                  ||«       y )NrC  rw  rx  rž  r  s      r   r   z/TestExport_P384.test_export_private_pkcs8_clearÌ  r¡  r   c                 ó4  — | j                   j                  dd¬«      }| j                  t        t        j
                  |d «       t	        j
                  |d«      }| j                  | j                   |«       | j                   j                  ddd¬«      }t	        j                  |d«      }| j                  | j                   |«       | j                   j                  dddddi¬	«      }t	        j                  |d«      }| j                  | j                   |«       y ©
NrÊ   r£  r¤  rw  r§  z"PBKDF2WithHMAC-SHA384AndAES128-CBCr¨  r©  rª  r¬  r®  s      r   r°  z3TestExport_P384.test_export_private_pkcs8_encrypted×  ó  € Ø×"Ñ"×0Ñ0¸HØ7Yð 1ó [ˆð 	×Ñœ*¤c×&7Ñ&7¸À$ÔGä×#Ñ# G¨XÓ6ˆØ×Ñ˜×)Ñ)¨7Ô3ð ×"Ñ"×-Ñ-°UØ4<Ø4Vð .ó Xˆô —.‘. ¨(Ó3ˆØ×Ñ˜×)Ñ)¨7Ô3ð ×"Ñ"×-Ñ-°UØ4<Ø4XØ6GÈÐ5Lð .ó Nˆô —.‘. ¨(Ó3ˆØ×Ñ˜×)Ñ)¨7Õ3r   c                 óL  — t        dd«      j                  «       }| j                  j                  d«      }| j	                  ||«       | j
                  j                  d¬«      }| j	                  ||«       | j
                  j                  dd¬«      }| j	                  ||«       y )NrK  r²  Fr³  rx  rz  r´  r  s      r   r·  z3TestExport_P384.test_export_public_pem_uncompressedò  r¸  r   c                 óà   — t        dd«      j                  «       }t        j                  |«      }|j	                  dd¬«      }t        dd«      j                  «       }| j                  ||«       y )NrK  r²  r³  Trz  zecc_p384_public_compressed.pemrº  r…  s        r   r»  z1TestExport_P384.test_export_public_pem_compressed   r¼  r   c                 óð   — t        dd«      j                  «       }| j                  j                  d «      }| j	                  ||«       | j                  j                  dd¬«      }| j	                  ||«       y )NrM  r²  r³  Fr—  r¾  r  s      r   rÀ  z-TestExport_P384.test_export_private_pem_clear	  rÁ  r   c                 ó–  — | j                   j                  d¬«      }| j                  t        t        j
                  |«       d|v sJ ‚t	        j
                  |d«      }| j                  | j                   |«       | j                   j                  ddd¬«      }t	        j
                  |d«      }| j                  | j                   |«       y rÃ  rÅ  r®  s      r   rÆ  z1TestExport_P384.test_export_private_pem_encrypted  rÇ  r   c                 óì   — t        dd«      j                  «       }| j                  j                  «       }| j	                  ||«       | j                  j                  d¬«      }| j	                  ||«       y )NrE  r²  r³  rx  rÉ  r  s      r   rË  z3TestExport_P384.test_export_private_pkcs8_and_pem_1'  rÌ  r   c                 ó˜  — | j                   j                  dd¬«      }| j                  t        t        j
                  |«       d|v sJ ‚t	        j
                  |d«      }| j                  | j                   |«       | j                   j                  ddd¬«      }t	        j
                  |d«      }| j                  | j                   |«       y rÎ  rÐ  r®  s      r   rÒ  z3TestExport_P384.test_export_private_pkcs8_and_pem_23  rÓ  r   c                 ó0  — t        dd«      }| j                  j                  d«      }| j                  ||«       | j                  j	                  d¬«      }| j                  ||«       | j                  j	                  dd¬«      }| j                  ||«       y )NrQ  r²  Fr  rx  rz  r   r  s      r   r"  z0TestExport_P384.test_export_openssh_uncompressedH  r#  r   c                 óè   — t        dd«      }t        j                  |«      }|j                  dd¬«      }t	        |«      t	        |«      kD  sJ ‚| j                  |t        j                  |«      «       y )NrQ  r²  r  Trz  r%  r'  s       r   r(  z.TestExport_P384.test_export_openssh_compressedV  r)  r   c                 ó„  — | j                   j                  dddt        «       ¬«      }| j                   j                  dddt        «       ¬«      }| j                  ||«       | j                   j                  dddt        «       ¬«      }| j                   j                  dddt        «       ¬«      }| j                  ||«       y rÕ  rÙ  rÚ  s      r   rÝ  zTestExport_P384.test_prng^  rÞ  r   c                 óÄ   — | j                   j                  dddt        «       ¬«      }| j                   j                  dddt        «       ¬«      }| j                  ||«       y rà  rÙ  rÚ  s      r   rá  z.TestExport_P384.test_byte_or_string_passphrasev  râ  r   c                 ó¼  — | j                  t        | j                  j                  d¬«       | j                  j                  ddd¬«       | j                  t        | j                  j                  dd¬«       | j                  t        | j                  j                  dddd	¬
«       | j                  t        | j                  j                  dd¬«       | j                  t        | j                  j                  ddd¬«       | j                  t        | j                  j                  ddd	¬«       | j                  t        | j                  j                  dd¬«       y r-  rè  rƒ   s    r   ré  z"TestExport_P384.test_error_params1�  r.  r   c                 ó0  — d}d}t        j                  |«      }t        |j                  j                  dz  «      }| j                  |d«       t        j                  |«      }t        |j                  j                  dz  «      }| j                  |d«       y )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Ó#ˆÜ�D—K‘K—M‘M EÑ)Ó*ˆØ×Ñ˜ Ô'ä�~‰~˜dÓ#ˆÜ�D—K‘K—M‘M EÑ)Ó*ˆØ×Ñ˜ Õ'r   r0  rî   s   @r   r2  r2  ˜  sk   ø„ ôCò
,òGò)ò)ò	,ò	,ò4ò6,òGò	,ò4ò&
,ò4ò*,òGò-ò0	-ò;ö>(r   r2  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                 óZ   •— t        t        | �
  |i |¤Ž t        «       \  | _        | _        y r›   )rœ   rJ  r�   rc   rž   rŸ   r    s      €r   r�   zTestExport_P521.__init__¿  r¤   r   c                 ó.  — t        d«      }| j                  j                  d«      }| j                  ||«       | j                  j	                  d¬«      }| j                  ||«       | j                  j	                  dd¬«      }| j                  ||«       y )NrZ  Frw  rx  rz  r|  r  s      r   r�  z3TestExport_P521.test_export_public_der_uncompressedÃ  r‚  r   c                 ó¤   — t        d«      }t        j                  |«      }|j                  dd¬«      }t        d«      }| j	                  ||«       y )NrZ  rw  Trz  r^  r„  r…  s        r   r‰  z1TestExport_P521.test_export_public_der_compressedÏ  rŠ  r   c                 óè   — t        d«      }t        |«      }| j                  j                  d¬«      }| j	                  ||«       | j                  j                  d¬«      }| j	                  ||«       y )NrZ  rŒ  rx  Úrawr�  rŽ  s       r   r�  z4TestExport_P521.test_export_public_sec1_uncompressed×  se   € ÜÐ2Ó3ˆÜ+¨HÓ5ˆà—/‘/×,Ñ,°FÐ,Ó;ˆØ×Ñ˜ Ô(à—/‘/×,Ñ,°EÐ,Ó:ˆØ×Ñ˜ Õ(r   c                 ó  — t        d«      }| j                  j                  dd¬«      }t        d«      }t        |«      }| j	                  ||«       | j                  j                  dd¬«      }| j	                  ||«       y )NrZ  rŒ  Trz  r^  rO  r’  r“  s        r   r”  z2TestExport_P521.test_export_public_sec1_compressedá  sv   € ÜÐ2Ó3ˆØ—/‘/×,Ñ,°FÀTÐ,ÓJˆä"+Ð,LÓ"MÐÜ+Ð,CÓDˆØ×Ñ˜ Ô(à—/‘/×,Ñ,°EÀDÐ,ÓIˆØ×Ñ˜ Õ(r   c                 óÐ   — t        d«      }| j                  j                  «       }| j                  ||«       | j                  j	                  dd¬«      }| j                  ||«       y )Nr`  rw  Fr—  r™  r  s      r   r›  z/TestExport_P521.test_export_rfc5915_private_derì  rœ  r   c                 óÎ   — t        d«      }| j                  j                  «       }| j                  ||«       | j                  j	                  d¬«      }| j                  ||«       y )Nrb  rw  rx  rž  r  s      r   r   z/TestExport_P521.test_export_private_pkcs8_clear÷  r¡  r   c                 ó4  — | j                   j                  dd¬«      }| j                  t        t        j
                  |d «       t	        j
                  |d«      }| j                  | j                   |«       | j                   j                  ddd¬«      }t	        j                  |d«      }| j                  | j                   |«       | j                   j                  dddddi¬«      }t	        j                  |d«      }| j                  | j                   |«       y )	NrÊ   r£  r¤  rw  r§  r¨  r©  rª  r¬  r®  s      r   r°  z3TestExport_P521.test_export_private_pkcs8_encrypted  s  € Ø×"Ñ"×0Ñ0¸HØ7Yð 1ó [ˆð 	×Ñœ*¤c×&7Ñ&7¸À$ÔGä×#Ñ# G¨XÓ6ˆØ×Ñ˜×)Ñ)¨7Ô3ð ×"Ñ"×-Ñ-°UØ4<Ø4Vð .ó Xˆô —.‘. ¨(Ó3ˆØ×Ñ˜×)Ñ)¨7Ô3ð ×"Ñ"×-Ñ-°UØ4<Ø4VØ6GÈÐ5Lð .ó Nˆô —.‘. ¨(Ó3ˆØ×Ñ˜×)Ñ)¨7Õ3r   c                 óL  — t        dd«      j                  «       }| j                  j                  d«      }| j	                  ||«       | j
                  j                  d¬«      }| j	                  ||«       | j
                  j                  dd¬«      }| j	                  ||«       y )Nrj  r²  Fr³  rx  rz  r´  r  s      r   r·  z3TestExport_P521.test_export_public_pem_uncompressed  r¸  r   c                 óà   — t        dd«      j                  «       }t        j                  |«      }|j	                  dd¬«      }t        dd«      j                  «       }| j                  ||«       y )Nrj  r²  r³  Trz  zecc_p521_public_compressed.pemrº  r…  s        r   r»  z1TestExport_P521.test_export_public_pem_compressed+  r¼  r   c                 óð   — t        dd«      j                  «       }| j                  j                  d «      }| j	                  ||«       | j                  j                  dd¬«      }| j	                  ||«       y )Nrl  r²  r³  Fr—  r¾  r  s      r   rÀ  z-TestExport_P521.test_export_private_pem_clear4  rÁ  r   c                 ó–  — | j                   j                  d¬«      }| j                  t        t        j
                  |«       d|v sJ ‚t	        j
                  |d«      }| j                  | j                   |«       | j                   j                  ddd¬«      }t	        j
                  |d«      }| j                  | j                   |«       y rÃ  rÅ  r®  s      r   rÆ  z1TestExport_P521.test_export_private_pem_encrypted?  rÇ  r   c                 óì   — t        dd«      j                  «       }| j                  j                  «       }| j	                  ||«       | j                  j                  d¬«      }| j	                  ||«       y )Nrd  r²  r³  rx  rÉ  r  s      r   rË  z3TestExport_P521.test_export_private_pkcs8_and_pem_1R  rÌ  r   c                 ó˜  — | j                   j                  dd¬«      }| j                  t        t        j
                  |«       d|v sJ ‚t	        j
                  |d«      }| j                  | j                   |«       | j                   j                  ddd¬«      }t	        j
                  |d«      }| j                  | j                   |«       y rÎ  rÐ  r®  s      r   rÒ  z3TestExport_P521.test_export_private_pkcs8_and_pem_2^  rÓ  r   c                 ó0  — t        dd«      }| j                  j                  d«      }| j                  ||«       | j                  j	                  d¬«      }| j                  ||«       | j                  j	                  dd¬«      }| j                  ||«       y )Nrp  r²  Fr  rx  rz  r   r  s      r   r"  z0TestExport_P521.test_export_openssh_uncompresseds  r#  r   c                 óè   — t        dd«      }t        j                  |«      }|j                  dd¬«      }t	        |«      t	        |«      kD  sJ ‚| j                  |t        j                  |«      «       y )Nrp  r²  r  Trz  r%  r'  s       r   r(  z.TestExport_P521.test_export_openssh_compressed�  r)  r   c                 ó„  — | j                   j                  dddt        «       ¬«      }| j                   j                  dddt        «       ¬«      }| j                  ||«       | j                   j                  dddt        «       ¬«      }| j                   j                  dddt        «       ¬«      }| j                  ||«       y rÕ  rÙ  rÚ  s      r   rÝ  zTestExport_P521.test_prng‰  rÞ  r   c                 óÄ   — | j                   j                  dddt        «       ¬«      }| j                   j                  dddt        «       ¬«      }| j                  ||«       y rà  rÙ  rÚ  s      r   rá  z.TestExport_P521.test_byte_or_string_passphrase¡  râ  r   c                 ó¼  — | j                  t        | j                  j                  d¬«       | j                  j                  ddd¬«       | j                  t        | j                  j                  dd¬«       | j                  t        | j                  j                  dddd	¬
«       | j                  t        | j                  j                  dd¬«       | j                  t        | j                  j                  ddd¬«       | j                  t        | j                  j                  ddd	¬«       | j                  t        | j                  j                  dd¬«       y r-  rè  rƒ   s    r   ré  z"TestExport_P521.test_error_params1¬  r.  r   c                 ó0  — d}d}t        j                  |«      }t        |j                  j                  dz  «      }| j                  |d«       t        j                  |«      }t        |j                  j                  dz  «      }| j                  |d«       y )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ì  i¨8  iC–  rí  rñ  s         r   r÷  z%TestExport_P521.test_compressed_curveË  s|   € ð
 ˆð ˆô �~‰~˜dÓ#ˆÜ�D—K‘K—M‘M EÑ)Ó*ˆØ×Ñ˜ Ô'ä�~‰~˜dÓ#ˆÜ�D—K‘K—M‘M EÑ)Ó*ˆØ×Ñ˜ Õ'r   r0  rî   s   @r   rJ  rJ  ½  sk   ø„ ôCò
,òGò)ò	)ò	,ò	,ò4ò6,òGò	,ò4ò&
,ò4ò*,òGò-ò0	-ò;ö>(r   rJ  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                 óZ   •— t        t        | �
  |i |¤Ž t        «       \  | _        | _        y r›   )rœ   ra  r�   rl   rž   rŸ   r    s      €r   r�   zTestImport_Ed25519.__init__ì  ó*   ø€ ÜÔ  $Ñ0°$ÐA¸&ÒAÜ,CÓ,EÑ)ˆÔ˜$�/r   c                 óB  — t        d«      }t        j                  |«      }| j                  | j                  |«       t        j
                  |d «      }| j                  | j                  |«       t        j                  |«      }| j                  | j                  |«       y )Núecc_ed25519_public.derr§   rª   s      r   r¬   z)TestImport_Ed25519.test_import_public_derð  sw   € ÜÐ5Ó6ˆä×.Ñ.¨xÓ8ˆØ×Ñ˜Ÿ™¨#Ô.ä�o‰o˜h¨Ó-ˆØ×Ñ˜Ÿ™¨#Ô.ä�n‰n˜XÓ&ˆØ×Ñ˜Ÿ™¨#Õ.r   c                 óà   — t        d«      }t        j                  |d «      }| j                  | j                  |«       t        j
                  |«      }| j                  | j                  |«       y )Núecc_ed25519_private.derrÁ   rª   s      r   Útest_import_pkcs8_derz(TestImport_Ed25519.test_import_pkcs8_derü  sW   € ÜÐ6Ó7ˆä�o‰o˜h¨Ó-ˆØ×Ñ˜×)Ñ)¨3Ô/ä�n‰n˜XÓ&ˆØ×Ñ˜×)Ñ)¨3Õ/r   c                 óâ   — t        d«      }t        j                  |d«      }| j                  | j                  |«       t        j
                  |d«      }| j                  | j                  |«       y )Nzecc_ed25519_private_p8.derrÊ   rÁ   rª   s      r   rË   z8TestImport_Ed25519.test_import_private_pkcs8_encrypted_1	  óY   € ÜÐ9Ó:ˆä�o‰o˜h¨Ó1ˆØ×Ñ˜×)Ñ)¨3Ô/ä�n‰n˜X xÓ0ˆØ×Ñ˜×)Ñ)¨3Õ/r   c                 ó~   — t        d«      }t        j                  |d«      }| j                  | j                  |«       y )Nzecc_ed25519_private_p8.pemrÊ   rÆ   rª   s      r   rÎ   z8TestImport_Ed25519.test_import_private_pkcs8_encrypted_2	  s3   € ÜÐ9Ó:ˆä�n‰n˜X xÓ0ˆØ×Ñ˜×)Ñ)¨3Õ/r   c                 óâ   — t        d«      }t        j                  |d«      }| j                  | j                  |«       t        j
                  |d«      }| j                  | j                  |«       y )Nzecc_ed25519_private_p8_2.derrÊ   rÁ   rª   s      r   r  z8TestImport_Ed25519.test_import_private_pkcs8_encrypted_3	  sY   € ÜÐ;Ó<ˆä�o‰o˜h¨Ó1ˆØ×Ñ˜×)Ñ)¨3Ô/ä�n‰n˜X xÓ0ˆØ×Ñ˜×)Ñ)¨3Õ/r   c                 óà   — t        d«      }t        j                  |d «      }| j                  | j                  |«       t        j
                  |«      }| j                  | j                  |«       y )Nzecc_ed25519_x509.derrÑ   rª   s      r   rÒ   z'TestImport_Ed25519.test_import_x509_der	  sS   € ÜÐ3Ó4ˆä�o‰o˜h¨Ó-ˆØ×Ñ˜Ÿ™¨#Ô.ä�n‰n˜XÓ&ˆØ×Ñ˜Ÿ™¨#Õ.r   c                 ó|   — t        d«      }t        j                  |«      }| j                  | j                  |«       y )Núecc_ed25519_public.pemrÖ   rª   s      r   r×   z)TestImport_Ed25519.test_import_public_pem&	  s/   € ÜÐ5Ó6ˆä�n‰n˜XÓ&ˆØ×Ñ˜Ÿ™¨#Õ.r   c                 ó|   — t        d«      }t        j                  |«      }| j                  | j                  |«       y )Núecc_ed25519_private.pemrÆ   rª   s      r   rÛ   z*TestImport_Ed25519.test_import_private_pem,	  s1   € ÜÐ6Ó7ˆä�n‰n˜XÓ&ˆØ×Ñ˜×)Ñ)¨3Õ/r   c                 ó  — dD ]}  }t        d|z  «      }t        j                  |d«      }| j                  | j                  |«       t        j                  t        |«      d«      }| j                  | j                  |«       Œ y )N©rß   rà   rá   râ   zecc_ed25519_private_enc_%s.pemrÊ   rä   rå   ræ   s       r   rè   z4TestImport_Ed25519.test_import_private_pem_encrypted2	  sq   € Ø8ò 	4ˆDÜ Ð!AÀDÑ!HÓIˆHä—.‘. ¨8Ó4ˆCØ×Ñ˜T×-Ñ-¨sÔ3ä—.‘.¤ x£°)Ó<ˆCØ×Ñ˜T×-Ñ-¨sÕ3ñ	4r   c                 ó|   — t        d«      }t        j                  |«      }| j                  | j                  |«       y )Nzecc_ed25519_x509.pemrÖ   rª   s      r   rë   z'TestImport_Ed25519.test_import_x509_pem<	  ó/   € ÜÐ3Ó4ˆä�n‰n˜XÓ&ˆØ×Ñ˜Ÿ™¨#Õ.r   c                 óê   — t        d«      }t        j                  |«      }| j                  |j	                  «       «       t        j
                  |«      }| j                  |j	                  «       «       y )Núecc_ed25519_public_openssh.txt)r0   r   r)  ÚassertFalseÚhas_privater‚   rª   s      r   r*  z-TestImport_Ed25519.test_import_openssh_publicB	  sU   € ÜÐ=Ó>ˆÜ×(Ñ(¨Ó2ˆØ×Ñ˜Ÿ™Ó*Ô+Ü�n‰n˜XÓ&ˆØ×Ñ˜Ÿ™Ó*Õ+r   c                 óD   — t        d«      }t        j                  |«      }y )Nzecc_ed25519_private_openssh.pemr"  rª   s      r   r1  z4TestImport_Ed25519.test_import_openssh_private_clearI	  s   € ÜÐ>Ó?ˆÜ�n‰n˜XÓ&‰r   c                 óF   — t        d«      }t        j                  |d«      }y )Nz#ecc_ed25519_private_openssh_pwd.pemr4  r"  rª   s      r   r5  z7TestImport_Ed25519.test_import_openssh_private_passwordM	  s   € ÜÐBÓCˆÜ�n‰n˜X {Ó3‰r   )r   r   r   r�   r¬   rh  rË   rÎ   r  rÒ   r×   rÛ   rè   rë   r*  r1  r5  rí   rî   s   @r   ra  ra  ê  sJ   ø„ ôFò
/ò0ò0ò0ò0ò/ò/ò0ò4ò/ò,ò'ö4r   ra  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                 óZ   •— t        t        | �
  |i |¤Ž t        «       \  | _        | _        y r›   )rœ   r}  r�   rl   rž   rŸ   r    s      €r   r�   zTestExport_Ed25519.__init__T	  rc  r   c                 ó.  — t        d«      }| j                  j                  d«      }| j                  ||«       | j                  j	                  d¬«      }| j                  ||«       | j                  j	                  dd¬«      }| j                  ||«       y )Nre  Trw  rx  Frz  r|  r  s      r   Útest_export_public_derz)TestExport_Ed25519.test_export_public_derX	  s�   € ÜÐ5Ó6ˆà—/‘/×>Ñ>¸tÓDˆØ×Ñ˜ 7Ô+à—/‘/×,Ñ,°EÐ,Ó:ˆØ×Ñ˜ 7Ô+à—/‘/×,Ñ,°EÀEÐ,ÓJˆØ×Ñ˜ 7Õ+r   c                 ó\   — | j                  t        | j                  j                  d¬«       y ©NrŒ  rx  ©r€   r�   rŸ   r~  rƒ   s    r   Útest_export_public_sec1z*TestExport_Ed25519.test_export_public_sec1d	  ó!   € Ø×Ñœ* d§o¡o×&@Ñ&@ÈÐÕPr   c                 ó(  — t        d«      }| j                  j                  «       }| j                  ||«       | j                  j	                  d¬«      }| j                  ||«       | j                  t        | j                  j                  dd¬«       y )Nrg  rw  rx  Fr—  ©r0   rž   rŸ  rŽ   r~  r€   r�   r  s      r   r   z2TestExport_Ed25519.test_export_private_pkcs8_clearg	  s„   € ÜÐ6Ó7ˆà×"Ñ"×0Ñ0Ó2ˆØ×Ñ˜ 7Ô+ð ×"Ñ"×-Ñ-°UÐ-Ó;ˆØ×Ñ˜ 7Ô+à×Ñœ* d×&6Ñ&6×&AÑ&AØ!&°%ð 	õ 	9r   c                 ó4  — | j                   j                  dd¬«      }| j                  t        t        j
                  |d «       t	        j
                  |d«      }| j                  | j                   |«       | j                   j                  ddd¬«      }t	        j                  |d«      }| j                  | j                   |«       | j                   j                  dddddi¬	«      }t	        j                  |d«      }| j                  | j                   |«       y )
NrÊ   r£  r¤  rw  r§  z"PBKDF2WithHMAC-SHA256AndAES128-CBCr¨  r©  rª  r¬  r®  s      r   r°  z6TestExport_Ed25519.test_export_private_pkcs8_encryptedu	  r<  r   c                 ó°   — t        dd«      j                  «       }| j                  j                  d¬«      j                  «       }| j	                  ||«       y )Nro  r²  r³  rx  ©r0   rµ  rŸ   r~  rŽ   ©r„   Úkey_file_refr«   s      r   Útest_export_public_pemz)TestExport_Ed25519.test_export_public_pem�	  sH   € Ü Ð!9¸4Ó@×FÑFÓHˆØ—?‘?×-Ñ-°UÐ-Ó;×AÑAÓCˆØ×Ñ˜ xÕ0r   c                 ó°   — t        dd«      j                  «       }| j                  j                  d¬«      j                  «       }| j	                  ||«       y )Nrq  r²  r³  rx  ©r0   rµ  rž   r~  rŽ   r  s      r   rÀ  z0TestExport_Ed25519.test_export_private_pem_clear•	  sJ   € ÜÐ6¸Ó=×CÑCÓEˆØ×"Ñ"×-Ñ-°UÐ-Ó;×AÑAÓCˆØ×Ñ˜ 7Õ+r   c                 óú   — | j                   j                  ddd¬«      }| j                  t        t        j
                  |«       d|v sJ ‚t	        j
                  |d«      }| j                  | j                   |«       y ©Nr³  rä   r£  r§  rÏ  rÊ   ©rž   r~  r€   r�   r   r‚   rŽ   r®  s      r   rÆ  z4TestExport_Ed25519.test_export_private_pem_encryptedš	  ór   € Ø×"Ñ"×-Ñ-°UØ9BØ:\ð .ó ^ˆð
 	×Ñœ*¤c§n¡n°gÔ>à&¨'Ñ1Ð1Ð1ä—.‘. ¨(Ó3ˆØ×Ñ˜×)Ñ)¨7Õ3r   c                 óR  — t        dd«      }t        j                  |«      }dj                  |j	                  d«      d d «      }|j                  d«      }| j                  ||j                  «       «       |j                  d¬«      }| j                  ||j                  «       «       y )Nrw  r²  r2   r   Fr  rx  )	r0   r   r‚   r#   Úsplitr!  rŽ   rµ  r~  )r„   r«   ri   r€  s       r   Útest_export_opensshz&TestExport_Ed25519.test_export_openssh§	  sŠ   € ÜÐ=¸tÓDˆÜ—^‘^ HÓ-ˆ
Ø—8‘8˜HŸN™N¨3Ó/°°Ð3Ó4ˆà×,Ñ,¨UÓ3ˆØ×Ñ˜ 7§=¡=£?Ô3à×'Ñ'¨yÐ'Ó9ˆØ×Ñ˜ 7§=¡=£?Õ3r   c                 ór   — | j                   j                  d¬«      }| j                  |t        d«      «       y )NrO  rx  s@   bc85b8cf585d20a4de47e84d1cb6183f63d9ba96223fcbc886e363ffdea20cff©rŸ   r~  rŽ   r   ©r„   r€  s     r   Útest_export_rawz"TestExport_Ed25519.test_export_raw²	  s/   € Ø—/‘/×,Ñ,°EÐ,Ó:ˆØ×Ñ˜¤)Ð,oÓ"pÕqr   c                 óÄ   — | j                   j                  dddt        «       ¬«      }| j                   j                  dddt        «       ¬«      }| j                  ||«       y ©Nr³  rÊ   r£  rÖ  rÙ  rÚ  s      r   rÝ  zTestExport_Ed25519.test_prng¶	  ój   € à×#Ñ#×.Ñ.°eØ5=Ø5WÜ3AÓ3Cð /ó Eˆð ×#Ñ#×.Ñ.°eØ5=Ø5WÜ3AÓ3Cð /ó Eˆð 	×Ñ˜ 8Õ,r   c                 óÄ   — | j                   j                  dddt        «       ¬«      }| j                   j                  dddt        «       ¬«      }| j                  ||«       y ©Nr³  rÊ   r£  rÖ  rä   rÙ  rÚ  s      r   rá  z1TestExport_Ed25519.test_byte_or_string_passphraseÂ	  ój   € Ø×#Ñ#×.Ñ.°eØ5=Ø5WÜ3AÓ3Cð /ó Eˆð ×#Ñ#×.Ñ.°eØ5>Ø5WÜ3AÓ3Cð /ó Eˆð 	×Ñ˜ 8Õ,r   c                 óÈ  — | j                  t        | j                  j                  d¬«       | j                  t        | j                  j                  dd¬«       | j                  t        | j                  j                  ddd¬«       | j                  t        | j                  j                  ddd	¬
«       | j                  t        | j                  j                  dd¬«       y ©Nrå  rx  r³  rÊ   ræ  r3   FrÄ  r£  r§  r  ©r€   r�   rž   r~  rƒ   s    r   ré  z%TestExport_Ed25519.test_error_params1Í	  óÐ   € à×Ñœ* d×&6Ñ&6×&AÑ&AÈ%ÐÔPð 	×Ñœ* d×&6Ñ&6×&AÑ&AÈ%Ø19ð 	ô 	;ð 	×Ñœ* d×&6Ñ&6×&AÑ&AÈ%Ø13¸uð 	ô 	Fà×Ñœ* d×&6Ñ&6×&AÑ&AÈ%Ø13Ø1Sð 	ô 	Uð
 	×Ñœ* d×&6Ñ&6×&AÑ&AÈ)Ø19ð 	õ 	;r   ©r   r   r   r�   r€  r„  r   r°  r�  rÀ  rÆ  r–  rš  rÝ  rá  ré  rí   rî   s   @r   r}  r}  R	  sG   ø„ ôFò
,òQò9ò4ò61ò
,ò
4ò	4òrò
-ò	-ö;r   r}  c                   óZ   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zˆ xZS )ÚTestImport_Ed448c                 óZ   •— t        t        | �
  |i |¤Ž t        «       \  | _        | _        y r›   )rœ   r§  r�   rp   rž   rŸ   r    s      €r   r�   zTestImport_Ed448.__init__ã	  ó*   ø€ ÜÔ Ñ.°Ð?¸Ò?Ü,AÓ,CÑ)ˆÔ˜$�/r   c                 óB  — t        d«      }t        j                  |«      }| j                  | j                  |«       t        j
                  |d «      }| j                  | j                  |«       t        j                  |«      }| j                  | j                  |«       y )Núecc_ed448_public.derr§   rª   s      r   r¬   z'TestImport_Ed448.test_import_public_derç	  sw   € ÜÐ3Ó4ˆä×.Ñ.¨xÓ8ˆØ×Ñ˜Ÿ™¨#Ô.ä�o‰o˜h¨Ó-ˆØ×Ñ˜Ÿ™¨#Ô.ä�n‰n˜XÓ&ˆØ×Ñ˜Ÿ™¨#Õ.r   c                 óà   — t        d«      }t        j                  |d «      }| j                  | j                  |«       t        j
                  |«      }| j                  | j                  |«       y )Núecc_ed448_private.derrÁ   rª   s      r   rh  z&TestImport_Ed448.test_import_pkcs8_deró	  sW   € ÜÐ4Ó5ˆä�o‰o˜h¨Ó-ˆØ×Ñ˜×)Ñ)¨3Ô/ä�n‰n˜XÓ&ˆØ×Ñ˜×)Ñ)¨3Õ/r   c                 óâ   — t        d«      }t        j                  |d«      }| j                  | j                  |«       t        j
                  |d«      }| j                  | j                  |«       y )Nzecc_ed448_private_p8.derrÊ   rÁ   rª   s      r   rË   z6TestImport_Ed448.test_import_private_pkcs8_encrypted_1ü	  sY   € ÜÐ7Ó8ˆä�o‰o˜h¨Ó1ˆØ×Ñ˜×)Ñ)¨3Ô/ä�n‰n˜X xÓ0ˆØ×Ñ˜×)Ñ)¨3Õ/r   c                 ó~   — t        d«      }t        j                  |d«      }| j                  | j                  |«       y )Nzecc_ed448_private_p8.pemrÊ   rÆ   rª   s      r   rÎ   z6TestImport_Ed448.test_import_private_pkcs8_encrypted_2
  s3   € ÜÐ7Ó8ˆä�n‰n˜X xÓ0ˆØ×Ñ˜×)Ñ)¨3Õ/r   c                 óâ   — t        d«      }t        j                  |d«      }| j                  | j                  |«       t        j
                  |d«      }| j                  | j                  |«       y )Nzecc_ed448_private_p8_2.derrÊ   rÁ   rª   s      r   r  z6TestImport_Ed448.test_import_private_pkcs8_encrypted_3
  rj  r   c                 óà   — t        d«      }t        j                  |d «      }| j                  | j                  |«       t        j
                  |«      }| j                  | j                  |«       y )Nzecc_ed448_x509.derrÑ   rª   s      r   rÒ   z%TestImport_Ed448.test_import_x509_der
  sS   € ÜÐ1Ó2ˆä�o‰o˜h¨Ó-ˆØ×Ñ˜Ÿ™¨#Ô.ä�n‰n˜XÓ&ˆØ×Ñ˜Ÿ™¨#Õ.r   c                 ó|   — t        d«      }t        j                  |«      }| j                  | j                  |«       y )Núecc_ed448_public.pemrÖ   rª   s      r   r×   z'TestImport_Ed448.test_import_public_pem
  ru  r   c                 ó|   — t        d«      }t        j                  |«      }| j                  | j                  |«       y )Núecc_ed448_private.pemrÆ   rª   s      r   rÛ   z(TestImport_Ed448.test_import_private_pem#
  s1   € ÜÐ4Ó5ˆä�n‰n˜XÓ&ˆØ×Ñ˜×)Ñ)¨3Õ/r   c                 ó  — dD ]}  }t        d|z  «      }t        j                  |d«      }| j                  | j                  |«       t        j                  t        |«      d«      }| j                  | j                  |«       Œ y )Nrs  zecc_ed448_private_enc_%s.pemrÊ   rä   rå   ræ   s       r   rè   z2TestImport_Ed448.test_import_private_pem_encrypted)
  sq   € Ø8ò 	4ˆDÜ Ð!?À$Ñ!FÓGˆHä—.‘. ¨8Ó4ˆCØ×Ñ˜T×-Ñ-¨sÔ3ä—.‘.¤ x£°)Ó<ˆCØ×Ñ˜T×-Ñ-¨sÕ3ñ	4r   c                 ó|   — t        d«      }t        j                  |«      }| j                  | j                  |«       y )Nzecc_ed448_x509.pemrÖ   rª   s      r   rë   z%TestImport_Ed448.test_import_x509_pem3
  s/   € ÜÐ1Ó2ˆä�n‰n˜XÓ&ˆØ×Ñ˜Ÿ™¨#Õ.r   )r   r   r   r�   r¬   rh  rË   rÎ   r  rÒ   r×   rÛ   rè   rë   rí   rî   s   @r   r§  r§  á	  s;   ø„ ôDò
/ò0ò0ò0ò0ò/ò/ò0ò4ö/r   r§  c                   ó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                 óZ   •— t        t        | �
  |i |¤Ž t        «       \  | _        | _        y r›   )rœ   r¹  r�   rp   rž   rŸ   r    s      €r   r�   zTestExport_Ed448.__init__<
  r©  r   c                 ó.  — t        d«      }| j                  j                  d«      }| j                  ||«       | j                  j	                  d¬«      }| j                  ||«       | j                  j	                  dd¬«      }| j                  ||«       y )Nr«  Trw  rx  Frz  r|  r  s      r   r€  z'TestExport_Ed448.test_export_public_der@
  s�   € ÜÐ3Ó4ˆà—/‘/×>Ñ>¸tÓDˆØ×Ñ˜ 7Ô+à—/‘/×,Ñ,°EÐ,Ó:ˆØ×Ñ˜ 7Ô+à—/‘/×,Ñ,°EÀEÐ,ÓJˆØ×Ñ˜ 7Õ+r   c                 ó\   — | j                  t        | j                  j                  d¬«       y r‚  rƒ  rƒ   s    r   r„  z(TestExport_Ed448.test_export_public_sec1L
  r…  r   c                 ó(  — t        d«      }| j                  j                  «       }| j                  ||«       | j                  j	                  d¬«      }| j                  ||«       | j                  t        | j                  j                  dd¬«       y )Nr­  rw  rx  Fr—  r‡  r  s      r   r   z0TestExport_Ed448.test_export_private_pkcs8_clearO
  s„   € ÜÐ4Ó5ˆà×"Ñ"×0Ñ0Ó2ˆØ×Ñ˜ 7Ô+ð ×"Ñ"×-Ñ-°UÐ-Ó;ˆØ×Ñ˜ 7Ô+à×Ñœ* d×&6Ñ&6×&AÑ&AØ!&°%ð 	õ 	9r   c                 ó4  — | j                   j                  dd¬«      }| j                  t        t        j
                  |d «       t	        j
                  |d«      }| j                  | j                   |«       | j                   j                  ddd¬«      }t	        j                  |d«      }| j                  | j                   |«       | j                   j                  dddddi¬	«      }t	        j                  |d«      }| j                  | j                   |«       y r;  r¬  r®  s      r   r°  z4TestExport_Ed448.test_export_private_pkcs8_encrypted]
  r<  r   c                 ó°   — t        dd«      j                  «       }| j                  j                  d¬«      j                  «       }| j	                  ||«       y )Nr³  r²  r³  rx  rŠ  r‹  s      r   r�  z'TestExport_Ed448.test_export_public_pemy
  sH   € Ü Ð!7¸Ó>×DÑDÓFˆØ—?‘?×-Ñ-°UÐ-Ó;×AÑAÓCˆØ×Ñ˜ xÕ0r   c                 ó°   — t        dd«      j                  «       }| j                  j                  d¬«      j                  «       }| j	                  ||«       y )Nrµ  r²  r³  rx  r�  r  s      r   rÀ  z.TestExport_Ed448.test_export_private_pem_clear~
  sJ   € ÜÐ4°dÓ;×AÑAÓCˆØ×"Ñ"×-Ñ-°UÐ-Ó;×AÑAÓCˆØ×Ñ˜ 7Õ+r   c                 óú   — | j                   j                  ddd¬«      }| j                  t        t        j
                  |«       d|v sJ ‚t	        j
                  |d«      }| j                  | j                   |«       y r‘  r’  r®  s      r   rÆ  z2TestExport_Ed448.test_export_private_pem_encryptedƒ
  r“  r   c                 ó\   — | j                  t        | j                  j                  d¬«       y )Nr  rx  rƒ  rƒ   s    r   r–  z$TestExport_Ed448.test_export_openssh�
  s!   € à×Ñœ* d§o¡o×&@Ñ&@ÈÐÕSr   c                 ór   — | j                   j                  d¬«      }| j                  |t        d«      «       y )NrO  rx  sr   899014ddc0a0e1260cfc1085afdf952019e9fd63372e3e366e26dad32b176624884330a14617237e3081febd9d1a15069e7499433d2f55dd80r˜  r™  s     r   rš  z TestExport_Ed448.test_export_raw”
  s8   € Ø—/‘/×,Ñ,°EÐ,Ó:ˆØ×Ñ˜¤)ð  -bó  #cõ  	dr   c                 óÄ   — | j                   j                  dddt        «       ¬«      }| j                   j                  dddt        «       ¬«      }| j                  ||«       y rœ  rÙ  rÚ  s      r   rÝ  zTestExport_Ed448.test_prng˜
  r�  r   c                 óÄ   — | j                   j                  dddt        «       ¬«      }| j                   j                  dddt        «       ¬«      }| j                  ||«       y rŸ  rÙ  rÚ  s      r   rá  z/TestExport_Ed448.test_byte_or_string_passphrase¤
  r   r   c                 óÈ  — | j                  t        | j                  j                  d¬«       | j                  t        | j                  j                  dd¬«       | j                  t        | j                  j                  ddd¬«       | j                  t        | j                  j                  ddd	¬
«       | j                  t        | j                  j                  dd¬«       y r¢  r£  rƒ   s    r   ré  z#TestExport_Ed448.test_error_params1¯
  r¤  r   r¥  rî   s   @r   r¹  r¹  :
  sH   ø„ ôDò
,òQò9ò4ò81ò
,ò
4òTòdò
-ò	-ö;r   r¹  c                 óH  — 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  }|S # t         $ r Y |S w xY wr›   )r   r}   r™   rð   r  r8  rW  ra  r§  rt  rû  r  r2  rJ  r}  r¹  r   )ÚconfigÚtestss     r   Ú	get_testsrÊ  Ã
  s  € Ø€EØ	Œ_œZÓ(Ñ(€EðØ”¤Ó1Ñ1ˆØ”¤Ó1Ñ1ˆØ”¤Ó1Ñ1ˆØ”¤Ó1Ñ1ˆØ”¤Ó1Ñ1ˆØ”Ô!3Ó4Ñ4ˆØ”Ô!1Ó2Ñ2ˆà”¤Ó1Ñ1ˆØ”¤Ó1Ñ1ˆØ”¤Ó1Ñ1ˆØ”¤Ó1Ñ1ˆØ”¤Ó1Ñ1ˆØ”Ô!3Ó4Ñ4ˆØ”Ô!1Ó2Ñ2ˆð €Løô &ò ØØ€Lðús   –C<D Ä	D!Ä D!Ú__main__c                  ó<   — t        j                  t        «       «      S r›   )ÚunittestÚ	TestSuiterÊ  r   r   r   ú<lambda>rÏ  Ý
  s   € ”H×&Ñ&¤y£{Ó3€ r   Úsuite)ÚdefaultTest)Úrb);r   r   r&   rÍ  Úbinasciir   ÚCrypto.SelfTest.st_commonr   ÚCrypto.Util.py3compatr   r   r   ÚCrypto.Util.asn1r   r	   ÚCrypto.Util.numberr
   ÚCrypto.Hashr   ÚCrypto.PublicKeyr   ÚCrypto.PublicKey.ECCr   r!   r   ÚImportErrorr�   r   r0   r8   rO   rS   rX   r^   rc   rl   rp   rt   r{   ÚTestCaser}   r™   rð   r  r8  rW  rt  rû  r  r2  rJ  ra  r}  r§  r¹  rÊ  r   rÐ  Úmainr   r   r   ú<module>rÞ     s  ðó> 
Û Û Û Ý å 5ß @Ñ @ß 6Ý ,Ý  å  å 4ð#Û$Ø!Ðô
	 ô 	óò4Cò

Vò
Vò
Vò
Vò
Vò#ò#ò/òôd�×"Ñ"ô dôBk/�h×'Ñ'ô k/ô\t/�h×'Ñ'ô t/ônR'�h×'Ñ'ô R'ôjM'�h×'Ñ'ô M'ô`M'�h×'Ñ'ô M'ô`D(�h×'Ñ'ô D(ôN|(�h×'Ñ'ô |(ô~](�h×'Ñ'ô ](ô@	b(�h×'Ñ'ô b(ôJ	j(�h×'Ñ'ô j(ôZ	e4˜×*Ñ*ô e4ôPL;˜×*Ñ*ô L;ô^V/�x×(Ñ(ô V/ôrF;�x×(Ñ(ô F;ðR ó ð2 ˆzÒÙ3€EØ€H‡M�M˜gÖ&ð øðUU ò #Ø"Óð#ús   ÁG ÇG#Ç"G#