+
    '(j.                     .   ^ RI t ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RI	H
t
 ^ RIHtHtHt . ROt ! R R	] P                   4      t ! R
 R] P                   4      t ! R R] P                   4      t/ 3R lt]R8X  d   R t] P.                  ! RR7       R# R# )    N)	unhexlify)list_test_cases)Integer)SHAKE128)ECC)EccKey	EccXPoint_curvesc                   X   a  ] tR t^?t o RtRtR tR tR tR t	R t
R tR	 tR
 tRtV tR# )TestEccPoint_Curve25519l   4!'MI.>.< OoffY<	l   $+'UfbCxDm1,\qt<K?:!c                `    \        ^	R4       \        ^^,          ^,
          ^,           R4       R# 	   
curve25519N)r	   selfs   &b/home/ubuntu/cf-venv/lib/python3.14/site-packages/Crypto/SelfTest/PublicKey/test_ECC_Curve25519.py	test_init!TestEccPoint_Curve25519.test_initD   s"    !\"!S&2+/<0    c                V    \        ^	R4      pV P                  VP                  R4       R# )r   r   
Curve25519N)r	   assertEqualcurver   points   & r   test_curve_attribute,TestEccPoint_Curve25519.test_curve_attributeH   s"    !\*l3r   c                    V P                  \        \        ^^^,          ^,
          ,          R4       V P                  \        \        ^	R4       R# )   r   
curve25518N)assertRaises
ValueErrorr	   r   s   &r   test_init_fail&TestEccPoint_Curve25519.test_init_failL   s6    *iAsFRK,O*iLAr   c                   \        V P                  R 4      p\        V P                  R 4      pV P                  W4       V P	                  W4       VP                  V4       V P                  VP                  VP                  4       R# r   N)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                    \        V P                  R 4      pVP                  4       pV P                  VP                  VP                  4       R# r'   )r	   r(   copyr   r,   r-   s   &  r   	test_copy!TestEccPoint_Curve25519.test_copyZ   s5    477L1688,r   c                    \        V P                  R 4      pVP                  4       pV P                  VP                  4       4       \        RR 4      pV P                  VP                  4       4       R# r'   )r	   r(   point_at_infinity
assertTrue)r   r.   pair/   s   &   r   test_pai TestEccPoint_Curve25519.test_pai_   sV    477L1&&(--/04.0023r   c                n   \        ^	R4      p^ V,          pV P                  VP                  4       4       RV,          pV P                  VP                  4       4       V^,          pV P                  VP                  ^	4       \
         F)  w  r4W1,          pV P                  VP                  V4       K+  	  R# )r   r   l   S9i@eM^w|o                N)r	   r8   r7   r   r,   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                    \        ^	R4      pV P                  VP                  4       ^4       V P                  VP                  4       ^ 4       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__r(   r)   r   r   r$   r0   r4   r:   rB   rG   __static_attributes____classdictcell____classdict__s   @r   r   r   ?   s=     	KB	KB14B--
4/ 4 4r   r   c                   D   a  ] tR t^}t o R tR tR tR tR tR t	Rt
V tR# )	TestEccKey_Curve25519c                   \        R 4      p\        R4      p\        P                  ! VRR7      p\        RVR7      pV P	                  VP
                  V4       V P                  VP                  4       4       V P	                  VP                  P                  V4       \        R4      p\        R4      p\        P                  ! VRR7      p\        RVR7      pV P	                  VP
                  V4       V P                  VP                  4       4       V P	                  VP                  P                  V4       \        RVR7      pV P                  \        \        R^R	7       R
# )@77076d0a7318a57d3c16c17251b26645df4c2f87ebc0992ab177fba51db92c2a@8520f0098930a754748b7ddcb43ef75a0dbf3a0d26381af4eba4a98eaa9b4e6alittle	byteorderr   r   seed@5dab087e624a8a4b79e17f8b83800ee66f3bb1292618b6fd1c2f8b27ff88e0eb@de9edb7d7b7dc1b4d35b61c2ece435373f8343c85b78674dadfc7e146f882b4fr   )r   r@   N)r   r   
from_bytesr   r   r[   r8   has_privatepointQr,   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                    \        \        R ,          P                  R R7      p\        R VR7      pV P	                  VP                  4       4       V P                  VP                  V4       R# )r   r   )r   r   N)r	   r
   Gxr   assertFalser_   r   r`   )r   r   rd   s   &  r   test_public_key%TestEccKey_Curve25519.test_public_key   sQ    ',/22 ,.<u5*+U+r   c                    \        R RR7      pVP                  4       pV P                  VP                  4       4       V P	                  VP
                  VP
                  4       R# )r   rZ   N    HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH)r   
public_keyrm   r_   r   r`   )r   priv_keypub_keys   &  r   test_public_key_derived-TestEccKey_Curve25519.test_public_key_derived   sK    7;%%',,./'..9r   c                4    V P                  \        R  4       R# )c                      \        R RR7      # )r   rZ      HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH)r   rI   r   r   <lambda>9TestEccKey_Curve25519.test_invalid_seed.<locals>.<lambda>   s    f<i.Xr   N)r"   r#   r   s   &r   test_invalid_seed'TestEccKey_Curve25519.test_invalid_seed   s    *&XYr   c                   \         P                  ! RRR7      p\         P                  ! RRR7      p\         P                  ! RRR7      pVP                  4       pVP                  4       pVP                  4       pV P                  W4       V P	                  W4       V P                  WE4       V P	                  WF4       V P	                  WA4       R# )   Hr   )r[   r   r   Nrq   s    CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC)r   	constructrr   r   r*   )r   private_keyprivate_key2private_key3rr   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                    \         P                  ! R R7      pV P                  R\        V4      4       V P	                  VP
                  R4       V P	                  VP                  4       P
                  R4       R# )r   rk   zcurve='Curve25519'r   N)r   generateassertInreprr   r   rr   )r   rd   s   & r   test_name_consistency+TestEccKey_Curve25519.test_name_consistency   sT    ll.*DI6L1)//>r   rI   N)rJ   rK   rL   rM   rh   rn   ru   r|   r   r   rN   rO   rP   s   @r   rS   rS   }   s*     G6,:Z5"? ?r   rS   c                   2   a  ] tR t^t o R tR tR tRtV tR# )TestEccModule_Curve25519c                   \         P                  ! R R7      pV P                  VP                  4       4       \	        \
        R ,          P                  R R7      VP                  ,          pV P                  VP                  V4       \         P                  ! R R7      pV P                  W4       \         P                  ! RR7       \         P                  ! R \        P                  ! 4       P                  R7      p\         P                  ! R \        P                  ! 4       P                  R7      pV P                  WC4       R# )r   rk   r   )r   randfuncN)r   r   r8   r_   r	   r
   rl   r@   r   r`   r*   r   newread)r   rd   r   key2key1s   &    r   test_generate&TestEccModule_Curve25519.test_generate   s    ll.)*',/22,G#%%OU+ ||,/C& 	<( ||,9L9LM||,9L9LM$r   c                   \        R 4      p\        R4      p\        P                  ! VRR7      p\        VRR7      p\        P
                  ! RVR7      pV P                  VP                  V4       V P                  VP                  4       4       \        P
                  ! RVR7      pV P                  VP                  V4       V P                  VP                  4       4       \        P
                  ! RWR7      pV P                  VP                  V4       V P                  VP                  4       4       \        P
                  ! R	VR7      pR
# )rU   rV   rW   rX   r   rk   rZ   r   point_x)r   r[   r   r   N)r   r   r^   r	   r   r   r   r`   r8   r_   rm   )r   r[   	point_hexPxr   rd   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                0   \        \        R ,          P                  R7      pV P                  ! \        \
        P                  3RRR^/VB  V P                  \        \
        P                  RR
R7       V P                  \        \
        P                  R^ R7       V P                  \        \
        P                  R^R7       V P                  \        \
        P                  RRR7       V P                  \        \
        P                  RRR7       ^^,          ^,
          pV P                  \        \
        P                  RV^,
          R7       V P                  \        \
        P                  RVR7       V P                  \        \
        P                  RV^,           R7       V P                  \        \
        P                  RVR,           R7       V P                  \        \
        P                  RVR,           R7       V P                  \        \
        P                  RV^,          ^,
          R7       V P                  \        \
        P                  RV^,          R7       V P                  \        \
        P                  RV^,          ^,           R7       R	# )r   )r   r   r   r@   rZ   r   l   kxujaj\~|ObjZs	oP,E$ l   _+yBb$:6gw[8cph[DS7OWNry   )dictr
   rl   r"   r#   r   r   )r   coordGps   &  r   test_negative_construct0TestEccModule_Curve25519.test_negative_construct   s   gl3667*cmmW<W1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   rI   N)	rJ   rK   rL   rM   r   r   r   rN   rO   rP   s   @r   r   r      s     %$;0) )r   r   c                     . pV\        \        4      ,          pV\        \        4      ,          pV\        \        4      ,          pV# N)r   r   rS   r   )configtestss   & r   	get_testsr     s<    E	_455E	_233E	_566ELr   __main__c                  >    \         P                  ! \        4       4      # r   )unittest	TestSuiter   rI   r   r   suiter     s    !!)+..r   r   )defaultTest))   r   )   l   N:sre5FG;*!c(}6~Fj! )r    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   )r   binasciir   Crypto.SelfTest.st_commonr   Crypto.Math.Numbersr   Crypto.Hashr   Crypto.PublicKeyr   Crypto.PublicKey.ECCr   r	   r
   r=   TestCaser   rS   r   r   rJ   r   mainrI   r   r   <module>r      s   >   5 '     ; ; $;4h// ;4|B?H-- B?JK)x00 K)\   z/MMg& r   