Ë
    (üàgÌ0  ã                   ó²  — 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 d dl	m
Z
mZ d dlmZmZ d dlmZ d dlmZ 	 d dlZd	Zdd„Zd„ Zd„ Zd„ Zd„ Z G d„ dej6                  «      Z G d„ dej6                  «      Z G d„ dej6                  «      Z G d„ dej6                  «      Zi fd„Z e!dk(  rd„ Z" ejF                  d¬«       yy# e$ r d
ZY Œ�w xY w)é    N)Ú	unhexlify)ÚSkipTest)Úlist_test_cases)ÚtostrÚFileNotFoundError)ÚDerSequenceÚDerBitString)ÚSHAKE128)ÚECCTFc                 ó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(Warning: skipping extended tests for ECCé   )Ú
stacklevelz
Missing %s)Útest_vectors_availabler   ÚerrnoÚENOENTÚosÚstrerrorÚpathÚdirnameÚpycryptodome_test_vectorsÚ__file__ÚjoinÚopenÚreadÚwarningsÚwarnÚUserWarningr   )Ú	file_nameÚmodeÚresultsÚ	dir_compsÚinit_dirÚfull_file_nameÚfile_ins          úl/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/Crypto/SelfTest/PublicKey/test_import_Curve448.pyÚ	load_filer'      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÷	%ð €Ü�| iÑ/Ó0Ð0à€N÷	%ð 	%ûô ò $Ü�‰Ð@Ü!Ø!"÷	$ð$ús*   „B;C6 Â?C*ÃC6 Ã*C3Ã/C6 Ã6%DÄDc                 óŒ   — dj                  | «      }t        t        |«      j                  dd«      j                  dd«      «      S )Nó    ú Ú ú:)r   r   r   Úreplace)ÚlinesÚexts     r&   Úcompactr0   3   s8   € Ø
�(‰(�5‹/€CÜ”U˜3“Z×'Ñ'¨¨RÓ0×8Ñ8¸¸bÓAÓBÐBr)   c                  ó¢   — t        d«      j                  «       } t        | dd «      }t        j                  d|¬«      }||j                  «       fS )Nzecc_x448.txté   é
   ÚCurve448)ÚcurveÚseed)r'   Ú
splitlinesr0   r   Ú	constructÚ
public_key)Ú	key_linesr6   Úkeys      r&   Úcreate_ref_keys_x448r<   8   sG   € Ü˜.Ó)×4Ñ4Ó6€IÜ�9˜Q˜r�?Ó#€DÜ
�-‰-˜j¨tÔ
4€CØ�—‘Ó!Ð"Ð"r)   c                  ó\   — t        j                  «       j                  d«      j                  S )Ns   SEED)r
   ÚnewÚupdater   © r)   r&   Úget_fixed_prngrA   ?   s   € Ü�<‰<‹>× Ñ  Ó)×.Ñ.Ð.r)   c                 óŒ   — t        «       }|j                  | «       t        «       }|j                  |d   «       |j                  S )Né   )r   Údecoder	   Úvalue)ÚdataÚseqÚbss      r&   Úextract_bitstring_from_spkirI   C   s5   € Ü
‹-€CØ‡J�JˆtÔÜ	‹€BØ‡I�Iˆc�!‰fÔØ�8‰8€Or)   c                   ó   — e 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_emptyM   s   € Ø×Ñœ*¤c§n¡n°cÕ:r)   c                 óh   — d}t        |«      }| j                  t        t        j                  |«       y )NÚ`302e020100300506032b656f042204207009906b64ec727d5cb5c23007bf0425b3fd79014c6cd62ca3dddfcf0f278f79)r   rM   rN   r   rO   )rQ   Úmismatch_hexÚmismatchs      r&   Útest_mismatchzTestImport.test_mismatchP   s'   € àyˆÜ˜\Ó*ˆØ×Ñœ*¤c§n¡n°hÕ?r)   N)Ú__name__Ú
__module__Ú__qualname__rR   rW   r@   r)   r&   rK   rK   K   s   „ ò;ó@r)   rK   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_Curve448c                 óZ   •— t        t        | �
  |i |¤Ž t        «       \  | _        | _        y ©N)Úsuperr\   Ú__init__r<   Úref_privateÚ
ref_public©rQ   ÚargsÚkwargsÚ	__class__s      €r&   r`   zTestImport_Curve448.__init__Y   ó*   ø€ ÜÔ! 4Ñ1°4ÐB¸6ÒBÜ,@Ó,BÑ)ˆÔ˜$�/r)   c                 óB  — t        d«      }t        j                  |«      }| j                  | j                  |«       t        j
                  |d «      }| j                  | j                  |«       t        j                  |«      }| j                  | j                  |«       y )Núecc_x448_public.der)r'   r   Ú_import_subjectPublicKeyInfoÚassertEqualrb   Ú_import_derrO   ©rQ   Úkey_filer;   s      r&   Útest_import_public_derz*TestImport_Curve448.test_import_public_der]   sw   € ÜÐ2Ó3ˆä×.Ñ.¨xÓ8ˆØ×Ñ˜Ÿ™¨#Ô.ä�o‰o˜h¨Ó-ˆØ×Ñ˜Ÿ™¨#Ô.ä�n‰n˜XÓ&ˆØ×Ñ˜Ÿ™¨#Õ.r)   c                 óà   — t        d«      }t        j                  |d «      }| j                  | j                  |«       t        j
                  |«      }| j                  | j                  |«       y )Núecc_x448_private.der©r'   r   rl   rk   ra   rO   rm   s      r&   Útest_import_pkcs8_derz)TestImport_Curve448.test_import_pkcs8_deri   sW   € ÜÐ3Ó4ˆä�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_x448_private_p8.derÚsecretrr   rm   s      r&   Ú%test_import_private_pkcs8_encrypted_1z9TestImport_Curve448.test_import_private_pkcs8_encrypted_1r   sY   € ÜÐ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_x448_private_p8.pemru   ©r'   r   rO   rk   ra   rm   s      r&   Ú%test_import_private_pkcs8_encrypted_2z9TestImport_Curve448.test_import_private_pkcs8_encrypted_2{   s3   € ÜÐ6Ó7ˆä�n‰n˜X xÓ0ˆØ×Ñ˜×)Ñ)¨3Õ/r)   c                 óâ   — t        d«      }t        j                  |d«      }| j                  | j                  |«       t        j
                  |d«      }| j                  | j                  |«       y )Nzecc_x448_private_p8_2.derru   rr   rm   s      r&   Ú%test_import_private_pkcs8_encrypted_3z9TestImport_Curve448.test_import_private_pkcs8_encrypted_3�   sY   € ÜÐ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_x448_x509.der)r'   r   rl   rk   rb   rO   rm   s      r&   Útest_import_x509_derz(TestImport_Curve448.test_import_x509_derŠ   sS   € ÜÐ0Ó1ˆä�o‰o˜h¨Ó-ˆØ×Ñ˜Ÿ™¨#Ô.ä�n‰n˜XÓ&ˆØ×Ñ˜Ÿ™¨#Õ.r)   c                 ó|   — t        d«      }t        j                  |«      }| j                  | j                  |«       y )Núecc_x448_public.pem©r'   r   rO   rk   rb   rm   s      r&   Útest_import_public_pemz*TestImport_Curve448.test_import_public_pem“   s/   € ÜÐ2Ó3ˆä�n‰n˜XÓ&ˆØ×Ñ˜Ÿ™¨#Õ.r)   c                 ó|   — t        d«      }t        j                  |«      }| j                  | j                  |«       y )Núecc_x448_private.pemrx   rm   s      r&   Útest_import_private_pemz+TestImport_Curve448.test_import_private_pem™   s1   € ÜÐ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Úaes256zecc_x448_private_enc_%s.pemru   ó   secret)r'   r   rO   rk   ra   r   )rQ   Úalgorn   r;   s       r&   Ú!test_import_private_pem_encryptedz5TestImport_Curve448.test_import_private_pem_encryptedŸ   sq   € Ø8ò 	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_x448_x509.pemr€   rm   s      r&   Útest_import_x509_pemz(TestImport_Curve448.test_import_x509_pem©   s/   € ÜÐ0Ó1ˆä�n‰n˜XÓ&ˆØ×Ñ˜Ÿ™¨#Õ.r)   )rX   rY   rZ   r`   ro   rs   rv   ry   r{   r}   r�   r„   rŒ   rŽ   Ú__classcell__©rf   s   @r&   r\   r\   W   s;   ø„ ôCò
/ò0ò0ò0ò0ò/ò/ò0ò4ö/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 )ÚTestExport_Curve448c                 óZ   •— t        t        | �
  |i |¤Ž t        «       \  | _        | _        y r^   )r_   r’   r`   r<   ra   rb   rc   s      €r&   r`   zTestExport_Curve448.__init__²   rg   r)   c                 ó.  — t        d«      }| j                  j                  d«      }| j                  ||«       | j                  j	                  d¬«      }| j                  ||«       | j                  j	                  dd¬«      }| j                  ||«       y )Nri   TÚDER©ÚformatF)r—   Úcompress)r'   rb   Ú_export_subjectPublicKeyInfork   Ú
export_key©rQ   rn   Úencodeds      r&   Útest_export_public_derz*TestExport_Curve448.test_export_public_der¶   s�   € ÜÐ2Ó3ˆà—/‘/×>Ñ>¸tÓDˆØ×Ñ˜ 7Ô+à—/‘/×,Ñ,°EÐ,Ó:ˆØ×Ñ˜ 7Ô+à—/‘/×,Ñ,°EÀEÐ,ÓJˆØ×Ñ˜ 7Õ+r)   c                 ó(  — t        d«      }| j                  j                  «       }| j                  ||«       | j                  j	                  d¬«      }| j                  ||«       | j                  t        | j                  j                  dd¬«       y )Nrq   r•   r–   F)r—   Ú	use_pkcs8)r'   ra   Ú_export_pkcs8rk   rš   rM   rN   r›   s      r&   Útest_export_private_pkcs8_clearz3TestExport_Curve448.test_export_private_pkcs8_clearÂ   s„   € ÜÐ3Ó4ˆà×"Ñ"×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 )
Nru   ú PBKDF2WithHMAC-SHA1AndAES128-CBC)Ú
passphraseÚ
protectionr•   ©r—   r¤   r¥   z"PBKDF2WithHMAC-SHA256AndAES128-CBCÚiteration_counté{   )r—   r¤   r¥   Úprot_params)	ra   r    rM   rN   r   Ú_import_pkcs8rk   rš   rO   ©rQ   rœ   Údecodeds      r&   Ú#test_export_private_pkcs8_encryptedz7TestExport_Curve448.test_export_private_pkcs8_encryptedÐ   s  € Ø×"Ñ"×0Ñ0¸HØ<^ð 1ó `ˆð 	×Ñœ*¤c×&7Ñ&7¸À$ÔGä×#Ñ# G¨XÓ6ˆØ×Ñ˜×)Ñ)¨7Ô3ð ×"Ñ"×-Ñ-°UØ9AØ9[ð .ó ]ˆô —.‘. ¨(Ó3ˆØ×Ñ˜×)Ñ)¨7Ô3ð ×"Ñ"×-Ñ-°UØ9AØ9]Ø;LÈcÐ:Rð .ó Tˆô —.‘. ¨(Ó3ˆØ×Ñ˜×)Ñ)¨7Õ3r)   c                 ó°   — t        dd«      j                  «       }| j                  j                  d¬«      j                  «       }| j	                  ||«       y )Nr   ÚrtÚPEMr–   )r'   Ústriprb   rš   rk   )rQ   Úkey_file_refrn   s      r&   Útest_export_public_pemz*TestExport_Curve448.test_export_public_pemë   sH   € Ü Ð!6¸Ó=×CÑCÓEˆØ—?‘?×-Ñ-°UÐ-Ó;×AÑAÓCˆØ×Ñ˜ xÕ0r)   c                 ó°   — t        dd«      j                  «       }| j                  j                  d¬«      j                  «       }| j	                  ||«       y )Nrƒ   r¯   r°   r–   )r'   r±   ra   rš   rk   r›   s      r&   Útest_export_private_pem_clearz1TestExport_Curve448.test_export_private_pem_clearð   sJ   € ÜÐ3°TÓ:×@Ñ@ÓBˆØ×"Ñ"×-Ñ-°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¦   zENCRYPTED PRIVATE KEYru   )ra   rš   rM   rN   r   rO   rk   r«   s      r&   Ú!test_export_private_pem_encryptedz5TestExport_Curve448.test_export_private_pem_encryptedõ   sr   € Ø×"Ñ"×-Ñ-°UØ9BØ9[ð .ó ]ˆð
 	×Ñœ*¤c§n¡n°gÔ>à&¨'Ñ1Ð1Ð1ä—.‘. ¨(Ó3ˆØ×Ñ˜×)Ñ)¨7Õ3r)   c                 ó¨   — | j                   j                  d¬«      }| j                  t        |«      d«       | j                  |t	        d«      «       y )NÚrawr–   é8   sp   e2abae24ab8f65b01969e61f84fee615b525f413a90e3d727f71d0ffe60fb1d0a1a0285f2a7fd88789206e0aa4f3e9fcb9e4ba5d644e691e)rb   rš   rk   Úlenr   )rQ   rœ   s     r&   Útest_export_rawz#TestExport_Curve448.test_export_raw  sL   € Ø—/‘/×,Ñ,°EÐ,Ó:ˆØ×Ñœ˜W› rÔ*Ø×Ñ˜¤)ð  -`ó  #aõ  	br)   c                 óÄ   — | j                   j                  dddt        «       ¬«      }| j                   j                  dddt        «       ¬«      }| j                  ||«       y )Nr°   ru   r£   ©r—   r¤   r¥   Úrandfunc©ra   rš   rA   rk   ©rQ   Úencoded1Úencoded2s      r&   Ú	test_prngzTestExport_Curve448.test_prng  sj   € à×#Ñ#×.Ñ.°eØ:BØ:\Ü8FÓ8Hð /ó Jˆð ×#Ñ#×.Ñ.°eØ:BØ:\Ü8FÓ8Hð /ó Jˆð 	×Ñ˜ 8Õ,r)   c                 óÄ   — | j                   j                  dddt        «       ¬«      }| j                   j                  dddt        «       ¬«      }| j                  ||«       y )Nr°   ru   r£   r¾   rŠ   rÀ   rÁ   s      r&   Útest_byte_or_string_passphrasez2TestExport_Curve448.test_byte_or_string_passphrase  sj   € Ø×#Ñ#×.Ñ.°eØ:BØ:\Ü8FÓ8Hð /ó Jˆð ×#Ñ#×.Ñ.°eØ:CØ:\Ü8FÓ8Hð /ó Jˆð 	×Ñ˜ 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 )NÚXXXr–   r°   ru   )r—   r¤   r+   F)r—   r¤   rŸ   r£   r¦   ÚOpenSSH)rM   rN   ra   rš   rP   s    r&   Útest_error_params1z&TestExport_Curve448.test_error_params1  sÚ   € à×Ñœ* d×&6Ñ&6×&AÑ&AÈ%ÐÔPð 	×Ñœ*Ø×*Ñ*×5Ñ5Ø!&Ø%-ð 	ô 	/ð 	×Ñœ*Ø×*Ñ*×5Ñ5Ø!&Ø%'Ø$)ð	 	ô 	+ð
 	×Ñœ*Ø×*Ñ*×5Ñ5Ø!&Ø%'Ø%Gð	 	ô 	Ið 	×Ñœ*Ø×*Ñ*×5Ñ5Ø!*Ø%-ð 	õ 	/r)   )rX   rY   rZ   r`   r�   r¡   r­   r³   rµ   r·   r¼   rÄ   rÆ   rÊ   r�   r�   s   @r&   r’   r’   °   s<   ø„ ôCò
,ò9ò4ò61ò
,ò
4òbò

-ò	-ö/r)   r’   c                   ó   — e Zd Zd„ Zy)ÚTestImport_Curve448_Weakc                 ó  — ddz  ddz  z
  dz
  }dd|dz
  ||dz   f}|D ]f  }t        j                  |d«      }t        j                  |d¬«      }|j                  d¬	«      }| j	                  t
        t         j                  |«       Œh y )
Nr   iÀ  éà   rC   r   Úcurve448)Úpointr5   r°   r–   )r   Ú	EccXPointÚEccKeyrš   rM   rN   rO   )rQ   ÚpÚweak_xÚxÚlow_order_pointÚweak_keyrœ   s          r&   Útest_weak_pemz&TestImport_Curve448_Weak.test_weak_pem=  s”   € àˆs‰F�Q˜‘V‰O˜aÑˆØØØ�a‘%ØØ�a‘%ð	ˆð ò 	'ˆAÜ!Ÿm™m¨A¨zÓ:ˆOÜ—z‘z¨¸zÔJˆHØ×)Ñ)°Ð)Ó7ˆGà×ÑœjÜ!Ÿn™nØ%õ'ñ	'r)   N)rX   rY   rZ   rØ   r@   r)   r&   rÌ   rÌ   ;  s   „ ó'r)   rÌ   c                 ó¼   — g }	 |t        t        «      z  }|t        t        «      z  }|t        t        «      z  }|t        t        «      z  }|S # t
        $ r Y |S w xY wr^   )r   rK   r\   r’   rÌ   r   )ÚconfigÚtestss     r&   Ú	get_testsrÜ   P  sk   € Ø€EðØ”¤Ó,Ñ,ˆØ”Ô!4Ó5Ñ5ˆØ”Ô!4Ó5Ñ5ˆØ”Ô!9Ó:Ñ:ˆð €Løô ò ØØ€Lðús   „AA Á	AÁAÚ__main__c                  ó<   — t        j                  t        «       «      S r^   )ÚunittestÚ	TestSuiterÜ   r@   r)   r&   Úsuitrá   ]  s   € Ü×!Ñ!¤)£+Ó.Ð.r)   Úsuite)ÚdefaultTest)Úrb)$r   r   r   rß   Úbinasciir   r   ÚCrypto.SelfTest.st_commonr   ÚCrypto.Util.py3compatr   r   ÚCrypto.Util.asn1r   r	   ÚCrypto.Hashr
   ÚCrypto.PublicKeyr   r   r   ÚImportErrorr'   r0   r<   rA   rI   ÚTestCaserK   r\   r’   rÌ   rÜ   rX   rá   Úmainr@   r)   r&   ú<module>rî      sä   ðó 
Û Û Û Ý Ý å 5ß :ß 6Ý  å  ð#Û$Ø!Ðó
ò4Cò
#ò/òô	@�×"Ñ"ô 	@ôV/˜(×+Ñ+ô V/ôrH/˜(×+Ñ+ô H/ôV'˜x×0Ñ0ô 'ð* ó 	ð ˆzÒò/à€H‡M�M˜gÖ&ð øðO
 ò #Ø"Òð#ús   Á C ÃCÃC