o
     j:                     @   s   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
 d
e jZG dd de jZG dd de jZi fddZedkrcdd Ze jdd dS dS )    N)	unhexlify)list_test_cases)load_test_vectors)ECC)EccPoint_curvesEccKey)Integer)SHAKE128c                   @   s   e Zd ZdddZdddZdddZeed ed	 d
dZeed ed	 d
dZeed ed	 d
dZ	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$S )%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                 C   s   |  | jjd d S )NEd448)assertEqualpointGr   self r   i/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/Crypto/SelfTest/PublicKey/test_ECC_Ed448.pytest_curve_attribute<      z'TestEccPoint_Ed448.test_curve_attributec                 C   s   t | jd | jd dd t dddd}| |jd | |jd | |jd | j }| |jd | |jd	 | |j|j|jf | j }| |jd
 | |jd | |j|j|jf t dddd | j	t
t dddd d S )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   Zxyr   copypointG2assertRaises
ValueError)r   paibpZbp2r   r   r   test_init_xy?   s$   

zTestEccPoint_Ed448.test_init_xyc                 C   sB   t dddd}|| j | |j| jj | |j| jj d S Nr   r   r   r   )r   setr   r   r   r   r   ZpointWr   r   r   test_set\   s   zTestEccPoint_Ed448.test_setc                 C   s2   | j  }| |j| j j | |j| j j d S N)r   r$   r   r   r   r-   r   r   r   	test_copyb   s   
zTestEccPoint_Ed448.test_copyc                 C   s4   | j  }| j }| | j | | | j | d S r/   )r   r$   r%   r   assertNotEqual)r   pointHZpointIr   r   r   
test_equalg   s   

zTestEccPoint_Ed448.test_equalc                 C   s0   t dddd}| |  | ||  d S r+   )r   
assertTrueis_point_at_infinityr   point_at_infinity)r   r(   r   r   r   test_paim   s   zTestEccPoint_Ed448.test_paic                 C   s$   | j  }| j | }| |  d S r/   )r   r4   r5   )r   ZnegGsumr   r   r   test_negater   s   
zTestEccPoint_Ed448.test_negatec                 C   s   |  | j| j | j |  | j| j | j |  | j| j  | j |  | j | j | j | j| j }|  |jd |  |jd d S )Nr   r    )r   r   r%   pointG3r6   r   r   )r   ZG5r   r   r   test_additionw   s   z TestEccPoint_Ed448.test_additionc                 C   sZ   | j  }|| j 7 }| || j || j 7 }| || j || j  7 }| || j d S r/   )r   r$   r   r%   r:   r6   )r   r2   r   r   r   test_inplace_addition   s   


z(TestEccPoint_Ed448.test_inplace_additionc                 C   s`   | j  }|  | |j| jj | |j| jj | j  }| }|  | || d S r/   )r   r$   doubler   r   r%   r   r6   )r   r2   r(   ZpointRr   r   r   test_doubling   s   

z TestEccPoint_Ed448.test_doublingc                 C   s  d}|| j  }| |jd | |jd d}|| j  }| |j| j j | |j| j j d}|| j  }| |j| jj | |j| jj d}|| j  }| |j| jj | |j| jj d}|| j  }| |jd | |jd d}|| j  }| |jd	 | |jd
 d}|| j  }| |jd | |jd d}|| j  }| |jd | |jd d}|| j  }| |jd | |jd d}|| j  }| |jd | |jd d S )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%   r:   )r   dr2   r   r   r   test_scalar_multiply   sP   









z'TestEccPoint_Ed448.test_scalar_multiplyc                 C   s(   |  | j d |  | j d d S )Ni  8   )r   r   Zsize_in_bitsZsize_in_bytesr   r   r   r   
test_sizes   s   zTestEccPoint_Ed448.test_sizesN)__name__
__module____qualname__r#   ZG2xyZG3xyr   r   r%   r:   r   r*   r.   r0   r3   r7   r9   r;   r<   r>   rH   rJ   r   r   r   r   r   -   s2    
	3r   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestEccKey_Ed448c                 C   s   t d}d}d}td|d}| |j| | |jd | |  | |jj| | |jj	| t
||d}td||d}| |jd | |  | |j| td|d}| jttdd	d
 d S )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   rS   pointr   r   rG   )r   r   r   rS   rG   r4   has_privatepointQr   r   r   r&   r'   )r   rS   PxPykeyrU   r   r   r   test_private_key   s    z!TestEccKey_Ed448.test_private_keyc                 C   sF   t td jtd jdd}td|d}| |  | |j| d S )Nr   r   )r   rU   )	r   r   GxGyr   assertFalserW   r   rX   )r   rU   r[   r   r   r   test_public_key   s   z TestEccKey_Ed448.test_public_keyc                 C   s6   t ddd}| }| |  | |j|j d S )Nr   9   HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHrR   )r   
public_keyr_   rW   r   rX   )r   Zpriv_keyZpub_keyr   r   r   test_public_key_derived   s   z(TestEccKey_Ed448.test_public_key_derivedc                 C   s   |  tdd  d S )Nc                   S   s   t dddS )Nr   s8   HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHrR   )r   r   r   r   r   <lambda>   s    z4TestEccKey_Ed448.test_invalid_seed.<locals>.<lambda>)r&   r'   r   r   r   r   test_invalid_seed   r   z"TestEccKey_Ed448.test_invalid_seedc                 C   s   t jddd}t jddd}t jddd}| }| }| }| || | || | || | || | || d S )Nra   r   )rS   r   r   s9   CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC)r   	constructrb   r   r1   )r   Zprivate_keyZprivate_key2Zprivate_key3rb   Zpublic_key2Zpublic_key3r   r   r   test_equality   s   zTestEccKey_Ed448.test_equalityc                 C   s@   t jdd}| dt| | |jd | | jd d S )Nr   r   zcurve='Ed448'r   )r   generateZassertInreprr   r   rb   )r   r[   r   r   r   test_name_consistency  s   z&TestEccKey_Ed448.test_name_consistencyN)	rK   rL   rM   r\   r`   rc   re   rg   rj   r   r   r   r   rN      s    rN   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestEccModule_Ed448c                 C   s   t jdd}| |  ttd jtd jdd|j }| 	|j
| t jdd}| || t jdd t jdt jd}t jdt jd}| 	|| d S )Nr   r   )r   Zrandfunc)r   rh   r4   rW   r   r   r]   r^   rG   r   rX   r1   r
   newread)r   r[   rU   key2key1r   r   r   test_generate  s    z!TestEccModule_Ed448.test_generatec                 C   s   t d}d}d}d}t||dd}tjd|d}| |j| | |  tjd||d}| |j| | |  tjd|||d	}| |j| | |  tjd
|d}d S )NrO   rP   rQ   rT   r   r   rR   )r   point_xpoint_y)r   rS   rq   rr   r   )	r   r   r   rf   r   rX   r4   rW   r_   )r   rS   rY   rZ   rG   rU   r[   r   r   r   test_construct#  s   z"TestEccModule_Ed448.test_constructc                 C   sr   t ddd}t td jtd jd}| jttjfddi| | jttjfddd| | jttjdd	d
 d S )NrC   rA   )rq   rr   r   r   r   r?   rV   s:   HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHrR   )dictr   r]   r^   r&   r'   r   rf   )r   ZcoordZcoordGr   r   r   test_negative_construct<  s
   z+TestEccModule_Ed448.test_negative_constructN)rK   rL   rM   rp   rs   ru   r   r   r   r   rk     s    rk   c                 C   s,   g }|t t7 }|t t7 }|t t7 }|S r/   )r   r   rN   rk   )configZtestsr   r   r   	get_testsE  s
   rw   __main__c                   C   s   t t S r/   )unittestZ	TestSuiterw   r   r   r   r   suiteN  s   rz   )ZdefaultTest)ry   binasciir   ZCrypto.SelfTest.st_commonr   ZCrypto.SelfTest.loaderr   ZCrypto.PublicKeyr   ZCrypto.PublicKey.ECCr   r   r   ZCrypto.Math.Numbersr	   ZCrypto.Hashr
   ZTestCaser   rN   rk   rw   rK   rz   mainr   r   r   r   <module>   s"    "A6