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

6688,r    c                     t        | j                  d      }|j                         }| j                  |j                  |j                         y r.   )r	   r/   copyr#   r3   r4   s      r   	test_copyzTestEccPoint_Curve448.test_copy@   s5    477J/688,r    c                     t        | j                  d      }|j                         }| j                  |j                                t        d d      }| j                  |j                                y r.   )r	   r/   point_at_infinity
assertTrue)r   r5   pair6   s       r   test_paizTestEccPoint_Curve448.test_paiE   sV    477J/&&(--/04,0023r    c                 T   t        dd      }d|z  }| j                  |j                                t        |z  }| j                  |j                                |dz  }| j	                  |j
                  d       t        D ]&  \  }}||z  }| j	                  |j
                  |       ( y )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3$&00231%* 	/IAvXFVXXv.	/r    c                     t        dd      }| j                  |j                         d       | j                  |j                         d       y )Nr   r   r   8   )r	   r#   size_in_bitssize_in_bytesr%   s     r   
test_sizesz TestEccPoint_Curve448.test_sizes]   s@    !Z(++-s3,,.3r    N)__name__
__module____qualname__r/   r0   r   r'   r,   r7   r:   r?   rG   rL    r    r   r   r   %   s5    	KB	KB.2@--
4/ 4r    r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestEccKey_Curve448c                    t        d      }t        d      }t        j                  |d      }t        d|      }| j	                  |j
                  |       | j                  |j                                | j	                  |j                  j                  |       t        d      }t        d      }t        j                  |d      }t        d|      }| j	                  |j
                  |       | j                  |j                                | j	                  |j                  j                  |       t        d	|      }| j                  t        t        d	d
       y )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
  Q  R	((hG:J7:.)*{3   P  Q  O  P&&w(C	:H58,)*y1 :J7 	*fJ!Dr    c                     t        t        d   j                  d      }t        d|      }| j	                  |j                                | j                  |j                  |       y )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0 *,:U3*+U+r    c                     t        dd      }|j                         }| j                  |j                                | j	                  |j
                  |j
                         y )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   sK    
9%%',,./'..9r    c                 2    | j                  t        d        y )Nc                      t        dd      S )Nr   7   HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHrY   )r   rP   r    r   <lambda>z7TestEccKey_Curve448.test_invalid_seed.<locals>.<lambda>   s    f::C/E r    )r*   r+   r   s    r   test_invalid_seedz%TestEccKey_Curve448.test_invalid_seed   s    * 'E 	Fr    c                    t        j                  dd      }t        j                  dd      }t        j                  dd      }|j                         }|j                         }|j                         }| j                  ||       | j	                  ||       | j                  ||       | j	                  ||       | j	                  ||       y )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    mm
C}}'D}}'D ++-
"--/"--/l3K6[1J4J4r    c                     t        j                  d      }| j                  dt        |             | j	                  |j
                  d       | j	                  |j                         j
                  d       y )Nr   rj   zcurve='Curve448'r"   )r   generateassertInreprr#   r$   rp   )r   rd   s     r   test_name_consistencyz)TestEccKey_Curve448.test_name_consistency   sT    ll,($s)4J/)//<r    N)	rM   rN   rO   rh   rm   rs   rx   r   r   rP   r    r   rR   rR   c   s"    E6,:F5"=r    rR   c                       e Zd Zd Zd Zd Zy)TestEccModule_Curve448c                 h   t        j                  d      }| j                  |j                                t	        t
        d   j                  d      |j                  z  }| j                  |j                  |       t        j                  d      }| j                  ||       t        j                  d       t        j                  dt        j                         j                        }t        j                  dt        j                         j                        }| j                  ||       y )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    ll,)*'*-00
CceeKU+ ||*-C& 	:& ||*x||~7J7JK||*x||~7J7JKt$r    c                    t        d      }t        d      }t        j                  |d      }t        |d      }t	        j
                  d|      }| j                  |j                  |       | j                  |j                                t	        j
                  d|      }| j                  |j                  |       | j                  |j                                t	        j
                  d||	      }| j                  |j                  |       | j                  |j                                t	        j
                  d
|      }y )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   s     L  M  Q  R		X>"J/ mm*48U+)* mm*b9U+*+ mm*4DU+)* mm*48r    c                    t        t        d   j                        } | j                  t        t
        j                  fddd| | j                  t        t
        j                  dd       | j                  t        t
        j                  dd	       | j                  t        t
        j                  dd
	       ddz  ddz  z
  d
z
  }| j                  t        t
        j                  d|d
z
  	       | j                  t        t
        j                  d|	       | j                  t        t
        j                  d|d
z   	       y )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   s!   gj1445*cmm 	):	)!'	)*cmm:& 	 	( 	*cmm:"# 	 	%*cmm:"# 	 	%sFQVOa*cmm:"#A# 	 	'*cmm:"# 	 	%*cmm:"#A# 	 	'r    N)rM   rN   rO   r   r   r   rP   r    r   r   r      s    %$90'r    r   c                 v    g }|t        t              z  }|t        t              z  }|t        t              z  }|S N)r   r   rR   r   )configtestss     r   	get_testsr      s<    E	_233E	_011E	_344ELr    __main__c                  <    t        j                  t                     S r   )unittest	TestSuiter   rP   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   rA   rB   TestCaser   rR   r   r   rM   r   mainrP   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/HMMg& r    