Ë
    íU.j¹7  ã                   ó(  — 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
mZmZ d dlmZ d dlm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 j0                  d¬«       yy)é    N)Ú	unhexlify)Úlist_test_cases)Úload_test_vectors)ÚECC)ÚEccPointÚ_curvesÚEccKey)ÚInteger)ÚSHAKE128c                   óØ   — e Zd ZdddœZdddœZdddœZ eed   ed	   d
¬«      Z eed   ed	   d
¬«      Z eed   ed	   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y)ÚTestEccPoint_Ed25519ì   UK‚5±J,{´$%Xci\¸-÷G'
lJ[sii!ì   XfÌL™33ffÌL™33ffÌL™33ffÌL™33ff)ÚxÚyì   N‡P8-øEô:EÇ,Ïg`tÛ!ÐC�@Ö'&«6ì   É#ñU¹úr`
YT‡—V>D&#÷Ú!8eHBùf`"l   \bñ'!cjI,`Ì!c:�5ûPs%ÿéQ¤%N®gl   Ô4ëq!!@0€dÙvŸw=M€95:5Mû]èXgr   r   Úed25519©Úcurvec                 óP   — | j                  | j                  j                  d«       y )NÚEd25519)ÚassertEqualÚpointGr   ©Úselfs    úlC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\Crypto/SelfTest/PublicKey/test_ECC_Ed25519.pyÚtest_curve_attributez)TestEccPoint_Ed25519.test_curve_attribute<   s   € Ø×Ñ˜Ÿ™×*Ñ*¨IÕ6ó    c                 ó€  — t        | j                  d   | j                  d   d¬«       t        ddd¬«      }| j                  |j                  d«       | j                  |j                  d«       | j                  |j
                  d«       | j                  j                  «       }| j                  |j                  d«       | j                  |j                  d	«       | j                  |j
                  |j                  |j                  f«       | j                  j                  «       }| j                  |j                  d
«       | j                  |j                  d«       | j                  |j
                  |j                  |j                  f«       t        ddd¬«       | j                  t        t         ddd¬«       y )Nr   r   r   r   r   é   )r   r!   r   r   r   r   ì   3r]d s
Y|CO~\^K[D_ç{Î?kx+ŸSýIì   íHí,~�Ñ5a(¢21fŒ$&Rpc~ÍU?&ÙH_)r   r   r   é"   é#   )r   ÚGxyr   r   r   Úxyr   ÚcopyÚpointG2ÚassertRaisesÚ
ValueError)r   ÚpaiÚbpÚbp2s       r   Útest_init_xyz!TestEccPoint_Ed25519.test_init_xy?   sT  € Ü�—‘˜#‘ §¡¨¡°YÕ?ô �q˜! 9Ô-ˆØ×Ñ˜Ÿ™ Ô"Ø×Ñ˜Ÿ™ Ô"Ø×Ñ˜Ÿ™ Ô(ð �[‰[×ÑÓˆØ×Ñ˜Ÿ™ÐlÔmØ×Ñ˜Ÿ™ÐlÔmØ×Ñ˜Ÿ™ §¡ r§t¡t Ô-ð �l‰l×ÑÓ!ˆØ×Ñ˜Ÿ™Ð mÔnØ×Ñ˜Ÿ™Ð mÔnØ×Ñ˜Ÿ™ #§%¡%¨¯© Ô0ô 	Ð`Ø`Ø õ	"ð
 	×Ñœ*¤h°°B¸iÐÕHr   c                 ó  — t        ddd¬«      }|j                  | j                  «       | j                  |j                  | j                  j                  «       | j                  |j
                  | j                  j
                  «       y ©Nr   r!   r   r   )r   Úsetr   r   r   r   ©r   ÚpointWs     r   Útest_setzTestEccPoint_Ed25519.test_set\   sX   € Ü˜!˜Q iÔ0ˆØ�
‰
�4—;‘;ÔØ×Ñ˜Ÿ™ 4§;¡;§=¡=Ô1Ø×Ñ˜Ÿ™ 4§;¡;§=¡=Õ1r   c                 óø   — | j                   j                  «       }| j                  |j                  | j                   j                  «       | j                  |j                  | j                   j                  «       y ©N)r   r(   r   r   r   r3   s     r   Ú	test_copyzTestEccPoint_Ed25519.test_copyb   sL   € Ø—‘×!Ñ!Ó#ˆØ×Ñ˜Ÿ™ 4§;¡;§=¡=Ô1Ø×Ñ˜Ÿ™ 4§;¡;§=¡=Õ1r   c                 óÜ   — | j                   j                  «       }| j                  j                  «       }| j                  | j                   |«       | j	                  | j                   |«       y r7   )r   r(   r)   r   ÚassertNotEqual)r   ÚpointHÚpointIs      r   Ú
test_equalzTestEccPoint_Ed25519.test_equalg   sN   € Ø—‘×!Ñ!Ó#ˆØ—‘×"Ñ"Ó$ˆØ×Ñ˜Ÿ™ fÔ-Ø×Ñ˜DŸK™K¨Õ0r   c                 óž   — t        ddd¬«      }| j                  |j                  «       «       | j                  ||j	                  «       «       y r1   )r   Ú
assertTrueÚis_point_at_infinityr   Úpoint_at_infinity)r   r,   s     r   Útest_paizTestEccPoint_Ed25519.test_paim   s>   € Ü�q˜! 9Ô-ˆØ�‰˜×0Ñ0Ó2Ô3Ø×Ñ˜˜c×3Ñ3Ó5Õ6r   c                 óÖ   — | j                    }| j                   dz  }||dz  z   }| j                  |j                  «       «       ||z   }| j                   dz  }| j                  ||«       y )Néd   éc   )r   r?   r@   r   )r   ÚnegGÚG100Úsum_zeroÚsum_99Úexpecteds         r   Útest_negatez TestEccPoint_Ed25519.test_negater   se   € Ø—‘ˆ|ˆØ�{‰{˜SÑ ˆØ˜$ ™*Ñ$ˆØ�‰˜×5Ñ5Ó7Ô8à˜‘ˆØ—;‘; Ñ#ˆØ×Ñ˜ Õ*r   c                 óv  — | j                  | j                  | j                  z   | j                  «       | j                  | j                  | j                  z   | j                  «       | j                  | j                  | j                  j	                  «       z   | j                  «       | j                  | j                  j	                  «       | j                  z   | j                  «       | j                  | j                  z   }| j                  |j
                  d«       | j                  |j                  d«       y )Nr"   r#   )r   r   r)   ÚpointG3rA   r   r   )r   ÚG5s     r   Útest_additionz"TestEccPoint_Ed25519.test_addition|   sÔ   € Ø×Ñ˜Ÿ™ t§|¡|Ñ3°T·\±\ÔBØ×Ñ˜Ÿ™¨¯©Ñ3°T·\±\ÔBØ×Ñ˜Ÿ™¨¯©×(EÑ(EÓ(GÑGÈÏÉÔVØ×Ñ˜Ÿ™×6Ñ6Ó8¸4¿<¹<ÑGÈÏÉÔVà�\‰\˜DŸL™LÑ(ˆØ×Ñ˜Ÿ™ÐlÔmØ×Ñ˜Ÿ™ÐlÕmr   c                 óV  — | j                   j                  «       }|| j                   z  }| j                  || j                  «       || j                   z  }| j                  || j                  «       || j                   j                  «       z  }| j                  || j                  «       y r7   )r   r(   r   r)   rM   rA   )r   r;   s     r   Útest_inplace_additionz*TestEccPoint_Ed25519.test_inplace_addition†   sƒ   € Ø—‘×!Ñ!Ó#ˆØ�$—+‘+ÑˆØ×Ñ˜ §¡Ô.Ø�$—+‘+ÑˆØ×Ñ˜ §¡Ô.Ø�$—+‘+×/Ñ/Ó1Ñ1ˆØ×Ñ˜ §¡Õ.r   c                 ó°  — | j                   j                  «       }|j                  «        | j                  |j                  | j
                  j                  «       | j                  |j                  | j
                  j                  «       | j                   j                  «       }|j                  «       }|j                  «        | j                  ||«       y r7   )r   r(   Údoubler   r   r)   r   rA   )r   r;   r,   ÚpointRs       r   Útest_doublingz"TestEccPoint_Ed25519.test_doubling�   s�   € Ø—‘×!Ñ!Ó#ˆØ�‰ŒØ×Ñ˜Ÿ™ 4§<¡<§>¡>Ô2Ø×Ñ˜Ÿ™ 4§<¡<§>¡>Ô2ð �k‰k×+Ñ+Ó-ˆØ—‘“ˆØ�‰ŒØ×Ñ˜ Õ%r   c                 ó¨  — d}|| j                   z  }| j                  |j                  d«       | j                  |j                  d«       d}|| j                   z  }| j                  |j                  | j                   j                  «       | j                  |j                  | j                   j                  «       d}|| j                   z  }| j                  |j                  | j                  j                  «       | j                  |j                  | j                  j                  «       d}|| j                   z  }| j                  |j                  | j
                  j                  «       | j                  |j                  | j
                  j                  «       d}|| j                   z  }| j                  |j                  d«       | j                  |j                  d«       d}|| j                   z  }| j                  |j                  d	«       | j                  |j                  d
«       d}|| j                   z  }| j                  |j                  d«       | j                  |j                  d«       d}|| j                   z  }| j                  |j                  d«       | j                  |j                  d«       d}|| j                   z  }| j                  |j                  d«       | j                  |j                  d«       d}|| j                   z  }| j                  |j                  d«       | j                  |j                  d«       y )Nr   r!   é   é   é   l   px“	_ÕItTÂyd0Ï9yAjèa¥.2h(~³UmT= l   /d‡-ÅyáEºyLlâ*Äup¼2ÅrtÐGé   r"   r#   é
   l   Oyï‰|¨$Dß¶G? wyJ;°GT®M2¿<,`l   ,{ÐUÁRCT;<O!S;%O1"Sj"Ž|Žd†U~cé   l   ¯y™VÎ	ÇZD)³CŠBiun÷Uë]õSu;å2<gl   8Zx^io‹i�,U…oç8¾pk
ÇEñQæUSA‰-Öuléÿ   l   

£+÷p§R'
+ÄªKC0ŸkR„qPQ|ŸqtQl   Ìaj 53ÌTotÈºËKa1ë*lO|=”<�#^S\1é   l   V%…tsÅÒv*,í>¼ZÔI¨ š^Nn~—=‡Sö~^l   ÇvÙ,Å ¡p€û$°fž}L&*]/¿O |®:U)r   r   r   r   r)   rM   )r   Údr;   s      r   Útest_scalar_multiplyz)TestEccPoint_Ed25519.test_scalar_multiply›   s‚  € ØˆØ�T—[‘[‘ˆØ×Ñ˜Ÿ™ 1Ô%Ø×Ñ˜Ÿ™ 1Ô%àˆØ�T—[‘[‘ˆØ×Ñ˜Ÿ™ 4§;¡;§=¡=Ô1Ø×Ñ˜Ÿ™ 4§;¡;§=¡=Ô1àˆØ�T—[‘[‘ˆØ×Ñ˜Ÿ™ 4§<¡<§>¡>Ô2Ø×Ñ˜Ÿ™ 4§<¡<§>¡>Ô2àˆØ�T—[‘[‘ˆØ×Ñ˜Ÿ™ 4§<¡<§>¡>Ô2Ø×Ñ˜Ÿ™ 4§<¡<§>¡>Ô2àˆØ�T—[‘[‘ˆØ×Ñ˜Ÿ™Ð#pÔqØ×Ñ˜Ÿ™Ð#pÔqàˆØ�T—[‘[‘ˆØ×Ñ˜Ÿ™Ð#pÔqØ×Ñ˜Ÿ™Ð#pÔqàˆØ�T—[‘[‘ˆØ×Ñ˜Ÿ™Ð#pÔqØ×Ñ˜Ÿ™Ð#pÔqàˆØ�T—[‘[‘ˆØ×Ñ˜Ÿ™Ð#pÔqØ×Ñ˜Ÿ™Ð#oÔpàˆØ�T—[‘[‘ˆØ×Ñ˜Ÿ™Ð#pÔqØ×Ñ˜Ÿ™Ð#pÔqàˆØ�T—[‘[‘ˆØ×Ñ˜Ÿ™Ð#pÔqØ×Ñ˜Ÿ™Ð#oÕpr   c                 ó¬   — | j                  | j                  j                  «       d«       | j                  | j                  j                  «       d«       y )Nr]   é    )r   r   Úsize_in_bitsÚsize_in_bytesr   s    r   Ú
test_sizeszTestEccPoint_Ed25519.test_sizesÎ   s<   € Ø×Ñ˜Ÿ™×1Ñ1Ó3°SÔ9Ø×Ñ˜Ÿ™×2Ñ2Ó4°bÕ9r   N)Ú__name__Ú
__module__Ú__qualname__r&   ÚG2xyÚG3xyr   r   r)   rM   r   r/   r5   r8   r=   rB   rK   rO   rQ   rU   r`   re   © r   r   r   r   -   s¶   „ à]Ø]ñ_€Cð _Ø^ñ`€Dð _Ø]ñ_€Dñ �c˜#‘h  C¡°	Ô:€FÙ�t˜C‘y $ s¡)°9Ô=€GÙ�t˜C‘y $ s¡)°9Ô=€Gò7òIò:2ò2ò
1ò7ò
+ònò/ò
&ò1qóf:r   r   c                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestEccKey_Ed25519c                 óº  — t        d«      }d}d}t        d|¬«      }| j                  |j                  |«       | j                  |j                  d«       | j                  |j                  «       «       | j                  |j                  j                  |«       | j                  |j                  j                  |«       t        ||d«      }t        d||¬«      }| j                  |j                  d«       | j                  |j                  «       «       | j                  |j                  |«       t        d|¬«      }| j                  t        t        dd	¬
«       y )NÚ@9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60ì   ÎEìnõ<	KBc”ê	Å ì!ƒ5?)…&ç
MpÐUì   ×Z0FU8[=Ét2²:ÂeÍk6RrU@ZûQr   ©r   Úseedì   0|>!™Y,$Ï%<0… <}ÿO e<Z¼È&éOr   )r   rs   Úpointr!   ©r   r_   )r   r	   r   rs   r_   r?   Úhas_privateÚpointQr   r   r   r*   r+   )r   rs   ÚPxÚPyÚkeyru   s         r   Útest_private_keyz#TestEccKey_Ed25519.test_private_keyÕ   s  € ÜÐ[Ó\ˆØZˆØZˆä˜9¨4Ô0ˆØ×Ñ˜Ÿ™ 4Ô(Ø×Ñ˜Ÿ™Ð mÔnØ�‰˜Ÿ™Ó)Ô*Ø×Ñ˜Ÿ™Ÿ™ rÔ*Ø×Ñ˜Ÿ™Ÿ™ rÔ*ä˜˜R Ó+ˆÜ˜9¨4°uÔ=ˆØ×Ñ˜Ÿ™Ð mÔnØ�‰˜Ÿ™Ó)Ô*Ø×Ñ˜Ÿ™ UÔ+ô ˜9¨4Ô0ˆð 	×Ñœ*¤f°IÀÐÕCr   c                 óô   — t        t        d   j                  t        d   j                  d¬«      }t	        d|¬«      }| j                  |j                  «       «       | j                  |j                  |«       y )Nr   r   )r   ru   )	r   r   ÚGxÚGyr	   ÚassertFalserw   r   rx   )r   ru   r{   s      r   Útest_public_keyz"TestEccKey_Ed25519.test_public_keyí   s[   € Üœ Ñ+×.Ñ.´¸	Ñ0B×0EÑ0EÈYÔWˆÜ˜9¨EÔ2ˆØ×Ñ˜Ÿ™Ó*Ô+Ø×Ñ˜Ÿ™ UÕ+r   c                 óÈ   — t        dd¬«      }|j                  «       }| j                  |j                  «       «       | j	                  |j
                  |j
                  «       y )Nr   ó    HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHrr   )r	   Ú
public_keyr€   rw   r   rx   )r   Úpriv_keyÚpub_keys      r   Útest_public_key_derivedz*TestEccKey_Ed25519.test_public_key_derivedó   sK   € Ü 	°Ô8ˆØ×%Ñ%Ó'ˆØ×Ñ˜×,Ñ,Ó.Ô/Ø×Ñ˜Ÿ™¨'¯.©.Õ9r   c                 ó2   — | j                  t        d„ «       y )Nc                  ó   — t        dd¬«      S )Nr   ó   HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHrr   )r	   rk   r   r   Ú<lambda>z6TestEccKey_Ed25519.test_invalid_seed.<locals>.<lambda>ú   s   € ¬f¸9È9Õ.Ur   )r*   r+   r   s    r   Útest_invalid_seedz$TestEccKey_Ed25519.test_invalid_seedù   s   € Ø×Ñœ*Ñ&UÕVr   c                 ó¢  — t        j                  dd¬«      }t        j                  dd¬«      }t        j                  dd¬«      }|j                  «       }|j                  «       }|j                  «       }| j                  ||«       | j	                  ||«       | j                  ||«       | j	                  ||«       | j	                  ||«       y )Nrƒ   r   )rs   r   r   s    CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC)r   Ú	constructr„   r   r:   )r   Úprivate_keyÚprivate_key2Úprivate_key3r„   Úpublic_key2Úpublic_key3s          r   Útest_equalityz TestEccKey_Ed25519.test_equalityü   s¬   € Ü—m‘m¨¸	ÔBˆÜ—}‘}¨'¸ÔCˆÜ—}‘}¨'¸ÔCˆà ×+Ñ+Ó-ˆ
Ø"×-Ñ-Ó/ˆØ"×-Ñ-Ó/ˆà×Ñ˜ 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   r   zcurve='Ed25519'r   )r   ÚgenerateÚassertInÚreprr   r   r„   )r   r{   s     r   Útest_name_consistencyz(TestEccKey_Ed25519.test_name_consistency  sT   € Ü�l‰l Ô+ˆØ�‰Ð'¬¨c«Ô3Ø×Ñ˜Ÿ™ IÔ.Ø×Ñ˜Ÿ™Ó)×/Ñ/°Õ;r   N)	rf   rg   rh   r|   r�   r‡   rŒ   r”   r™   rk   r   r   rm   rm   Ó   s"   „ òDò0,ò:òWò5ó"<r   rm   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚTestEccModule_Ed25519c                 óŒ  — t        j                  d¬«      }| j                  |j                  «       «       t	        t
        d   j                  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   r   )r   Úrandfunc)r   r–   r?   rw   r   r   r~   r   r_   r   rx   r:   r   ÚnewÚread)r   r{   ru   Úkey2Úkey1s        r   Útest_generatez#TestEccModule_Ed25519.test_generate  sß   € Ü�l‰l Ô+ˆØ�‰˜Ÿ™Ó)Ô*Üœ Ñ+×.Ñ.´¸	Ñ0B×0EÑ0EÈYÔWÐZ]×Z_ÑZ_Ñ_ˆØ×Ñ˜Ÿ™ UÔ+ô �|‰| )Ô,ˆØ×Ñ˜C Ô&ô 	�‰˜9Õ%ô �|‰| )´h·l±l³n×6IÑ6IÔJˆÜ�|‰| )´h·l±l³n×6IÑ6IÔJˆØ×Ñ˜˜tÕ$r   c                 ób  — t        d«      }d}d}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 )Nro   rp   rq   rt   r   r   rr   )r   Úpoint_xÚpoint_y)r   rs   r¤   r¥   r   )	r   r   r   rŽ   r   rx   r?   rw   r€   )r   rs   ry   rz   r_   ru   r{   s          r   Útest_constructz$TestEccModule_Ed25519.test_construct(  sï   € ÜÐ[Ó\ˆØZˆØZˆØYˆÜ˜˜R yÔ1ˆô �m‰m )°$Ô7ˆØ×Ñ˜Ÿ™ UÔ+Ø�‰˜Ÿ™Ó)Ô*ô �m‰m )°RÀÔDˆØ×Ñ˜Ÿ™ UÔ+Ø×Ñ˜Ÿ™Ó*Ô+ô �m‰m )°$ÀÈBÔOˆØ×Ñ˜Ÿ™ UÔ+Ø�‰˜Ÿ™Ó)Ô*ô �m‰m )°$Ô7‰r   c                 ól  — t        dd¬«      }t        t        d   j                  t        d   j                  ¬«      } | j                  t
        t        j                  fddi|¤Ž  | j                  t
        t        j                  fdddœ|¤Ž | j	                  t
        t        j                  dd	¬
«       y )Nr[   rY   )r¤   r¥   r   r   r   rW   rv   rŠ   rr   )Údictr   r~   r   r*   r+   r   rŽ   )r   ÚcoordÚcoordGs      r   Útest_negative_constructz-TestEccModule_Ed25519.test_negative_constructA  s�   € Ü˜R¨Ô+ˆÜœg iÑ0×3Ñ3¼WÀYÑ=O×=RÑ=RÔSˆàˆ×Ñœ*¤c§m¡mÑN¸9ÐNÈÒNØˆ×Ñœ*¤c§m¡mÐT¸9ÈÑTÈVÒTØ×Ñœ*¤c§m¡m¸9È7ÐÕSr   N)rf   rg   rh   r¢   r¦   r«   rk   r   r   r›   r›     s   „ ò%ò$8ó2Tr   r›   c                 óv   — g }|t        t        «      z  }|t        t        «      z  }|t        t        «      z  }|S r7   )r   r   rm   r›   )ÚconfigÚtestss     r   Ú	get_testsr¯   J  s<   € Ø€EØ	Œ_Ô1Ó2Ñ2€EØ	Œ_Ô/Ó0Ñ0€EØ	Œ_Ô2Ó3Ñ3€EØ€Lr   Ú__main__c                  ó<   — t        j                  t        «       «      S r7   )ÚunittestÚ	TestSuiter¯   rk   r   r   Úsuiter´   S  s   € Ü×!Ñ!¤)£+Ó.Ð.r   r´   )ÚdefaultTest)r²   Úbinasciir   ÚCrypto.SelfTest.st_commonr   ÚCrypto.SelfTest.loaderr   ÚCrypto.PublicKeyr   ÚCrypto.PublicKey.ECCr   r   r	   ÚCrypto.Math.Numbersr
   ÚCrypto.Hashr   ÚTestCaser   rm   r›   r¯   rf   r´   Úmainrk   r   r   Ú<module>r¿      s‹   ðó> Ý å 5Ý 4å  ß :Ñ :å 'å  ôc:˜8×,Ñ,ô c:ôL><˜×*Ñ*ô ><ôB3T˜H×-Ñ-ô 3Tðl ó ð ˆzÒò/à€H‡M�M˜gÖ&ð r   