Ë
    íU.jî/  ã                   ó$  — d dl Z d dl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mZmZmZ g d¢Z G d	„ d
e j                   «      Z G d„ de j                   «      Z G d„ de j                   «      Zi fd„Zedk(  rd„ Z e j.                  d¬«       yy)é    N)Ú	unhexlify)Úlist_test_cases)ÚInteger)ÚSHAKE128)ÚECC)ÚEccKeyÚ	EccXPointÚ_curves))é   é	   )é   l   ûNÐ:sreÅ5¡FG;®�â*ô!c(—}6~Fj!Ó )é   l   <âv¿P œ�CØ'Aødt7GlUd|uU^)é   l   ï *‘t0"¥+ówþ_b6…Rƒ}^¯x[LÎy)é   l   1Eòê/ðO�B)	�Mc…všï�OæWgrf&•&)r   l   ºdMf›qðF_¸9áX™tV7�6 #´éôeHI+)é�   l   ·j9a:H3j¼?(w:q—Eóˆç âµ2s)éÿ   l   ³)G@+,c\ÅPvy*ª~¤A|QY»eèEÔ9¬p,4)é   l   èP½Mv+YSYC0ÈkšÔ}£CìBNm¥Mº  C)i  l   %1!Z¿½]Eo¨C²v:p‚fAo4!Üoj’	ÒrAl)i l   Ïgèr c¢4í)O„t«Y\]	›lwwøuô<¦ )iÌUª l   ‡XR>„#¤»ÊsZ60>|šIÁôk|0ÂÀ,)l   g x^rP)l   f~¸(Dš4­94H5}$è„\Èdðzï59EÃP)l   îSë9i“@eMó^¨w|o                r   c                   óD   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zy)ÚTestEccPoint_Curve25519l   è4!'ÅM¤Ië.ó>æ.<™ OoÀfåÀfY<ú	l   “$+'UfbïCxDóm1,\qt¬<K?:‰!c                 óF   — t        dd«       t        ddz  dz
  dz   d«       y )Nr   Ú
curve25519r   r   é   é   )r	   ©Úselfs    úoC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\Crypto/SelfTest/PublicKey/test_ECC_Curve25519.pyÚ	test_initz!TestEccPoint_Curve25519.test_initD   s"   € Ü�!�\Ô"Ü�!�S‘&˜2‘+ ‘/ <Õ0ó    c                 óT   — t        dd«      }| j                  |j                  d«       y )Nr   r   Ú
Curve25519)r	   ÚassertEqualÚcurve©r   Úpoints     r   Útest_curve_attributez,TestEccPoint_Curve25519.test_curve_attributeH   s"   € Ü˜!˜\Ó*ˆØ×Ñ˜Ÿ™ lÕ3r   c                 ó†   — | j                  t        t        dddz  dz
  z  d«       | j                  t        t        dd«       y )Nr   r   r   r   r   r   Ú
curve25518)ÚassertRaisesÚ
ValueErrorr	   r   s    r   Útest_init_failz&TestEccPoint_Curve25519.test_init_failL   s6   € Ø×Ñœ*¤i°°A°s±F¸R±K±À,ÔOØ×Ñœ*¤i°°LÕAr   c                 ó  — t        | j                  d«      }t        | j                  d«      }| j                  ||«       | j	                  ||«       |j                  |«       | j                  |j                  |j                  «       y ©Nr   )r	   Úv1Úv2r!   ÚassertNotEqualÚsetÚx©r   Úpoint1Úpoint2s      r   Útest_equal_setz&TestEccPoint_Curve25519.test_equal_setP   sf   € Ü˜4Ÿ7™7 LÓ1ˆÜ˜4Ÿ7™7 LÓ1ˆà×Ñ˜ Ô(Ø×Ñ˜F FÔ+à�
‰
�6ÔØ×Ñ˜Ÿ™ 6§8¡8Õ,r   c                 óœ   — t        | j                  d«      }|j                  «       }| j                  |j                  |j                  «       y r,   )r	   r-   Úcopyr!   r1   r2   s      r   Ú	test_copyz!TestEccPoint_Curve25519.test_copyZ   s5   € Ü˜4Ÿ7™7 LÓ1ˆØ—‘“ˆØ×Ñ˜Ÿ™ 6§8¡8Õ,r   c                 óä   — t        | j                  d«      }|j                  «       }| j                  |j                  «       «       t        d d«      }| j                  |j                  «       «       y r,   )r	   r-   Úpoint_at_infinityÚ
assertTrue)r   r3   Úpair4   s       r   Útest_paiz TestEccPoint_Curve25519.test_pai_   sV   € Ü˜4Ÿ7™7 LÓ1ˆØ×&Ñ&Ó(ˆØ�‰˜×-Ñ-Ó/Ô0ä˜4 Ó.ˆØ�‰˜×0Ñ0Ó2Õ3r   c                 óL  — t        dd«      }d|z  }| j                  |j                  «       «       d|z  }| j                  |j                  «       «       |dz  }| j                  |j                  d«       t
        D ]&  \  }}||z  }| j                  |j                  |«       Œ( y )Nr   r   r   l   íSë9i“@eMó^¨w|o                r   )r	   r;   r:   r!   r1   Úscalar_base9_test)r   ÚbaseÚpointHÚdÚresults        r   Útest_scalar_multiplyz,TestEccPoint_Curve25519.test_scalar_multiplyg   s”   € Ü˜˜LÓ)ˆà�T‘ˆØ�‰˜×0Ñ0Ó2Ô3àSÐVZÑZˆØ�‰˜×0Ñ0Ó2Ô3à˜‘ˆØ×Ñ˜Ÿ™ 1Ô%ç*‰IˆAˆvØ˜‘XˆFØ×Ñ˜VŸX™X vÕ.ñ +r   c                 óœ   — t        dd«      }| j                  |j                  «       d«       | j                  |j                  «       d«       y )Nr   r   r   é    )r	   r!   Úsize_in_bitsÚsize_in_bytesr#   s     r   Ú
test_sizesz"TestEccPoint_Curve25519.test_sizesw   s@   € Ü˜!˜\Ó*ˆØ×Ñ˜×+Ñ+Ó-¨sÔ3Ø×Ñ˜×,Ñ,Ó.°Õ3r   N)Ú__name__Ú
__module__Ú__qualname__r-   r.   r   r%   r*   r5   r8   r=   rD   rI   © r   r   r   r   ?   s5   „ à	K€BØ	K€Bò1ò4òBò-ò-ò
4ò/ó 4r   r   c                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestEccKey_Curve25519c                 óÄ  — t        d«      }t        d«      }t        j                  |d¬«      }t        d|¬«      }| j	                  |j
                  |«       | j                  |j                  «       «       | j	                  |j                  j                  |«       t        d«      }t        d«      }t        j                  |d¬«      }t        d|¬«      }| j	                  |j
                  |«       | j                  |j                  «       «       | j	                  |j                  j                  |«       t        d	|¬«      }| j                  t        t        d	d
¬«       y )NÚ@77076d0a7318a57d3c16c17251b26645df4c2f87ebc0992ab177fba51db92c2aÚ@8520f0098930a754748b7ddcb43ef75a0dbf3a0d26381af4eba4a98eaa9b4e6aÚlittle©Ú	byteorderr    ©r"   ÚseedÚ@5dab087e624a8a4b79e17f8b83800ee66f3bb1292618b6fd1c2f8b27ff88e0ebÚ@de9edb7d7b7dc1b4d35b61c2ece435373f8343c85b78674dadfc7e146f882b4fr   r   ©r"   rB   )r   r   Ú
from_bytesr   r!   rW   r;   Úhas_privateÚpointQr1   r(   r)   )r   Ú
alice_privÚ	alice_pubÚalice_pub_xÚkeyÚbob_privÚbob_pubÚ	bob_pub_xs           r   Útest_private_keyz&TestEccKey_Curve25519.test_private_key   s  € äÐaÓbˆ
ÜÐ`Óaˆ	Ü×(Ñ(¨¸hÔGˆä˜<¨jÔ9ˆØ×Ñ˜Ÿ™ :Ô.Ø�‰˜Ÿ™Ó)Ô*Ø×Ñ˜Ÿ™Ÿ™ {Ô3ô Ð_Ó`ˆÜÐ^Ó_ˆÜ×&Ñ& w¸(ÔCˆ	ä˜<¨hÔ7ˆØ×Ñ˜Ÿ™ 8Ô,Ø�‰˜Ÿ™Ó)Ô*Ø×Ñ˜Ÿ™Ÿ™ yÔ1ô ˜<¨jÔ9ˆð 	×Ñœ*¤f°LÀAÐÕFr   c                 óÐ   — t        t        d   j                  d¬«      }t        d|¬«      }| j	                  |j                  «       «       | j                  |j                  |«       y )Nr   ©r"   )r"   r$   )r	   r
   ÚGxr   ÚassertFalser\   r!   r]   )r   r$   ra   s      r   Útest_public_keyz%TestEccKey_Curve25519.test_public_keyš   sQ   € Üœ' ,Ñ/×2Ñ2Ø ,ô.ˆä˜<¨uÔ5ˆØ×Ñ˜Ÿ™Ó*Ô+Ø×Ñ˜Ÿ™ UÕ+r   c                 óÈ   — t        dd¬«      }|j                  «       }| j                  |j                  «       «       | j	                  |j
                  |j
                  «       y )Nr   ó    HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHrV   )r   Ú
public_keyri   r\   r!   r]   )r   Úpriv_keyÚpub_keys      r   Útest_public_key_derivedz-TestEccKey_Curve25519.test_public_key_derived¡   sK   € Ü °7Ô;ˆØ×%Ñ%Ó'ˆØ×Ñ˜×,Ñ,Ó.Ô/Ø×Ñ˜Ÿ™¨'¯.©.Õ9r   c                 ó2   — | j                  t        d„ «       y )Nc                  ó   — t        dd¬«      S )Nr   ó   HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHrV   )r   rM   r   r   Ú<lambda>z9TestEccKey_Curve25519.test_invalid_seed.<locals>.<lambda>¨   s   € ¬f¸<ÈiÕ.Xr   )r(   r)   r   s    r   Útest_invalid_seedz'TestEccKey_Curve25519.test_invalid_seed§   s   € Ø×Ñœ*Ñ&XÕYr   c                 ó¢  — t        j                  dd¬«      }t        j                  dd¬«      }t        j                  dd¬«      }|j                  «       }|j                  «       }|j                  «       }| j                  ||«       | j	                  ||«       | j                  ||«       | j	                  ||«       | j	                  ||«       y )Nrl   r    )rW   r"   r   s    CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC)r   Ú	constructrm   r!   r/   )r   Úprivate_keyÚprivate_key2Úprivate_key3rm   Úpublic_key2Úpublic_key3s          r   Útest_equalityz#TestEccKey_Curve25519.test_equalityª   s¬   € Ü—m‘m¨¸ÔEˆÜ—}‘}¨'¸ÔFˆÜ—}‘}¨'¸ÔFˆà ×+Ñ+Ó-ˆ
Ø"×-Ñ-Ó/ˆØ"×-Ñ-Ó/ˆà×Ñ˜ lÔ3Ø×Ñ˜K¨Ô6à×Ñ˜ [Ô1Ø×Ñ˜J¨Ô4à×Ñ˜J¨Õ4r   c                 óò   — t        j                  d¬«      }| j                  dt        |«      «       | j	                  |j
                  d«       | j	                  |j                  «       j
                  d«       y )Nr   rg   zcurve='Curve25519'r    )r   ÚgenerateÚassertInÚreprr!   r"   rm   )r   ra   s     r   Útest_name_consistencyz+TestEccKey_Curve25519.test_name_consistency»   sT   € Ü�l‰l Ô.ˆØ�‰Ð*¬D°«IÔ6Ø×Ñ˜Ÿ™ LÔ1Ø×Ñ˜Ÿ™Ó)×/Ñ/°Õ>r   N)	rJ   rK   rL   re   rj   rp   ru   r}   r‚   rM   r   r   rO   rO   }   s"   „ òGò6,ò:òZò5ó"?r   rO   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚTestEccModule_Curve25519c                 óh  — t        j                  d¬«      }| j                  |j                  «       «       t	        t
        d   j                  d¬«      |j                  z  }| j                  |j                  |«       t        j                  d¬«      }| j                  ||«       t        j                  d¬«       t        j                  dt        j                  «       j                  ¬«      }t        j                  dt        j                  «       j                  ¬«      }| j                  ||«       y )Nr    rg   r   )r"   Úrandfunc)r   r   r;   r\   r	   r
   rh   rB   r!   r]   r/   r   ÚnewÚread)r   ra   r$   Úkey2Úkey1s        r   Útest_generatez&TestEccModule_Curve25519.test_generateÄ   sÏ   € Ü�l‰l Ô.ˆØ�‰˜Ÿ™Ó)Ô*Üœ' ,Ñ/×2Ñ2¸,ÔGÈ#Ï%É%ÑOˆØ×Ñ˜Ÿ™ UÔ+ô �|‰| ,Ô/ˆØ×Ñ˜C Ô&ô 	�‰˜<Õ(ô �|‰| ,¼¿¹»×9LÑ9LÔMˆÜ�|‰| ,¼¿¹»×9LÑ9LÔMˆØ×Ñ˜˜tÕ$r   c                 ó”  — t        d«      }t        d«      }t        j                  |d¬«      }t        |d¬«      }t	        j
                  d|¬«      }| j                  |j                  |«       | j                  |j                  «       «       t	        j
                  d|¬«      }| j                  |j                  |«       | j                  |j                  «       «       t	        j
                  d||¬	«      }| j                  |j                  |«       | j                  |j                  «       «       t	        j
                  d
|¬«      }y )NrQ   rR   rS   rT   r    rg   rV   ©r"   Úpoint_x)r"   rW   rŽ   r   )r   r   r[   r	   r   rw   r!   r]   r;   r\   ri   )r   rW   Ú	point_hexÚPxr$   ra   s         r   Útest_constructz'TestEccModule_Curve25519.test_constructÖ   s÷   € ÜÐ[Ó\ˆÜÐ`Óaˆ	Ü×Ñ 	°XÔ>ˆÜ˜" LÔ1ˆô �m‰m ,°TÔ:ˆØ×Ñ˜Ÿ™ UÔ+Ø�‰˜Ÿ™Ó)Ô*ô �m‰m ,¸Ô;ˆØ×Ñ˜Ÿ™ UÔ+Ø×Ñ˜Ÿ™Ó*Ô+ô �m‰m ,°TÀ2ÔFˆØ×Ñ˜Ÿ™ UÔ+Ø�‰˜Ÿ™Ó)Ô*ô �m‰m ,°TÔ:‰r   c                 óÌ  — t        t        d   j                  ¬«      } | j                  t        t
        j                  fdddœ|¤Ž | j                  t        t
        j                  dd¬«       | j                  t        t
        j                  dd¬	«       | j                  t        t
        j                  dd
¬	«       | j                  t        t
        j                  dd¬	«       | j                  t        t
        j                  dd¬	«       ddz  dz
  }| j                  t        t
        j                  d|d
z
  ¬	«       | j                  t        t
        j                  d|¬	«       | j                  t        t
        j                  d|d
z   ¬	«       | j                  t        t
        j                  d|dz   ¬	«       | j                  t        t
        j                  d|dz   ¬	«       | j                  t        t
        j                  d|dz  d
z
  ¬	«       | j                  t        t
        j                  d|dz  ¬	«       | j                  t        t
        j                  d|dz  d
z   ¬	«       y )Nr   )rŽ   r    r   rZ   rs   rV   r   r�   r   l   àkõxíÂujaj\~|ObjZ®s”	ÛoP,�E¯$¸ l   _+yŽBb$:6gÁw[ˆ8câph[DS7èOWr   r   )Údictr
   rh   r(   r)   r   rw   )r   ÚcoordGÚps      r   Útest_negative_constructz0TestEccModule_Curve25519.test_negative_constructî   s  € Üœg lÑ3×6Ñ6Ô7ˆàˆ×Ñœ*¤c§m¡mÐW¸<È1ÑWÐPVÒWØ×Ñœ*¤c§m¡m¸<ÈgÐÔVð 	×Ñœ*¤c§m¡m¸<Ø"#ð 	ô 	%à×Ñœ*¤c§m¡m¸<Ø"#ð 	ô 	%à×Ñœ*¤c§m¡m¸<Ø"mð 	ô 	oà×Ñœ*¤c§m¡m¸<Ø"oð 	ô 	qàˆs‰F�R‰KˆØ×Ñœ*¤c§m¡m¸<Ø"# A¡#ð 	ô 	'à×Ñœ*¤c§m¡m¸<Ø"#ð 	ô 	%à×Ñœ*¤c§m¡m¸<Ø"# A¡#ð 	ô 	'à×Ñœ*¤c§m¡m¸<Ø"#Ð$oÑ"oð 	ô 	qà×Ñœ*¤c§m¡m¸<Ø"#Ð$qÑ"qð 	ô 	sà×Ñœ*¤c§m¡m¸<Ø"# A¡# a¡%ð 	ô 	)à×Ñœ*¤c§m¡m¸<Ø"# A¡#ð 	ô 	'à×Ñœ*¤c§m¡m¸<Ø"# A¡# a¡%ð 	õ 	)r   N)rJ   rK   rL   r‹   r‘   r–   rM   r   r   r„   r„   Â   s   „ ò%ò$;ó0)r   r„   c                 óv   — g }|t        t        «      z  }|t        t        «      z  }|t        t        «      z  }|S ©N)r   r   rO   r„   )ÚconfigÚtestss     r   Ú	get_testsr›     s<   € Ø€EØ	Œ_Ô4Ó5Ñ5€EØ	Œ_Ô2Ó3Ñ3€EØ	Œ_Ô5Ó6Ñ6€EØ€Lr   Ú__main__c                  ó<   — t        j                  t        «       «      S r˜   )ÚunittestÚ	TestSuiter›   rM   r   r   Úsuiter      s   € Ü×!Ñ!¤)£+Ó.Ð.r   r    )ÚdefaultTest)rž   Úbinasciir   ÚCrypto.SelfTest.st_commonr   ÚCrypto.Math.Numbersr   ÚCrypto.Hashr   ÚCrypto.PublicKeyr   ÚCrypto.PublicKey.ECCr   r	   r
   r?   ÚTestCaser   rO   r„   r›   rJ   r    ÚmainrM   r   r   Ú<module>rª      s�   ðó> Ý å 5Ý 'Ý  å  ß ;Ñ ;òÐ ô$;4˜h×/Ñ/ô ;4ô|B?˜H×-Ñ-ô B?ôJK)˜x×0Ñ0ô K)ð\ ó ð ˆzÒò/à€H‡M�M˜gÖ&ð r   