
    ,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
mZmZ d dlmZ d dlm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 j0                  d       yy)    N)	unhexlify)list_test_cases)load_test_vectors)ECC)EccPoint_curvesEccKey)Integer)SHAKE128c                       e Zd ZdddZdddZdddZ eed   ed	   d
      Z eed   ed	   d
      Z eed   ed	   d
      Z	d 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_Ed448   ^@ 518`b8Cl\p*At(qmj.<+FaS[/SDZ74_3	   zadoeC@
ZK^DsxssZhNx02>Ilq2 vIZugt')xy   UU*UU*UU*UU*UU*UU*UU*UUTU*UU*UU*UU*UU*UU*UU*U   'U7oWW9/Y^aT,+ "67!V=6 V!(Yf\V^l   /\@9uKQZ[1V?N__Nybj3\\A"f-d=H"\Xl   V1M0AZZ?M}pNmoQC;A|s[l$Hj=KnsI^Z r   r   ed448curvec                 P    | j                  | j                  j                  d       y )NEd448)assertEqualpointGr   selfs    j/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/Crypto/SelfTest/PublicKey/test_ECC_Ed448.pytest_curve_attributez'TestEccPoint_Ed448.test_curve_attribute<   s    **G4    c                    t        | j                  d   | j                  d   d       t        ddd      }| j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       | j                  j                         }| j                  |j                  d       | j                  |j                  d	       | j                  |j
                  |j                  |j                  f       | j                  j                         }| j                  |j                  d
       | j                  |j                  d       | j                  |j
                  |j                  |j                  f       t        ddd       | j                  t        t         ddd       y )Nr   r   r   r   r      )r   r!   r   r   r   r      4 $BtLx;c=yHjPb%0VN[{=Cmv`'W,7$-3yS   5eQLD%D* X<f%g9'=}. m(eXj`[V~rr'_(QQW)r   r   r   "   #   )r   Gxyr   r   r   xyr   copypointG2assertRaises
ValueError)r   paibpbp2s       r   test_init_xyzTestEccPoint_Ed448.test_init_xy?   sr   #W= q!7+""( [[   R  	S   R  	Srtt- ll!  !S  	T  !S  	T#%%0 	  F F	 
 	*hBgFr   c                    t        ddd      }|j                  | j                         | j                  |j                  | j                  j                         | j                  |j
                  | j                  j
                         y Nr   r!   r   r   )r   setr   r   r   r   r   pointWs     r   test_setzTestEccPoint_Ed448.test_set\   sX    !Qg.

4;;4;;==14;;==1r   c                     | j                   j                         }| j                  |j                  | j                   j                         | j                  |j                  | j                   j                         y N)r   r(   r   r   r   r3   s     r   	test_copyzTestEccPoint_Ed448.test_copyb   sL    !!#4;;==14;;==1r   c                     | j                   j                         }| j                  j                         }| j                  | j                   |       | j	                  | j                   |       y r7   )r   r(   r)   r   assertNotEqual)r   pointHpointIs      r   
test_equalzTestEccPoint_Ed448.test_equalg   sN    !!#""$f-DKK0r   c                     t        ddd      }| j                  |j                                | j                  ||j	                                y r1   )r   
assertTrueis_point_at_infinityr   point_at_infinity)r   r,   s     r   test_paizTestEccPoint_Ed448.test_paim   s>    q!7+0023c3356r   c                 z    | j                    }| j                   |z   }| j                  |j                                y r7   )r   r?   r@   )r   negGsums      r   test_negatezTestEccPoint_Ed448.test_negater   s0    |kkD 0023r   c                 v   | j                  | j                  | j                  z   | j                         | j                  | j                  | j                  z   | j                         | j                  | j                  | j                  j	                         z   | j                         | j                  | j                  j	                         | j                  z   | j                         | j                  | j                  z   }| j                  |j
                  d       | j                  |j                  d       y )Nr"   r#   )r   r   r)   pointG3rA   r   r   )r   G5s     r   test_additionz TestEccPoint_Ed448.test_additionw   s    t||3T\\B3T\\B(E(E(GGV6684<<GV\\DLL(   R  	S   R  	Sr   c                 V   | j                   j                         }|| j                   z  }| j                  || j                         || j                   z  }| j                  || j                         || j                   j                         z  }| j                  || j                         y r7   )r   r(   r   r)   rH   rA   )r   r;   s     r   test_inplace_additionz(TestEccPoint_Ed448.test_inplace_addition   s    !!#$++.$++.$++//11.r   c                    | j                   j                         }|j                          | j                  |j                  | j
                  j                         | j                  |j                  | j
                  j                         | j                   j                         }|j                         }|j                          | j                  ||       y r7   )r   r(   doubler   r   r)   r   rA   )r   r;   r,   pointRs       r   test_doublingz TestEccPoint_Ed448.test_doubling   s    !!#4<<>>24<<>>2 kk++-%r   c                    d}|| j                   z  }| j                  |j                  d       | j                  |j                  d       d}|| j                   z  }| j                  |j                  | j                   j                         | j                  |j                  | j                   j                         d}|| j                   z  }| j                  |j                  | j                  j                         | j                  |j                  | j                  j                         d}|| j                   z  }| j                  |j                  | j
                  j                         | j                  |j                  | j
                  j                         d}|| j                   z  }| j                  |j                  d       | j                  |j                  d       d}|| j                   z  }| j                  |j                  d	       | j                  |j                  d
       d}|| j                   z  }| j                  |j                  d       | j                  |j                  d       d}|| j                   z  }| j                  |j                  d       | j                  |j                  d       d}|| j                   z  }| j                  |j                  d       | j                  |j                  d       d}|| j                   z  }| j                  |j                  d       | j                  |j                  d       y )Nr   r!            l   0t
r<)b^pW!:;EE=0i1_R#"8zNUD=J>9(X83`cK;	l   9[[u!
"jr(zGxKaI0_x|Kr R3K,N7f%~   r"   r#   
   l   =0!EZs-$@bDU=N.r1aJOi4A8ac)d>59Yhl   g_I'*k[QP`1?\W5p_`?k?w7:hk9
C9%?qI /X~	   l   8`}\&0<
FYr pcJ)A}<CONfT`~c|B6l   6,81$Lg}HH>"Hos2'@`C#*4x'16F|3[   l   kM`7C5SWh+k3 	e6\D=C:D`IecjE<n`"586XDl   S-Kjd5|X1O|S_Cz:~R,QGsCSnYs   l   ,Kl?rQsU5xfaZ3}-8U53v;IV(`v>GuOC3l   $`:i	z=nUYzz*ZGb9LhQut.q97URMT|sia\[yFd6})r   r   r   r   r)   rH   )r   dr;   s      r   test_scalar_multiplyz'TestEccPoint_Ed448.test_scalar_multiply   s   T[[1%1%T[[4;;==14;;==1T[[4<<>>24<<>>2T[[4<<>>24<<>>2T[[  $V  	W  $V  	WT[[  $V  	W  $V  	WT[[  $V  	W  $V  	WT[[  $V  	W  $V  	WT[[  $V  	W  $V  	WT[[  $V  	W  $V  	Wr   c                     | j                  | j                  j                         d       | j                  | j                  j                         d       y )Ni  8   )r   r   size_in_bitssize_in_bytesr   s    r   
test_sizeszTestEccPoint_Ed448.test_sizes   s<    113S9224b9r   N)__name__
__module____qualname__r&   G2xyG3xyr   r   r)   rH   r   r/   r5   r8   r=   rB   rF   rJ   rL   rP   r[   r`    r   r   r   r   -   s     C CDC D DED C DED c#hC8FtCy$s)7;GtCy$s)7;G5G:22
17
4
S/
&1Wf:r   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestEccKey_Ed448c                    t        d      }d}d}t        d|      }| j                  |j                  |       | j                  |j                  d       | j                  |j                                | j                  |j                  j                  |       | j                  |j                  j                  |       t        ||d      }t        d||      }| j                  |j                  d       | j                  |j                                | j                  |j                  |       t        d|      }| j                  t        t        dd	
       y )Nr4adf5d37ac6785e83e99a924f92676d366a78690af59c92b6bdf14f9cdbcf26fdad478109607583d633b60078d61d51d81b7509c5433b0d4c9   &`</?xx#psSac9,v#_+*gs{*[J/5/pT*#DXshPT   .pv"h5Twe0~K}Y+VA+Ec4wqcp&AZl],BPr   r   seed   _Rh+#Sb,n@w8)YJC7M_Sr/8k1Xc>KOr   )r   rn   pointr!   r   rZ   )r   r	   r   rn   rZ   r?   has_privatepointQr   r   r   r*   r+   )r   rn   PxPykeyrp   s         r   test_private_keyz!TestEccKey_Ed448.test_private_key   s      N  O7.4(  !S  	T)*r*r*R)7U;  !S  	T)*U+ 7. 	*fGqAr   c                     t        t        d   j                  t        d   j                  d      }t	        d|      }| j                  |j                                | j                  |j                  |       y )Nr   r   )r   rp   )	r   r   GxGyr	   assertFalserr   r   rs   )r   rp   rv   s      r   test_public_keyz TestEccKey_Ed448.test_public_key   s[    ),,gg.>.A.AQ7%0*+U+r   c                     t        dd      }|j                         }| j                  |j                                | j	                  |j
                  |j
                         y )Nr   9   HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHrm   )r	   
public_keyr{   rr   r   rs   )r   priv_keypub_keys      r   test_public_key_derivedz(TestEccKey_Ed448.test_public_key_derived   sK    g6%%',,./'..9r   c                 2    | j                  t        d        y )Nc                      t        dd      S )Nr   s8   HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHrm   )r	   rf   r   r   <lambda>z4TestEccKey_Ed448.test_invalid_seed.<locals>.<lambda>   s    f7.S r   )r*   r+   r   s    r   test_invalid_seedz"TestEccKey_Ed448.test_invalid_seed   s    *&STr   c                    t        j                  dd      }t        j                  dd      }t        j                  dd      }|j                         }|j                         }|j                         }| j                  ||       | j	                  ||       | j                  ||       | j	                  ||       | j	                  ||       y )Nr~   r   )rn   r   r   s9   CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC)r   	constructr   r   r:   )r   private_keyprivate_key2private_key3r   public_key2public_key3s          r   test_equalityzTestEccKey_Ed448.test_equality   s    mm@}}'A}}'A ++-
"--/"--/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   r   zcurve='Ed448'r   )r   generateassertInreprr   r   r   )r   rv   s     r   test_name_consistencyz&TestEccKey_Ed448.test_name_consistency  sS    ll)otCy1G,)//9r   N)	ra   rb   rc   rw   r|   r   r   r   r   rf   r   r   rh   rh      s"    B0,:U5":r   rh   c                       e Zd Zd Zd Zd Zy)TestEccModule_Ed448c                    t        j                  d      }| j                  |j                                t	        t
        d   j                  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   r   )r   randfunc)r   r   r?   rr   r   r   ry   rz   rZ   r   rs   r:   r   newread)r   rv   rp   key2key1s        r   test_generatez!TestEccModule_Ed448.test_generate  s    ll))*),,gg.>.A.AQTWTYTYYU+ ||'*C& 	7# ||'HLLN4G4GH||'HLLN4G4GHt$r   c                 b   t        d      }d}d}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 )Nrj   rk   rl   ro   r   r   rm   )r   point_xpoint_y)r   rn   r   r   r   )	r   r   r   r   r   rs   r?   rr   r{   )r   rn   rt   ru   rZ   rp   rv   s          r   test_constructz"TestEccModule_Ed448.test_construct#  s      N  O~Rw/ mm'5U+)* mm'2rBU+*+ mm'b"MU+)* mm'5r   c                 l   t        dd      }t        t        d   j                  t        d   j                        } | j                  t
        t        j                  fddi|  | j                  t
        t        j                  fddd| | j	                  t
        t        j                  dd	
       y )NrV   rT   )r   r   r   r   r   rR   rq   s:   HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHrm   )dictr   ry   rz   r*   r+   r   r   )r   coordcoordGs      r   test_negative_constructz+TestEccModule_Ed448.test_negative_construct<  s    R+gg.1177;K;N;NO*cmmL7LeL*cmmR7aR6R*cmm7Qr   N)ra   rb   rc   r   r   r   rf   r   r   r   r     s    %$62Rr   r   c                 v    g }|t        t              z  }|t        t              z  }|t        t              z  }|S r7   )r   r   rh   r   )configtestss     r   	get_testsr   E  s<    E	_/00E	_-..E	_011ELr   __main__c                  <    t        j                  t                     S r7   )unittest	TestSuiter   rf   r   r   suiter   N  s    !!)+..r   r   )defaultTest)r   binasciir   Crypto.SelfTest.st_commonr   Crypto.SelfTest.loaderr   Crypto.PublicKeyr   Crypto.PublicKey.ECCr   r   r	   Crypto.Math.Numbersr
   Crypto.Hashr   TestCaser   rh   r   r   ra   r   mainrf   r   r   <module>r      s   >   5 4   : : '  ^:** ^:B>:x(( >:B3R(++ 3Rl   z/HMMg& r   