
    ¿ig'                     h   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
 d dlmZmZmZ dd	z  dd
z  z
  dz
  Zddz  dz
  Zdddddddddddddedz   dfg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 j        d%&           dS dS )'    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                   F    e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )TestEccPoint_Curve448l   4!'MI.>.< OoffY<	l   $+'UfbCxDm1,\qt<K?:!c                 V    t          dd           t          t          dz
  d           d S )Nr   curve448)r	   
CURVE448_Pselfs    k/var/www/html/afkarena/venv/lib/python3.11/site-packages/Cryptodome/SelfTest/PublicKey/test_ECC_Curve448.py	test_initzTestEccPoint_Curve448.test_init*   s,    !Z   *q.*-----    c                 \    t          dd          }|                     |j        d           d S )Nr   r   Curve448)r	   assertEqualcurver   points     r   test_curve_attributez*TestEccPoint_Curve448.test_curve_attribute.   s/    !Z((j11111r    c                     |                      t          t          dt          z  d           |                      t          t          dd           d S )Nr   r   curve449)assertRaises
ValueErrorr	   r   r   s    r   test_init_failz$TestEccPoint_Curve448.test_init_fail2   s@    *i:zJJJ*iJ?????r    c                    t          | j        d          }t          | j        d          }|                     ||           |                     ||           |                    |           |                     |j        |j                   d S Nr   )r	   v1v2r#   assertNotEqualsetxr   point1point2s      r   test_equal_setz$TestEccPoint_Curve448.test_equal_set6   s    47J//47J//(((FF+++

668,,,,,r    c                     t          | j        d          }|                                }|                     |j        |j                   d S r.   )r	   r/   copyr#   r3   r4   s      r   	test_copyzTestEccPoint_Curve448.test_copy@   s@    47J//68,,,,,r    c                    t          | j        d          }|                                }|                     |                                           t          d d          }|                     |                                           d S r.   )r	   r/   point_at_infinity
assertTrue)r   r5   pair6   s       r   test_paizTestEccPoint_Curve448.test_paiE   su    47J//&&((--//0004,,002233333r    c                 z   t          dd          }d|z  }|                     |                                           t          |z  }|                     |                                           |dz  }|                     |j        d           t          D ]%\  }}||z  }|                     |j        |           &d S )Nr   r   r   r   )r	   r=   r<   CURVE448_ORDERr#   r3   scalar_base5_test)r   basepointHdresults        r   test_scalar_multiplyz*TestEccPoint_Curve448.test_scalar_multiplyM   s    J''T0022333$&00223331%%%* 	/ 	/IAvXFVXv....	/ 	/r    c                     t          dd          }|                     |                                d           |                     |                                d           d S )Nr   r   r   8   )r	   r#   size_in_bitssize_in_bytesr%   s     r   
test_sizesz TestEccPoint_Curve448.test_sizes]   s[    !Z((++--s333,,..33333r    N)__name__
__module____qualname__r/   r0   r   r'   r,   r7   r:   r?   rG   rL    r    r   r   r   %   s        	KB	KB. . .2 2 2@ @ @- - -- - -
4 4 4/ / / 4 4 4 4 4r    r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestEccKey_Curve448c                 
   t          d          }t          d          }t          j        |d          }t          d|          }|                     |j        |           |                     |                                           |                     |j        j	        |           t          d          }t          d          }t          j        |d          }t          d|          }|                     |j        |           |                     |                                           |                     |j        j	        |           t          d	|          }| 
                    t          t          d	d
           d S )Np9a8f4925d1519f5775cf46b04b5800d4ee9ee8bae8bc5565d498c28dd9c9baf574a9419744897391006382a6f127ab1d9ac2d8c0a598726bp9b08f7cc31b7e3e67d22d5aea121074a273bd2b83de09c63faa73d2c22c5d9bbc836647241d953d40c5b12da88120d53177f80e532c41fa0little	byteorderr"   r$   seedp1c306a7ac2a0e2e0990b294470cba339e6453772b075811d8fad0d1d6927c120bb5ee8972b0d3e21374c9c921b09d1b0366f10b65173992dp3eb7a829b0cd20f5bcfc0b599b6feccf6da4627107bdb0d4f345b43027d8b972fc3e34fb4232a13ca706dcb57aec3dae07bdc1c67bf33609r   r   r$   rE   )r   r   
from_bytesr   r#   rZ   r=   has_privatepointQr3   r*   r+   )r   
alice_priv	alice_pubalice_pub_xkeybob_privbob_pub	bob_pub_xs           r   test_private_keyz$TestEccKey_Curve448.test_private_keye   s      R  S  S
  Q  R  R	(hGGG:J777:...))***{333   P  Q  Q  O  P  P&w(CCC	:H5558,,,))***y111 :J777 	*fJ!DDDDDr    c                     t          t          d         j        d          }t          d|          }|                     |                                           |                     |j        |           d S )Nr   r$   )r$   r&   )r	   r
   Gxr   assertFalser_   r#   r`   )r   r&   rd   s      r   test_public_keyz#TestEccKey_Curve448.test_public_key   sq    '*-0 *, , ,:U333**+++U+++++r    c                     t          dd          }|                                }|                     |                                           |                     |j        |j                   d S )Nr   8   HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHrY   )r   
public_keyrl   r_   r#   r`   )r   priv_keypub_keys      r   test_public_key_derivedz+TestEccKey_Curve448.test_public_key_derived   se    
999%%'',,..///'.99999r    c                 >    |                      t          d            d S )Nc                  $    t          dd          S )Nr   7   HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHrY   )r   rP   r    r   <lambda>z7TestEccKey_Curve448.test_invalid_seed.<locals>.<lambda>   s    f::C/E /E /E r    )r*   r+   r   s    r   test_invalid_seedz%TestEccKey_Curve448.test_invalid_seed   s7    * 'E 'E 	F 	F 	F 	F 	Fr    c                    t          j        dd          }t          j        dd          }t          j        dd          }|                                }|                                }|                                }|                     ||           |                     ||           |                     ||           |                     ||           |                     ||           d S )Nro   r"   )rZ   r$   r   s8   CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC)r   	constructrp   r#   r1   )r   private_keyprivate_key2private_key3rp   public_key2public_key3s          r   test_equalityz!TestEccKey_Curve448.test_equality   s    m
CCC}'DDD}'DDD ++--
"--//"--//l333K666[111J444J44444r    c                    t          j        d          }|                     dt          |                     |                     |j        d           |                     |                                j        d           d S )Nr   rj   zcurve='Curve448'r"   )r   generateassertInreprr#   r$   rp   )r   rd   s     r   test_name_consistencyz)TestEccKey_Curve448.test_name_consistency   sp    l,,,($s))444J///))/<<<<<r    N)	rM   rN   rO   rh   rm   rs   rx   r   r   rP   r    r   rR   rR   c   st        E E E6, , ,: : :F F F5 5 5"= = = = =r    rR   c                        e Zd Zd Zd Zd ZdS )TestEccModule_Curve448c                 b   t          j        d          }|                     |                                           t	          t
          d         j        d          |j        z  }|                     |j	        |           t          j        d          }| 
                    ||           t          j        d           t          j        dt          j                    j                  }t          j        dt          j                    j                  }|                     ||           d S )Nr"   rj   r   )r$   randfunc)r   r   r=   r_   r	   r
   rk   rE   r#   r`   r1   r   newread)r   rd   r&   key2key1s        r   test_generatez$TestEccModule_Curve448.test_generate   s    l,,,))***'*-0
CCCceKU+++ |*---C&&& 	:&&&& |*x|~~7JKKK|*x|~~7JKKKt$$$$$r    c                    t          d          }t          d          }t          j        |d          }t          |d          }t	          j        d|          }|                     |j        |           |                     |	                                           t	          j        d|          }|                     |j        |           | 
                    |	                                           t	          j        d||	          }|                     |j        |           |                     |	                                           t	          j        d
|          }d S )NrT   rU   rV   rW   r"   rj   rY   r$   point_x)r$   rZ   r   r   )r   r   r^   r	   r   rz   r#   r`   r=   r_   rl   )r   rZ   	point_hexPxr&   rd   s         r   test_constructz%TestEccModule_Curve448.test_construct   sS     L  M  M  Q  R  R		X>>>"J/// m*4888U+++))*** m*b999U+++**+++ m*4DDDU+++))*** m*4888r    c                    t          t          d         j                  } | j        t          t
          j        fddd| |                     t          t
          j        dd           |                     t          t
          j        dd	           |                     t          t
          j        dd
	           ddz  ddz  z
  d
z
  }|                     t          t
          j        d|d
z
  	           |                     t          t
          j        d|	           |                     t          t
          j        d|d
z   	           d S )Nr   )r   r"   r   r]   rv   rY   r   r   r   r   r   )dictr
   rk   r*   r+   r   rz   )r   coordGps      r   test_negative_constructz.TestEccModule_Curve448.test_negative_construct   sh   gj14555*cm 	):	) 	)!'	) 	) 	)*cm:& 	 	( 	( 	( 	*cm:"# 	 	% 	% 	%*cm:"# 	 	% 	% 	%sFQVOa*cm:"#A# 	 	' 	' 	'*cm:"# 	 	% 	% 	%*cm:"#A# 	 	' 	' 	' 	' 	'r    N)rM   rN   rO   r   r   r   rP   r    r   r   r      sA        % % %$9 9 90' ' ' ' 'r    r   c                     g }|t          t                    z  }|t          t                    z  }|t          t                    z  }|S N)r   r   rR   r   )configtestss     r   	get_testsr      sE    E	_2333E	_0111E	_3444ELr    __main__c                  B    t          j        t                                S r   )unittest	TestSuiter   rP   r    r   suiter      s    !)++...r    r   )defaultTest)r   binasciir   Cryptodome.SelfTest.st_commonr   Cryptodome.Math.Numbersr   Cryptodome.Hashr   Cryptodome.PublicKeyr   Cryptodome.PublicKey.ECCr   r	   r
   r   rA   rB   TestCaser   rR   r   r   rM   r   mainrP   r    r   <module>r      s          9 9 9 9 9 9 + + + + + + $ $ $ $ $ $ $ $ $ $ $ $ ? ? ? ? ? ? ? ? ? ?Vaf_q 
CTT
 {{z{{}}|} B C Pa $;4 ;4 ;4 ;4 ;4H- ;4 ;4 ;4|C= C= C= C= C=(+ C= C= C=L?' ?' ?' ?' ?'X. ?' ?' ?'D      z/ / /HMg&&&&&& r    