Ë
    (üàg8  ã                   ó²  — 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          ún/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/Crypto/SelfTest/PublicKey/test_import_Curve25519.pyÚ	load_filer'   4   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   N   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_x25519.txté   é   Ú
Curve25519)ÚcurveÚseed)r'   Ú
splitlinesr0   r   Ú	constructÚ
public_key)Ú	key_linesr6   Úkeys      r&   Úcreate_ref_keys_x25519r<   S   sH   € ÜÐ*Ó+×6Ñ6Ó8€IÜ�9˜Q˜q�>Ó"€DÜ
�-‰-˜l°Ô
6€CØ�—‘Ó!Ð"Ð"r)   c                  ó\   — t        j                  «       j                  d«      j                  S )Ns   SEED)r
   ÚnewÚupdater   © r)   r&   Úget_fixed_prngrA   Z   s   € Ü�<‰<‹>× Ñ  Ó)×.Ñ.Ð.r)   c                 óŒ   — t        «       }|j                  | «       t        «       }|j                  |d   «       |j                  S )Né   )r   Údecoder	   Úvalue)ÚdataÚseqÚbss      r&   Úextract_bitstring_from_spkirI   ^   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_emptyh   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_mismatchk   s'   € àyˆÜ˜\Ó*ˆØ×Ñœ*¤c§n¡n°hÕ?r)   N)Ú__name__Ú
__module__Ú__qualname__rR   rW   r@   r)   r&   rK   rK   f   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_Curve25519c                 óZ   •— t        t        | �
  |i |¤Ž t        «       \  | _        | _        y ©N)Úsuperr\   Ú__init__r<   Úref_privateÚ
ref_public©rQ   ÚargsÚkwargsÚ	__class__s      €r&   r`   zTestImport_Curve25519.__init__t   ó*   ø€ ÜÔ# TÑ3°TÐD¸VÒDÜ,BÓ,DÑ)ˆÔ˜$�/r)   c                 óB  — t        d«      }t        j                  |«      }| j                  | j                  |«       t        j
                  |d «      }| j                  | j                  |«       t        j                  |«      }| j                  | j                  |«       y )Núecc_x25519_public.der)r'   r   Ú_import_subjectPublicKeyInfoÚassertEqualrb   Ú_import_derrO   ©rQ   Úkey_filer;   s      r&   Útest_import_public_derz,TestImport_Curve25519.test_import_public_derx   sw   € ÜÐ4Ó5ˆä×.Ñ.¨xÓ8ˆØ×Ñ˜Ÿ™¨#Ô.ä�o‰o˜h¨Ó-ˆØ×Ñ˜Ÿ™¨#Ô.ä�n‰n˜XÓ&ˆØ×Ñ˜Ÿ™¨#Õ.r)   c                 óà   — t        d«      }t        j                  |d «      }| j                  | j                  |«       t        j
                  |«      }| j                  | j                  |«       y )Núecc_x25519_private.der©r'   r   rl   rk   ra   rO   rm   s      r&   Útest_import_pkcs8_derz+TestImport_Curve25519.test_import_pkcs8_der„   sW   € ÜÐ5Ó6ˆä�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_x25519_private_p8.derÚsecretrr   rm   s      r&   Ú%test_import_private_pkcs8_encrypted_1z;TestImport_Curve25519.test_import_private_pkcs8_encrypted_1�   sY   € ÜÐ8Ó9ˆä�o‰o˜h¨Ó1ˆØ×Ñ˜×)Ñ)¨3Ô/ä�n‰n˜X xÓ0ˆØ×Ñ˜×)Ñ)¨3Õ/r)   c                 ó~   — t        d«      }t        j                  |d«      }| j                  | j                  |«       y )Nzecc_x25519_private_p8.pemru   ©r'   r   rO   rk   ra   rm   s      r&   Ú%test_import_private_pkcs8_encrypted_2z;TestImport_Curve25519.test_import_private_pkcs8_encrypted_2–   s3   € ÜÐ8Ó9ˆä�n‰n˜X xÓ0ˆØ×Ñ˜×)Ñ)¨3Õ/r)   c                 óâ   — t        d«      }t        j                  |d«      }| j                  | j                  |«       t        j
                  |d«      }| j                  | j                  |«       y )Nzecc_x25519_private_p8_2.derru   rr   rm   s      r&   Ú%test_import_private_pkcs8_encrypted_3z;TestImport_Curve25519.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_x25519_x509.der)r'   r   rl   rk   rb   rO   rm   s      r&   Útest_import_x509_derz*TestImport_Curve25519.test_import_x509_der¥   sS   € ÜÐ2Ó3ˆä�o‰o˜h¨Ó-ˆØ×Ñ˜Ÿ™¨#Ô.ä�n‰n˜XÓ&ˆØ×Ñ˜Ÿ™¨#Õ.r)   c                 ó|   — t        d«      }t        j                  |«      }| j                  | j                  |«       y )Núecc_x25519_public.pem©r'   r   rO   rk   rb   rm   s      r&   Útest_import_public_pemz,TestImport_Curve25519.test_import_public_pem®   s/   € ÜÐ4Ó5ˆä�n‰n˜XÓ&ˆØ×Ñ˜Ÿ™¨#Õ.r)   c                 ó|   — t        d«      }t        j                  |«      }| j                  | j                  |«       y )Núecc_x25519_private.pemrx   rm   s      r&   Útest_import_private_pemz-TestImport_Curve25519.test_import_private_pem´   s1   € ÜÐ5Ó6ˆä�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_x25519_private_enc_%s.pemru   ó   secret)r'   r   rO   rk   ra   r   )rQ   Úalgorn   r;   s       r&   Ú!test_import_private_pem_encryptedz7TestImport_Curve25519.test_import_private_pem_encryptedº   sq   € Ø8ò 	4ˆDÜ Ð!@À4Ñ!GÓHˆHä—.‘. ¨8Ó4ˆCØ×Ñ˜T×-Ñ-¨sÔ3ä—.‘.¤ x£°)Ó<ˆCØ×Ñ˜T×-Ñ-¨sÕ3ñ	4r)   c                 ó|   — t        d«      }t        j                  |«      }| j                  | j                  |«       y )Nzecc_x25519_x509.pemr€   rm   s      r&   Útest_import_x509_pemz*TestImport_Curve25519.test_import_x509_pemÄ   s/   € ÜÐ2Ó3ˆä�n‰n˜XÓ&ˆØ×Ñ˜Ÿ™¨#Õ.r)   )rX   rY   rZ   r`   ro   rs   rv   ry   r{   r}   r�   r„   rŒ   rŽ   Ú__classcell__©rf   s   @r&   r\   r\   r   s;   ø„ ôEò
/ò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_Curve25519c                 óZ   •— t        t        | �
  |i |¤Ž t        «       \  | _        | _        y r^   )r_   r’   r`   r<   ra   rb   rc   s      €r&   r`   zTestExport_Curve25519.__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_Curve25519.test_export_public_derÑ   s�   € ÜÐ4Ó5ˆà—/‘/×>Ñ>¸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_clearz5TestExport_Curve25519.test_export_private_pkcs8_clearÝ   s„   € ÜÐ5Ó6ˆà×"Ñ"×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_encryptedz9TestExport_Curve25519.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_Curve25519.test_export_public_pem  sH   € Ü Ð!8¸$Ó?×EÑEÓGˆØ—?‘?×-Ñ-°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_clearz3TestExport_Curve25519.test_export_private_pem_clear  sJ   € ÜÐ5°tÓ<×BÑBÓDˆØ×"Ñ"×-Ñ-°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_encryptedz7TestExport_Curve25519.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–   é    s@   ff7561ef60c9c8a757f6d6372ec14142c9be208d0e719136d8d3c715dfcf7e15)rb   rš   rk   Úlenr   )rQ   rœ   s     r&   Útest_export_rawz%TestExport_Curve25519.test_export_raw  sC   € Ø—/‘/×,Ñ,°EÐ,Ó:ˆØ×Ñœ˜W› rÔ*Ø×Ñ˜¤)Ð,oÓ"pÕqr)   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_Curve25519.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_passphrasez4TestExport_Curve25519.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_Curve25519.test_error_params19  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<   ø„ ôEò
,ò9ò4ò61ò
,ò
4òrò

-ò	-ö/r)   r’   c                   ó   — e Zd Zd„ Zy)ÚTestImport_Curve25519_Weakc                 ó<  — ddz  dz
  }dddd|dz
  ||dz   |dz   |dz   |dz  dz
  |dz  |dz  dz   f}|D ]f  }t        j                  |d«      }t        j                  |d¬	«      }|j                  d
¬«      }| j	                  t
        t         j                  |«       Œh y )Nr   éÿ   é   r   rC   l   àkõxíÂujaj\~|ObjZ®s”	ÛoP,�E¯$¸ l   _+yŽBb$:6gÁw[ˆ8câph[DS7èOWÚ
curve25519)Ú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_Curve25519_Weak.test_weak_pemX  sÀ   € àˆs‰F�R‰KˆØØØ]Ø_Ø�a‘%ØØ�a‘%ØÐaÑaØÐcÑcØ�a‘%˜!‘)Ø�a‘%Ø�a‘%˜!‘)ðˆð ò 	'ˆAÜ!Ÿm™m¨A¨|Ó<ˆOÜ—z‘z¨¸|ÔLˆHØ×)Ñ)°Ð)Ó7ˆGà×ÑœjÜ!Ÿn™nØ%õ'ñ	'r)   N)rX   rY   rZ   rÙ   r@   r)   r&   rÌ   rÌ   V  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Ý   r  sk   € Ø€EðØ”¤Ó,Ñ,ˆØ”Ô!6Ó7Ñ7ˆØ”Ô!6Ó7Ñ7ˆØ”Ô!;Ó<Ñ<ˆð €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/˜H×-Ñ-ô V/ôrH/˜H×-Ñ-ô H/ôV' ×!2Ñ!2ô 'ð8 ó 	ð ˆzÒò/à€H‡M�M˜gÖ&ð øð]
 ò #Ø"Òð#ús   Á C ÃCÃC