+
    '(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,          ^^,          ,
          ^,
          t^R	,          R
,
          tRRRRRRRRRRR R!R"]^,           ^3.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] P2                  ! RR7       R# R# )#    N)	unhexlify)list_test_cases)Integer)SHAKE128)ECC)EccKey	EccXPoint_curves  i  l   ;O)u9d
NG\cIoSDY%	c; c                   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_Curve448l   4!'MI.>.< OoffY<	l   $+'UfbCxDm1,\qt<K?:!c                L    \        ^R4       \        \        ^,
          R4       R#    curve448N)r	   
CURVE448_Pselfs   &`/home/ubuntu/cf-venv/lib/python3.14/site-packages/Crypto/SelfTest/PublicKey/test_ECC_Curve448.py	test_initTestEccPoint_Curve448.test_init*   s    !Z *q.*-    c                V    \        ^R4      pV P                  VP                  R4       R# )r   r   Curve448N)r	   assertEqualcurver   points   & r   test_curve_attribute*TestEccPoint_Curve448.test_curve_attribute.   s"    !Z(j1r   c                    V P                  \        \        ^\        ,          R4       V P                  \        \        ^R4       R# )   r   curve449N)assertRaises
ValueErrorr	   r   r   s   &r   test_init_fail$TestEccPoint_Curve448.test_init_fail2   s.    *i:zJ*iJ?r   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_Curve448.test_equal_set6   sb    477J/477J/(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_Curve448.test_copy@   s5    477J/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   r0   pair1   s   &   r   test_paiTestEccPoint_Curve448.test_paiE   sV    477J/&&(--/04,0023r   c                v   \        ^R4      p^ V,          pV P                  VP                  4       4       \        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	   r:   r9   CURVE448_ORDERr   r.   scalar_base5_test)r   basepointHdresults   &    r   test_scalar_multiply*TestEccPoint_Curve448.test_scalar_multiplyM   s    J'T0023$&00231%*IAXFVXXv. +r   c                    \        ^R4      pV P                  VP                  4       R4       V P                  VP                  4       ^84       R# )r   r   r   N)r	   r   size_in_bitssize_in_bytesr   s   & r   
test_sizes TestEccPoint_Curve448.test_sizes]   s@    !Z(++-s3,,.3r    N)__name__
__module____qualname____firstlineno__r*   r+   r   r   r&   r2   r6   r<   rE   rJ   __static_attributes____classdictcell____classdict__s   @r   r   r   %   s=     	KB	KB.2@--
4/ 4 4r   r   c                   D   a  ] tR t^ct o R tR tR tR tR tR t	Rt
V tR# )	TestEccKey_Curve448c                   \        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
# )p9a8f4925d1519f5775cf46b04b5800d4ee9ee8bae8bc5565d498c28dd9c9baf574a9419744897391006382a6f127ab1d9ac2d8c0a598726bp9b08f7cc31b7e3e67d22d5aea121074a273bd2b83de09c63faa73d2c22c5d9bbc836647241d953d40c5b12da88120d53177f80e532c41fa0little	byteorderr   r   seedp1c306a7ac2a0e2e0990b294470cba339e6453772b075811d8fad0d1d6927c120bb5ee8972b0d3e21374c9c921b09d1b0366f10b65173992dp3eb7a829b0cd20f5bcfc0b599b6feccf6da4627107bdb0d4f345b43027d8b972fc3e34fb4232a13ca706dcb57aec3dae07bdc1c67bf33609r   )r   rC   N)r   r   
from_bytesr   r   r^   r:   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_Curve448.test_private_keye   s)      R  S
  Q  R	((hG:J7:.)*{3   P  Q  O  P&&w(C	:H58,)*y1 :J7 	*fJ!Dr   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   assertFalserb   r   rc   )r   r   rg   s   &  r   test_public_key#TestEccKey_Curve448.test_public_key   sQ    '*-00 *,:U3*+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   r]   N8   HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH)r   
public_keyrp   rb   r   rc   )r   priv_keypub_keys   &  r   test_public_key_derived+TestEccKey_Curve448.test_public_key_derived   sK    
9%%',,./'..9r   c                4    V P                  \        R  4       R# )c                      \        R RR7      # )r   r]   7   HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH)r   rL   r   r   <lambda>7TestEccKey_Curve448.test_invalid_seed.<locals>.<lambda>   s    f::C/Er   N)r$   r%   r   s   &r   test_invalid_seed%TestEccKey_Curve448.test_invalid_seed   s    * 'E 	Fr   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   Nrt   s8   CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC)r   	constructru   r   r,   )r   private_keyprivate_key2private_key3ru   public_key2public_key3s   &      r   test_equality!TestEccKey_Curve448.test_equality   s    mm
C}}'D}}'D ++-
"--/"--/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   rn   zcurve='Curve448'r   N)r   generateassertInreprr   r   ru   )r   rg   s   & r   test_name_consistency)TestEccKey_Curve448.test_name_consistency   sT    ll,($s)4J/)//<r   rL   N)rM   rN   rO   rP   rk   rq   rx   r   r   r   rQ   rR   rS   s   @r   rV   rV   c   s*     E6,:F5"= =r   rV   c                   2   a  ] tR t^t o R tR tR tRtV tR# )TestEccModule_Curve448c                   \         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   rn   r   )r   randfuncN)r   r   r:   rb   r	   r
   ro   rC   r   rc   r,   r   newread)r   rg   r   key2key1s   &    r   test_generate$TestEccModule_Curve448.test_generate   s    ll,)*'*-00
CceeKU+ ||*-C& 	:& ||*x||~7J7JK||*x||~7J7JK$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
# )rX   rY   rZ   r[   r   rn   r]   r   point_x)r   r^   r   r   N)r   r   ra   r	   r   r   r   rc   r:   rb   rp   )r   r^   	point_hexPxr   rg   s   &     r   test_construct%TestEccModule_Curve448.test_construct   s     L  M  Q  R		X>"J/ mm*48U+)* mm*b9U+*+ mm*4DU+)* mm*48r   c                   \        \        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       ^R,          ^^,          ,
          ^,
          p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   rC   r]   r   r   Nr|   )dictr
   ro   r$   r%   r   r   )r   coordGps   &  r   test_negative_construct.TestEccModule_Curve448.test_negative_construct   s$   gj1445*cmm 	): 	)	)!'	)*cmm:& 	 	( 	*cmm:"# 	 	%*cmm:"# 	 	%sFQVOa*cmm:"#A# 	 	'*cmm:"# 	 	%*cmm:"#A# 	 	'r   rL   N)	rM   rN   rO   rP   r   r   r   rQ   rR   rS   s   @r   r   r      s     %$90' 'r   r   c                     . pV\        \        4      ,          pV\        \        4      ,          pV\        \        4      ,          pV# N)r   r   rV   r   )configtestss   & r   	get_testsr      s<    E	_233E	_011E	_344ELr   __main__c                  >    \         P                  ! \        4       4      # r   )unittest	TestSuiter   rL   r   r   suiter      s    !!)+..r   r   )defaultTest)   r   )   l   <8i ABV	xt%qhG?:M3;<_zDwIW/2Fo5)+"r)r"   l   Ls
4EQGCD>MRrou1& ,d0BDqaIKAB*&,d)   l   b"yu/mX~udd#z
Nk`{dt>'iEEu=J4')   l   X5V'w,P9FszL,	 $X1i=U& rgk1S|"ePXo)zeQ')	   l   -h_xaJ=?{OdG;
]:XauXNIwr"Yw\|?f>7W.)   l    #~mpN"d *[b@>j)e		dtijwPJUVAPP[)   l   +?']-w
qD+C#z;>XI#D	X79QmF"z088$\D.C7)   l   A&1AV9&bu)%s* Q.sru%&F3iZ"(r \!K!s\ )i  l   h[~=IHs']TeV}STeIV"tX\}VI. !	p)i l   A`8QKAQ%zY0) X$n2xP>B;cZG].f=VJqN;')iU l   lIwoQZmj=k/jox"lgW}&F ?y,pi%)l   g x^rP)l   0SK>e*a`DV/!?an8a_p.]dday`i;{)r   binasciir   Crypto.SelfTest.st_commonr   Crypto.Math.Numbersr   Crypto.Hashr   Crypto.PublicKeyr   Crypto.PublicKey.ECCr   r	   r
   r   r?   r@   TestCaser   rV   r   r   rM   r   mainrL   r   r   <module>r      s      5 '     ; ;Vaf_q 
CTT
 {{z{{}}|} B C Pa $;4H-- ;4|C=(++ C=L?'X.. ?'D   z/MMg& r   