
    9i'                     p   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S	-  SS
-  -
  S-
  rSS-  S-
  rSSSSSSSSSSSSS\S-   S4/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\ R2                  " S%S&9  gg)'    N)	unhexlify)list_test_cases)Integer)SHAKE128)ECC)EccKey	EccXPoint_curves           i  l   ;O)u9d
NG\cIoSDY%	c; )r      )r   l   <8i ABV	xt%qhG?:M3;<_zDwIW/2Fo5)+"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   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_Curve448%   l   4!'MI.>.< OoffY<	l   $+'UfbCxDm1,\qt<K?:!c                 B    [        SS5        [        [        S-
  S5        g )Nr   curve448)r	   
CURVE448_Pselfs    k/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/Crypto/SelfTest/PublicKey/test_ECC_Curve448.py	test_initTestEccPoint_Curve448.test_init*   s    !Z *q.*-    c                 T    [        SS5      nU R                  UR                  S5        g )Nr   r   Curve448)r	   assertEqualcurver   points     r   test_curve_attribute*TestEccPoint_Curve448.test_curve_attribute.   s"    !Z(j1r"   c                     U R                  [        [        S[        -  S5        U R                  [        [        SS5        g )Nr   r   curve449)assertRaises
ValueErrorr	   r   r   s    r   test_init_fail$TestEccPoint_Curve448.test_init_fail2   s.    *i:zJ*iJ?r"   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_Curve448.test_equal_set6   sb    477J/477J/(F+

6688,r"   c                     [        U R                  S5      nUR                  5       nU R                  UR                  UR                  5        g r2   )r	   r3   copyr%   r7   r8   s      r   	test_copyTestEccPoint_Curve448.test_copy@   s5    477J/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 r2   )r	   r3   point_at_infinity
assertTrue)r   r9   pair:   s       r   test_paiTestEccPoint_Curve448.test_paiE   sV    477J/&&(--/04,0023r"   c                 T   [        SS5      nSU-  nU R                  UR                  5       5        [        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   r   )r	   rC   rB   CURVE448_ORDERr%   r7   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                     [        SS5      nU R                  UR                  5       S5        U R                  UR                  5       S5        g )Nr   r   r   8   )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__r3   r4   r    r)   r/   r;   r?   rE   rN   rT   __static_attributes__rV   r"   r   r   r   %   s5    	KB	KB.2@--
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_Curve448c   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 )Np9a8f4925d1519f5775cf46b04b5800d4ee9ee8bae8bc5565d498c28dd9c9baf574a9419744897391006382a6f127ab1d9ac2d8c0a598726bp9b08f7cc31b7e3e67d22d5aea121074a273bd2b83de09c63faa73d2c22c5d9bbc836647241d953d40c5b12da88120d53177f80e532c41fa0little	byteorderr$   r&   seedp1c306a7ac2a0e2e0990b294470cba339e6453772b075811d8fad0d1d6927c120bb5ee8972b0d3e21374c9c921b09d1b0366f10b65173992dp3eb7a829b0cd20f5bcfc0b599b6feccf6da4627107bdb0d4f345b43027d8b972fc3e34fb4232a13ca706dcb57aec3dae07bdc1c67bf33609r   r   r&   rL   )r   r   
from_bytesr   r%   rf   rC   has_privatepointQr7   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                     [        [        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   assertFalserk   r%   rl   )r   r(   rp   s      r   test_public_key#TestEccKey_Curve448.test_public_key   sQ    '*-00 *,:U3*+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   8   HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHre   )r   
public_keyry   rk   r%   rl   )r   priv_keypub_keys      r   test_public_key_derived+TestEccKey_Curve448.test_public_key_derived   sK    
9%%',,./'..9r"   c                 2    U R                  [        S 5        g )Nc                      [        SSS9$ )Nr   7   HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHre   )r   rV   r"   r   <lambda>7TestEccKey_Curve448.test_invalid_seed.<locals>.<lambda>   s    f::C/Er"   )r-   r.   r   s    r   test_invalid_seed%TestEccKey_Curve448.test_invalid_seed   s    * 'E 	Fr"   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 )Nr}   r$   )rf   r&   r   s8   CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC)r   	constructr~   r%   r5   )r   private_keyprivate_key2private_key3r~   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                     [         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   rw   zcurve='Curve448'r$   )r   generateassertInreprr%   r&   r~   )r   rp   s     r   test_name_consistency)TestEccKey_Curve448.test_name_consistency   sT    ll,($s)4J/)//<r"   rV   N)rW   rX   rY   rZ   rt   rz   r   r   r   r   r[   rV   r"   r   r]   r]   c   s"    E6,:F5"=r"   r]   c                   &    \ rS rSrS rS rS rSrg)TestEccModule_Curve448   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$   rw   r   )r&   randfunc)r   r   rC   rk   r	   r
   rx   rL   r%   rl   r5   r   newread)r   rp   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                 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`   ra   rb   rc   r$   rw   re   r&   point_x)r&   rf   r   r   )r   r   rj   r	   r   r   r%   rl   rC   rk   ry   )r   rf   	point_hexPxr(   rp   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                 b   [        [        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  SS-  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  g )Nr   )r   r$   r   ri   r   re   r   r   r   r   r   )dictr
   rx   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"   rV   N)rW   rX   rY   rZ   r   r   r   r[   rV   r"   r   r   r      s    %$90'r"   r   c                 v    / nU[        [        5      -  nU[        [        5      -  nU[        [        5      -  nU$ N)r   r   r]   r   )configtestss     r   	get_testsr      s<    E	_233E	_011E	_344ELr"   __main__c                  >    [         R                  " [        5       5      $ r   )unittest	TestSuiter   rV   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   rH   rI   TestCaser   r]   r   r   rW   r   mainrV   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"   