
    ¿ig.                        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 g d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))   	   )   l   N:sre5FG;*!c(}6~Fj! )   l   <vP C'Adt7GlUd|uU^)   l    *t0"+w_b6R}^x[Ly)   l   1E/OB)	McvOWgrf&&)r   l   dMfqF_9XtV76 #eHI+)   l   j9a:H3j?(w:qE 2s)   l   )G@+,c\Pvy*~A|QYeE9p,4)   l   PMv+YSYC0k}CBNmM  C)i  l   %1!Z]EoCv:pfAo4!oj	rAl)i l   grc4)OtY\]	lwwu< )iU l   XR>#sZ60>|Ik|0,)l   g x^rP)l   f~(D494H5}$\dz59EP)l   S9i@eM^w|o                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_Curve25519l   4!'MI.>.< OoffY<	l   $+'UfbCxDm1,\qt<K?:!c                 X    t          dd           t          ddz  dz
  dz   d           d S )Nr   
curve25519r   r         )r	   selfs    m/var/www/html/afkarena/venv/lib/python3.11/site-packages/Cryptodome/SelfTest/PublicKey/test_ECC_Curve25519.py	test_initz!TestEccPoint_Curve25519.test_initD   s4    !\"""!S&2+/<00000    c                 \    t          dd          }|                     |j        d           d S )Nr   r   
Curve25519)r	   assertEqualcurver   points     r   test_curve_attributez,TestEccPoint_Curve25519.test_curve_attributeH   s/    !\**l33333r   c                     |                      t          t          dddz  dz
  z  d           |                      t          t          dd           d S )Nr   r   r   r   r   r   
curve25518)assertRaises
ValueErrorr	   r   s    r   test_init_failz&TestEccPoint_Curve25519.test_init_failL   sH    *iAsFRK,OOO*iLAAAAAr   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_Curve25519.test_equal_setP   s    47L1147L11(((FF+++

668,,,,,r   c                     t          | j        d          }|                                }|                     |j        |j                   d S r,   )r	   r-   copyr!   r1   r2   s      r   	test_copyz!TestEccPoint_Curve25519.test_copyZ   s@    47L1168,,,,,r   c                    t          | j        d          }|                                }|                     |                                           t          d d          }|                     |                                           d S r,   )r	   r-   point_at_infinity
assertTrue)r   r3   pair4   s       r   test_paiz TestEccPoint_Curve25519.test_pai_   su    47L11&&((--//0004..002233333r   c                 p   t          dd          }d|z  }|                     |                                           d|z  }|                     |                                           |dz  }|                     |j        d           t
          D ]%\  }}||z  }|                     |j        |           &d S )Nr   r   r   l   S9i@eM^w|o                r   )r	   r;   r:   r!   r1   scalar_base9_test)r   basepointHdresults        r   test_scalar_multiplyz,TestEccPoint_Curve25519.test_scalar_multiplyg   s    L))T0022333SVZZ00223331%%%* 	/ 	/IAvXFVXv....	/ 	/r   c                     t          dd          }|                     |                                d           |                     |                                d           d S )Nr   r   r       )r	   r!   size_in_bitssize_in_bytesr#   s     r   
test_sizesz"TestEccPoint_Curve25519.test_sizesw   s[    !\**++--s333,,..33333r   N)__name__
__module____qualname__r-   r.   r   r%   r*   r5   r8   r=   rD   rI    r   r   r   r   ?   s        	KB	KB1 1 14 4 4B B B- - -- - -
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_Curve25519c                 
   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 )N@77076d0a7318a57d3c16c17251b26645df4c2f87ebc0992ab177fba51db92c2a@8520f0098930a754748b7ddcb43ef75a0dbf3a0d26381af4eba4a98eaa9b4e6alittle	byteorderr    r"   seed@5dab087e624a8a4b79e17f8b83800ee66f3bb1292618b6fd1c2f8b27ff88e0eb@de9edb7d7b7dc1b4d35b61c2ece435373f8343c85b78674dadfc7e146f882b4fr   r   r"   rB   )r   r   
from_bytesr   r!   rW   r;   has_privatepointQr1   r(   r)   )r   
alice_priv	alice_pubalice_pub_xkeybob_privbob_pub	bob_pub_xs           r   test_private_keyz&TestEccKey_Curve25519.test_private_key   s_   abb
`aa	(hGGG<j999:...))***{333 _``^__&w(CCC	<h7778,,,))***y111 <j999 	*fLAFFFFFr   c                     t          t          d         j        d          }t          d|          }|                     |                                           |                     |j        |           d S )Nr   r"   )r"   r$   )r	   r
   Gxr   assertFalser\   r!   r]   )r   r$   ra   s      r   test_public_keyz%TestEccKey_Curve25519.test_public_key   sq    ',/2 ,. . .<u555**+++U+++++r   c                     t          dd          }|                                }|                     |                                           |                     |j        |j                   d S )Nr       HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHrV   )r   
public_keyri   r\   r!   r]   )r   priv_keypub_keys      r   test_public_key_derivedz-TestEccKey_Curve25519.test_public_key_derived   se    7;;;%%'',,..///'.99999r   c                 >    |                      t          d            d S )Nc                  $    t          dd          S )Nr      HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHrV   )r   rM   r   r   <lambda>z9TestEccKey_Curve25519.test_invalid_seed.<locals>.<lambda>   s    f<i.X.X.X r   )r(   r)   r   s    r   test_invalid_seedz'TestEccKey_Curve25519.test_invalid_seed   s"    *&X&XYYYYYr   c                    t          j        dd          }t          j        dd          }t          j        dd          }|                                }|                                }|                                }|                     ||           |                     ||           |                     ||           |                     ||           |                     ||           d S )Nrl   r    )rW   r"   r   s    CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC)r   	constructrm   r!   r/   )r   private_keyprivate_key2private_key3rm   public_key2public_key3s          r   test_equalityz#TestEccKey_Curve25519.test_equality   s    mEEE}'FFF}'FFF ++--
"--//"--//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   rg   zcurve='Curve25519'r    )r   generateassertInreprr!   r"   rm   )r   ra   s     r   test_name_consistencyz+TestEccKey_Curve25519.test_name_consistency   sp    l...*DII666L111))/>>>>>r   N)	rJ   rK   rL   re   rj   rp   ru   r}   r   rM   r   r   rO   rO   }   st        G G G6, , ,: : :Z Z Z5 5 5"? ? ? ? ?r   rO   c                        e Zd Zd Zd Zd ZdS )TestEccModule_Curve25519c                 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    rg   r   )r"   randfunc)r   r   r;   r\   r	   r
   rh   rB   r!   r]   r/   r   newread)r   ra   r$   key2key1s        r   test_generatez&TestEccModule_Curve25519.test_generate   s    l...))***',/2,GGG#%OU+++ |,///C&&& 	<(((( |,9LMMM|,9LMMM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 )NrQ   rR   rS   rT   r    rg   rV   r"   point_x)r"   rW   r   r   )r   r   r[   r	   r   rw   r!   r]   r;   r\   ri   )r   rW   	point_hexPxr$   ra   s         r   test_constructz'TestEccModule_Curve25519.test_construct   sA   [\\`aa		X>>>"L111 m,T:::U+++))*** m,;;;U+++**+++ m,T2FFFU+++))*** m,T:::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
	           |                     t          t
          j        dd	           |                     t          t
          j        dd	           ddz  dz
  }|                     t          t
          j        d|d
z
  	           |                     t          t
          j        d|	           |                     t          t
          j        d|d
z   	           |                     t          t
          j        d|dz   	           |                     t          t
          j        d|dz   	           |                     t          t
          j        d|dz  d
z
  	           |                     t          t
          j        d|dz  	           |                     t          t
          j        d|dz  d
z   	           d S )Nr   )r   r    r   rZ   rs   rV   r   r   r   l   kxujaj\~|ObjZs	oP,E$ l   _+yBb$:6gw[8cph[DS7OWr   r   )dictr
   rh   r(   r)   r   rw   )r   coordGps      r   test_negative_constructz0TestEccModule_Curve25519.test_negative_construct   s   gl36777*cmW<1WWPVWWW*cm<gVVV 	*cm<"# 	 	% 	% 	%*cm<"# 	 	% 	% 	%*cm<"m 	 	o 	o 	o*cm<"o 	 	q 	q 	qsFRK*cm<"#A# 	 	' 	' 	'*cm<"# 	 	% 	% 	%*cm<"#A# 	 	' 	' 	'*cm<"#$o"o 	 	q 	q 	q*cm<"#$q"q 	 	s 	s 	s*cm<"#A#a% 	 	) 	) 	)*cm<"#A# 	 	' 	' 	'*cm<"#A#a% 	 	) 	) 	) 	) 	)r   N)rJ   rK   rL   r   r   r   rM   r   r   r   r      sA        % % %$; ; ;0) ) ) ) )r   r   c                     g }|t          t                    z  }|t          t                    z  }|t          t                    z  }|S N)r   r   rO   r   )configtestss     r   	get_testsr     sE    E	_4555E	_2333E	_5666ELr   __main__c                  B    t          j        t                                S r   )unittest	TestSuiter   rM   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?   TestCaser   rO   r   r   rJ   r   mainrM   r   r   <module>r      s  >        9 9 9 9 9 9 + + + + + + $ $ $ $ $ $ $ $ $ $ $ $ ? ? ? ? ? ? ? ? ? ?   $;4 ;4 ;4 ;4 ;4h/ ;4 ;4 ;4|B? B? B? B? B?H- B? B? B?JK) K) K) K) K)x0 K) K) K)\      z/ / /HMg&&&&&& r   