
    i.                     "   S SK r S SKJr  S SKJr  S SKJr  S SKJr  S SK	J
r
  S SKJrJrJr  / SQr " S	 S
\ R                   5      r " S S\ R                   5      r " S S\ R                   5      r0 4S jr\S:X  a  S r\ R.                  " SS9  gg)    N)	unhexlify)list_test_cases)Integer)SHAKE128)ECC)EccKey	EccXPoint_curves))   	   )   l   N:sre5FG;*!c(}6~Fj! )   l   <vP C'Adt7GlUd|uU^)   l    *t0"+w_b6R}^x[Ly)   l   1E/OB)	McvOWgrf&&)r   l   dMfqF_9XtV76 #eHI+)   l   j9a:H3j?(w:qE 2s)   l   )G@+,c\Pvy*~A|QYeE9p,4)   l   PMv+YSYC0k}CBNmM  C)i  l   %1!Z]EoCv:pfAo4!oj	rAl)i l   grc4)OtY\]	lwwu< )iU l   XR>#sZ60>|Ik|0,)l   g x^rP)l   f~(D494H5}$\dz59EP)l   S9i@eM^w|o                r   c                   L    \ rS rSrSrSrS rS rS rS r	S r
S	 rS
 rS rSrg)TestEccPoint_Curve25519?   l   4!'MI.>.< OoffY<	l   $+'UfbCxDm1,\qt<K?:!c                 F    [        SS5        [        SS-  S-
  S-   S5        g )Nr   
curve25519r   r         )r	   selfs    h/var/www/html/trading/venv/lib/python3.13/site-packages/Crypto/SelfTest/PublicKey/test_ECC_Curve25519.py	test_init!TestEccPoint_Curve25519.test_initD   s"    !\"!S&2+/<0    c                 T    [        SS5      nU R                  UR                  S5        g )Nr   r   
Curve25519)r	   assertEqualcurver   points     r   test_curve_attribute,TestEccPoint_Curve25519.test_curve_attributeH   s"    !\*l3r    c                     U R                  [        [        SSS-  S-
  -  S5        U R                  [        [        SS5        g )Nr   r   r   r   r   r   
curve25518)assertRaises
ValueErrorr	   r   s    r   test_init_fail&TestEccPoint_Curve25519.test_init_failL   s6    *iAsFRK,O*iLAr    c                    [        U R                  S5      n[        U R                  S5      nU R                  X5        U R	                  X5        UR                  U5        U R                  UR                  UR                  5        g Nr   )r	   v1v2r#   assertNotEqualsetxr   point1point2s      r   test_equal_set&TestEccPoint_Curve25519.test_equal_setP   sb    477L1477L1(F+

6688,r    c                     [        U R                  S5      nUR                  5       nU R                  UR                  UR                  5        g r0   )r	   r1   copyr#   r5   r6   s      r   	test_copy!TestEccPoint_Curve25519.test_copyZ   s5    477L1688,r    c                     [        U R                  S5      nUR                  5       nU R                  UR                  5       5        [        S S5      nU R                  UR                  5       5        g r0   )r	   r1   point_at_infinity
assertTrue)r   r7   pair8   s       r   test_pai TestEccPoint_Curve25519.test_pai_   sV    477L1&&(--/04.0023r    c                 L   [        SS5      nSU-  nU R                  UR                  5       5        SU-  nU R                  UR                  5       5        US-  nU R                  UR                  S5        [
         H%  u  p4X1-  nU R                  UR                  U5        M'     g )Nr   r   r   l   S9i@eM^w|o                r   )r	   rA   r@   r#   r5   scalar_base9_test)r   basepointHdresults        r   test_scalar_multiply,TestEccPoint_Curve25519.test_scalar_multiplyg   s    L)T0023SVZZ00231%*IAXFVXXv. +r    c                     [        SS5      nU R                  UR                  5       S5        U R                  UR                  5       S5        g )Nr   r   r       )r	   r#   size_in_bitssize_in_bytesr%   s     r   
test_sizes"TestEccPoint_Curve25519.test_sizesw   s@    !\*++-s3,,.3r     N)__name__
__module____qualname____firstlineno__r1   r2   r   r'   r-   r9   r=   rC   rK   rQ   __static_attributes__rS   r    r   r   r   ?   s5    	KB	KB14B--
4/ 4r    r   c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
TestEccKey_Curve25519}   c                    [        S5      n[        S5      n[        R                  " USS9n[        SUS9nU R	                  UR
                  U5        U R                  UR                  5       5        U R	                  UR                  R                  U5        [        S5      n[        S5      n[        R                  " USS9n[        SUS9nU R	                  UR
                  U5        U R                  UR                  5       5        U R	                  UR                  R                  U5        [        S	US9nU R                  [        [        S	S
S9  g )N@77076d0a7318a57d3c16c17251b26645df4c2f87ebc0992ab177fba51db92c2a@8520f0098930a754748b7ddcb43ef75a0dbf3a0d26381af4eba4a98eaa9b4e6alittle	byteorderr"   r$   seed@5dab087e624a8a4b79e17f8b83800ee66f3bb1292618b6fd1c2f8b27ff88e0eb@de9edb7d7b7dc1b4d35b61c2ece435373f8343c85b78674dadfc7e146f882b4fr   r   r$   rI   )r   r   
from_bytesr   r#   rc   rA   has_privatepointQr5   r+   r,   )r   
alice_priv	alice_pubalice_pub_xkeybob_privbob_pub	bob_pub_xs           r   test_private_key&TestEccKey_Curve25519.test_private_key   s   ab
`a	((hG<j9:.)*{3 _`^_&&w(C	<h78,)*y1 <j9 	*fLAFr    c                     [        [        S   R                  SS9n[        SUS9nU R	                  UR                  5       5        U R                  UR                  U5        g )Nr   r$   )r$   r&   )r	   r
   Gxr   assertFalserh   r#   ri   )r   r&   rm   s      r   test_public_key%TestEccKey_Curve25519.test_public_key   sQ    ',/22 ,.<u5*+U+r    c                     [        SSS9nUR                  5       nU R                  UR                  5       5        U R	                  UR
                  UR
                  5        g )Nr       HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHrb   )r   
public_keyrv   rh   r#   ri   )r   priv_keypub_keys      r   test_public_key_derived-TestEccKey_Curve25519.test_public_key_derived   sK    7;%%',,./'..9r    c                 2    U R                  [        S 5        g )Nc                      [        SSS9$ )Nr      HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHrb   )r   rS   r    r   <lambda>9TestEccKey_Curve25519.test_invalid_seed.<locals>.<lambda>   s    f<i.Xr    )r+   r,   r   s    r   test_invalid_seed'TestEccKey_Curve25519.test_invalid_seed   s    *&XYr    c                    [         R                  " SSS9n[         R                  " SSS9n[         R                  " SSS9nUR                  5       nUR                  5       nUR                  5       nU R                  X5        U R	                  X5        U R                  XE5        U R	                  XF5        U R	                  XA5        g )Nrz   r"   )rc   r$   r   s    CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC)r   	constructr{   r#   r3   )r   private_keyprivate_key2private_key3r{   public_key2public_key3s          r   test_equality#TestEccKey_Curve25519.test_equality   s    mmE}}'F}}'F ++-
"--/"--/3K61J4J4r    c                     [         R                  " SS9nU R                  S[        U5      5        U R	                  UR
                  S5        U R	                  UR                  5       R
                  S5        g )Nr   rt   zcurve='Curve25519'r"   )r   generateassertInreprr#   r$   r{   )r   rm   s     r   test_name_consistency+TestEccKey_Curve25519.test_name_consistency   sT    ll.*DI6L1)//>r    rS   N)rT   rU   rV   rW   rq   rw   r~   r   r   r   rX   rS   r    r   rZ   rZ   }   s"    G6,:Z5"?r    rZ   c                   &    \ rS rSrS rS rS rSrg)TestEccModule_Curve25519   c                 N   [         R                  " SS9nU R                  UR                  5       5        [	        [
        S   R                  SS9UR                  -  nU R                  UR                  U5        [         R                  " SS9nU R                  X5        [         R                  " SS9  [         R                  " S[        R                  " 5       R                  S9n[         R                  " S[        R                  " 5       R                  S9nU R                  XC5        g )Nr"   rt   r   )r$   randfunc)r   r   rA   rh   r	   r
   ru   rI   r#   ri   r3   r   newread)r   rm   r&   key2key1s        r   test_generate&TestEccModule_Curve25519.test_generate   s    ll.)*',/22,G#%%OU+ ||,/C& 	<( ||,9L9LM||,9L9LM$r    c                 x   [        S5      n[        S5      n[        R                  " USS9n[        USS9n[        R
                  " SUS9nU R                  UR                  U5        U R                  UR                  5       5        [        R
                  " SUS9nU R                  UR                  U5        U R                  UR                  5       5        [        R
                  " SXS	9nU R                  UR                  U5        U R                  UR                  5       5        [        R
                  " S
US9ng )Nr]   r^   r_   r`   r"   rt   rb   r$   point_x)r$   rc   r   r   )r   r   rg   r	   r   r   r#   ri   rA   rh   rv   )r   rc   	point_hexPxr&   rm   s         r   test_construct'TestEccModule_Curve25519.test_construct   s    [\`a		X>"L1 mm,T:U+)* mm,;U+*+ mm,TFU+)* mm,T:r    c                 x   [        [        S   R                  S9nU R                  " [        [
        R                  4SSS.UD6  U R                  [        [
        R                  SSS9  U R                  [        [
        R                  SSS	9  U R                  [        [
        R                  SS
S	9  U R                  [        [
        R                  SSS	9  U R                  [        [
        R                  SSS	9  SS-  S-
  nU R                  [        [
        R                  SUS
-
  S	9  U R                  [        [
        R                  SUS	9  U R                  [        [
        R                  SUS
-   S	9  U R                  [        [
        R                  SUS-   S	9  U R                  [        [
        R                  SUS-   S	9  U R                  [        [
        R                  SUS-  S
-
  S	9  U R                  [        [
        R                  SUS-  S	9  U R                  [        [
        R                  SUS-  S
-   S	9  g )Nr   )r   r"   r   rf   r   rb   r   r   r   l   kxujaj\~|ObjZs	oP,E$ l   _+yBb$:6gw[8cph[DS7OWr   r   )dictr
   ru   r+   r,   r   r   )r   coordGps      r   test_negative_construct0TestEccModule_Curve25519.test_negative_construct   s   gl3667*cmmW<1WPVW*cmm<gV 	*cmm<"# 	 	%*cmm<"# 	 	%*cmm<"m 	 	o*cmm<"o 	 	qsFRK*cmm<"#A# 	 	'*cmm<"# 	 	%*cmm<"#A# 	 	'*cmm<"#$o"o 	 	q*cmm<"#$q"q 	 	s*cmm<"#A#a% 	 	)*cmm<"#A# 	 	'*cmm<"#A#a% 	 	)r    rS   N)rT   rU   rV   rW   r   r   r   rX   rS   r    r   r   r      s    %$;0)r    r   c                 v    / nU[        [        5      -  nU[        [        5      -  nU[        [        5      -  nU$ N)r   r   rZ   r   )configtestss     r   	get_testsr     s<    E	_455E	_233E	_566ELr    __main__c                  >    [         R                  " [        5       5      $ r   )unittest	TestSuiter   rS   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
   rF   TestCaser   rZ   r   r   rT   r   mainrS   r    r   <module>r      s   >   5 '     ; ; $;4h// ;4|B?H-- B?JK)x00 K)\   z/MMg& r    