
    ,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 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       yy)    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                   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_Curve25519l   4!'MI.>.< OoffY<	l   $+'UfbCxDm1,\qt<K?:!c                 F    t        dd       t        ddz  dz
  dz   d       y )Nr   
curve25519r   r         )r	   selfs    o/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/Crypto/SelfTest/PublicKey/test_ECC_Curve25519.py	test_initz!TestEccPoint_Curve25519.test_initD   s"    !\"!S&2+/<0    c                 T    t        dd      }| j                  |j                  d       y )Nr   r   
Curve25519)r	   assertEqualcurver   points     r   test_curve_attributez,TestEccPoint_Curve25519.test_curve_attributeH   s"    !\*l3r   c                     | j                  t        t        dddz  dz
  z  d       | j                  t        t        dd       y )Nr   r   r   r   r   r   
curve25518)assertRaises
ValueErrorr	   r   s    r   test_init_failz&TestEccPoint_Curve25519.test_init_failL   s6    *iAsFRK,O*iLAr   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_Curve25519.test_equal_setP   sf    477L1477L1(FF+

6688,r   c                     t        | j                  d      }|j                         }| j                  |j                  |j                         y r,   )r	   r-   copyr!   r1   r2   s      r   	test_copyz!TestEccPoint_Curve25519.test_copyZ   s5    477L1688,r   c                     t        | j                  d      }|j                         }| j                  |j                                t        d d      }| j                  |j                                y r,   )r	   r-   point_at_infinity
assertTrue)r   r3   pair4   s       r   test_paiz TestEccPoint_Curve25519.test_pai_   sV    477L1&&(--/04.0023r   c                 L   t        dd      }d|z  }| j                  |j                                d|z  }| j                  |j                                |dz  }| j                  |j                  d       t
        D ]&  \  }}||z  }| j                  |j                  |       ( y )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3SVZZ00231%* 	/IAvXFVXXv.	/r   c                     t        dd      }| j                  |j                         d       | j                  |j                         d       y )Nr   r   r       )r	   r!   size_in_bitssize_in_bytesr#   s     r   
test_sizesz"TestEccPoint_Curve25519.test_sizesw   s@    !\*++-s3,,.3r   N)__name__
__module____qualname__r-   r.   r   r%   r*   r5   r8   r=   rD   rI    r   r   r   r   ?   s5    	KB	KB14B--
4/ 4r   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestEccKey_Curve25519c                    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 )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
`a	((hG<j9:.)*{3 _`^_&&w(C	<h78,)*y1 <j9 	*fLAFr   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$   ra   s      r   test_public_keyz%TestEccKey_Curve25519.test_public_key   sQ    ',/22 ,.<u5*+U+r   c                     t        dd      }|j                         }| j                  |j                                | j	                  |j
                  |j
                         y )Nr       HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHrV   )r   
public_keyri   r\   r!   r]   )r   priv_keypub_keys      r   test_public_key_derivedz-TestEccKey_Curve25519.test_public_key_derived   sK    7;%%',,./'..9r   c                 2    | j                  t        d        y )Nc                      t        dd      S )Nr      HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHrV   )r   rM   r   r   <lambda>z9TestEccKey_Curve25519.test_invalid_seed.<locals>.<lambda>   s    f<i.X r   )r(   r)   r   s    r   test_invalid_seedz'TestEccKey_Curve25519.test_invalid_seed   s    *&XYr   c                    t        j                  dd      }t        j                  dd      }t        j                  dd      }|j                         }|j                         }|j                         }| j                  ||       | j	                  ||       | j                  ||       | j	                  ||       | j	                  ||       y )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    mmE}}'F}}'F ++-
"--/"--/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   rg   zcurve='Curve25519'r    )r   generateassertInreprr!   r"   rm   )r   ra   s     r   test_name_consistencyz+TestEccKey_Curve25519.test_name_consistency   sT    ll.*DI6L1)//>r   N)	rJ   rK   rL   re   rj   rp   ru   r}   r   rM   r   r   rO   rO   }   s"    G6,:Z5"?r   rO   c                       e Zd Zd Zd Zd Zy)TestEccModule_Curve25519c                 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    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    ll.)*',/22,G#%%OU+ ||,/C& 	<( ||,9L9LM||,9L9LM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 )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   s    [\`a		X>"L1 mm,T:U+)* mm,;U+*+ mm,T2FU+)* mm,T: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
	       | j                  t        t
        j                  dd	       | j                  t        t
        j                  dd	       ddz  dz
  }| j                  t        t
        j                  d|d
z
  	       | j                  t        t
        j                  d|	       | j                  t        t
        j                  d|d
z   	       | j                  t        t
        j                  d|dz   	       | j                  t        t
        j                  d|dz   	       | j                  t        t
        j                  d|dz  d
z
  	       | j                  t        t
        j                  d|dz  	       | j                  t        t
        j                  d|dz  d
z   	       y )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67*cmmW<1WPVW*cmm<gV 	*cmm<"# 	 	%*cmm<"# 	 	%*cmm<"m 	 	o*cmm<"o 	 	qsFRK*cmm<"#A# 	 	'*cmm<"# 	 	%*cmm<"#A# 	 	'*cmm<"#$o"o 	 	q*cmm<"#$q"q 	 	s*cmm<"#A#a% 	 	)*cmm<"#A# 	 	'*cmm<"#A#a% 	 	)r   N)rJ   rK   rL   r   r   r   rM   r   r   r   r      s    %$;0)r   r   c                 v    g }|t        t              z  }|t        t              z  }|t        t              z  }|S N)r   r   rO   r   )configtestss     r   	get_testsr     s<    E	_455E	_233E	_566ELr   __main__c                  <    t        j                  t                     S r   )unittest	TestSuiter   rM   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?   TestCaser   rO   r   r   rJ   r   mainrM   r   r   <module>r      s   >   5 '     ; ; $;4h// ;4|B?H-- B?JK)x00 K)\   z/HMMg& r   