
    9i:                     &   S SK r S SKJr  S SKJr  S SKJr  S SKJr  S SK	J
r
JrJr  S SKJr  S SKJr   " S	 S
\ R"                  5      r " S S\ R"                  5      r " S S\ R"                  5      r0 4S jr\S:X  a  S r\ R0                  " SS9  gg)    N)	unhexlify)list_test_cases)load_test_vectors)ECC)EccPoint_curvesEccKey)Integer)SHAKE128c                       \ rS rSrSSS.rSSS.rSSS.r\" \S	   \S
   SS9r\" \S	   \S
   SS9r	\" \S	   \S
   SS9r
S rS rS rS rS rS rS rS rS rS rS rS rSrg)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    U R                  U R                  R                  S5        g )NEd448)assertEqualpointGr   selfs    h/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/Crypto/SelfTest/PublicKey/test_ECC_Ed448.pytest_curve_attribute'TestEccPoint_Ed448.test_curve_attribute<   s    **G4    c                 h   [        U R                  S   U R                  S   SS9  [        SSSS9nU R                  UR                  S5        U R                  UR                  S5        U R                  UR
                  S5        U R                  R                  5       nU R                  UR                  S5        U R                  UR                  S	5        U R                  UR
                  UR                  UR                  45        U R                  R                  5       nU R                  UR                  S
5        U R                  UR                  S5        U R                  UR
                  UR                  UR                  45        [        SSSS9  U R                  [        [         SSSS9  g )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_xy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                    [        SSSS9nUR                  U R                  5        U R                  UR                  U R                  R                  5        U R                  UR
                  U R                  R
                  5        g Nr   r#   r   r   )r   setr   r   r   r   r   pointWs     r   test_setTestEccPoint_Ed448.test_set\   sX    !Qg.

4;;4;;==14;;==1r!   c                     U R                   R                  5       nU R                  UR                  U R                   R                  5        U R                  UR                  U R                   R                  5        g N)r   r*   r   r   r   r6   s     r   	test_copyTestEccPoint_Ed448.test_copyb   sL    !!#4;;==14;;==1r!   c                     U R                   R                  5       nU R                  R                  5       nU R                  U R                   U5        U R	                  U R                   U5        g r;   )r   r*   r+   r   assertNotEqual)r   pointHpointIs      r   
test_equalTestEccPoint_Ed448.test_equalg   sN    !!#""$f-DKK0r!   c                     [        SSSS9nU R                  UR                  5       5        U R                  XR	                  5       5        g r4   )r   
assertTrueis_point_at_infinityr   point_at_infinity)r   r.   s     r   test_paiTestEccPoint_Ed448.test_paim   s<    q!7+00233356r!   c                 z    U R                   * nU R                   U-   nU R                  UR                  5       5        g r;   )r   rE   rF   )r   negGsums      r   test_negateTestEccPoint_Ed448.test_negater   s0    |kkD 0023r!   c                 v   U R                  U R                  U R                  -   U R                  5        U R                  U R                  U R                  -   U R                  5        U R                  U R                  U R                  R	                  5       -   U R                  5        U R                  U R                  R	                  5       U R                  -   U R                  5        U R                  U R                  -   nU R                  UR
                  S5        U R                  UR                  S5        g )Nr$   r%   )r   r   r+   pointG3rG   r   r   )r   G5s     r   test_addition 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                 J   U R                   R                  5       nXR                   -  nU R                  XR                  5        XR                   -  nU R                  XR                  5        XR                   R                  5       -  nU R                  XR                  5        g r;   )r   r*   r   r+   rP   rG   )r   r@   s     r   test_inplace_addition(TestEccPoint_Ed448.test_inplace_addition   sw    !!#++.++.++//11.r!   c                    U R                   R                  5       nUR                  5         U R                  UR                  U R
                  R                  5        U R                  UR                  U R
                  R                  5        U R                   R                  5       nUR                  5       nUR                  5         U R                  X25        g r;   )r   r*   doubler   r   r+   r   rG   )r   r@   r.   pointRs       r   test_doubling TestEccPoint_Ed448.test_doubling   s    !!#4<<>>24<<>>2 kk++-%r!   c                    SnXR                   -  nU R                  UR                  S5        U R                  UR                  S5        SnXR                   -  nU R                  UR                  U R                   R                  5        U R                  UR                  U R                   R                  5        SnXR                   -  nU R                  UR                  U R                  R                  5        U R                  UR                  U R                  R                  5        SnXR                   -  nU R                  UR                  U R
                  R                  5        U R                  UR                  U R
                  R                  5        SnXR                   -  nU R                  UR                  S5        U R                  UR                  S5        SnXR                   -  nU R                  UR                  S	5        U R                  UR                  S
5        SnXR                   -  nU R                  UR                  S5        U R                  UR                  S5        SnXR                   -  nU R                  UR                  S5        U R                  UR                  S5        SnXR                   -  nU R                  UR                  S5        U R                  UR                  S5        SnXR                   -  nU R                  UR                  S5        U R                  UR                  S5        g )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+   rP   )r   dr@   s      r   test_scalar_multiply'TestEccPoint_Ed448.test_scalar_multiply   s   [[1%1%[[4;;==14;;==1[[4<<>>24<<>>2[[4<<>>24<<>>2[[  $V  	W  $V  	W[[  $V  	W  $V  	W[[  $V  	W  $V  	W[[  $V  	W  $V  	W[[  $V  	W  $V  	W[[  $V  	W  $V  	Wr!   c                     U R                  U R                  R                  5       S5        U R                  U R                  R                  5       S5        g )Ni  8   )r   r   size_in_bitssize_in_bytesr   s    r   
test_sizesTestEccPoint_Ed448.test_sizes   s<    113S9224b9r!    N)__name__
__module____qualname____firstlineno__r(   G2xyG3xyr   r   r+   rP   r   r1   r8   r<   rB   rH   rM   rR   rU   rZ   rf   rl   __static_attributes__rn   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                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
TestEccKey_Ed448   c                    [        S5      nSnSn[        SUS9nU R                  UR                  U5        U R                  UR                  S5        U R                  UR                  5       5        U R                  UR                  R                  U5        U R                  UR                  R                  U5        [        X#S5      n[        SXS9nU R                  UR                  S5        U R                  UR                  5       5        U R                  UR                  U5        [        SUS9nU R                  [        [        SS	S
9  g )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   r~   pointr#   r   re   )r   r	   r   r~   re   rE   has_privatepointQr   r   r   r,   r-   )r   r~   PxPykeyr   s         r   test_private_key!TestEccKey_Ed448.test_private_key   s     N  O7.4(  !S  	T)*r*r*)7;  !S  	T)*U+ 7. 	*fGqAr!   c                     [        [        S   R                  [        S   R                  SS9n[	        SUS9nU R                  UR                  5       5        U R                  UR                  U5        g )Nr   r   )r   r   )	r   r   GxGyr	   assertFalser   r   r   )r   r   r   s      r   test_public_key TestEccKey_Ed448.test_public_key   s[    ),,gg.>.A.AQ7%0*+U+r!   c                     [        SSS9nUR                  5       nU R                  UR                  5       5        U R	                  UR
                  UR
                  5        g )Nr   9   HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHr}   )r	   
public_keyr   r   r   r   )r   priv_keypub_keys      r   test_public_key_derived(TestEccKey_Ed448.test_public_key_derived   sK    g6%%',,./'..9r!   c                 2    U R                  [        S 5        g )Nc                      [        SSS9$ )Nr   s8   HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHr}   )r	   rn   r!   r   <lambda>4TestEccKey_Ed448.test_invalid_seed.<locals>.<lambda>   s    f7.Sr!   )r,   r-   r   s    r   test_invalid_seed"TestEccKey_Ed448.test_invalid_seed   s    *&STr!   c                    [         R                  " SSS9n[         R                  " SSS9n[         R                  " SSS9nUR                  5       nUR                  5       nUR                  5       nU R                  X5        U R	                  X5        U R                  XE5        U R	                  XF5        U R	                  XA5        g )Nr   r   )r~   r   r   s9   CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC)r   	constructr   r   r?   )r   private_keyprivate_key2private_key3r   public_key2public_key3s          r   test_equalityTestEccKey_Ed448.test_equality   s    mm@}}'A}}'A ++-
"--/"--/3K61J4J4r!   c                     [         R                  " SS9nU R                  S[        U5      5        U R	                  UR
                  S5        U R	                  UR                  5       R
                  S5        g )Nr   r   zcurve='Ed448'r   )r   generateassertInreprr   r   r   )r   r   s     r   test_name_consistency&TestEccKey_Ed448.test_name_consistency  sS    ll)otCy1G,)//9r!   rn   N)ro   rp   rq   rr   r   r   r   r   r   r   ru   rn   r!   r   rw   rw      s"    B0,:U5":r!   rw   c                   &    \ rS rSrS rS rS rSrg)TestEccModule_Ed448i  c                 r   [         R                  " SS9nU R                  UR                  5       5        [	        [
        S   R                  [
        S   R                  SS9UR                  -  nU R                  UR                  U5        [         R                  " SS9nU R                  X5        [         R                  " SS9  [         R                  " S[        R                  " 5       R                  S9n[         R                  " S[        R                  " 5       R                  S9nU R                  XC5        g )Nr   r   )r   randfunc)r   r   rE   r   r   r   r   r   re   r   r   r?   r   newread)r   r   r   key2key1s        r   test_generate!TestEccModule_Ed448.test_generate  s    ll))*),,gg.>.A.AQTWTYTYYU+ ||'*C& 	7# ||'HLLN4G4GH||'HLLN4G4GH$r!   c                 F   [        S5      nSnSnSn[        X#SS9n[        R                  " SUS9nU R	                  UR
                  U5        U R                  UR                  5       5        [        R                  " SX#S9nU R	                  UR
                  U5        U R                  UR                  5       5        [        R                  " SXUS	9nU R	                  UR
                  U5        U R                  UR                  5       5        [        R                  " S
US9ng )Nrz   r{   r|   r   r   r   r}   )r   point_xpoint_y)r   r~   r   r   r   )	r   r   r   r   r   r   rE   r   r   )r   r~   r   r   re   r   r   s          r   test_construct"TestEccModule_Ed448.test_construct#  s      N  O~w/ mm'5U+)* mm'2BU+*+ mm'"MU+)* mm'5r!   c                 Z   [        SSS9n[        [        S   R                  [        S   R                  S9nU R                  " [
        [        R                  4SS0UD6  U R                  " [
        [        R                  4SSS.UD6  U R	                  [
        [        R                  SS	S
9  g )Nra   r_   )r   r   r   r   r   r]   r   s:   HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHr}   )dictr   r   r   r,   r-   r   r   )r   coordcoordGs      r   test_negative_construct+TestEccModule_Ed448.test_negative_construct<  s    R+gg.1177;K;N;NO*cmmL7LeL*cmmR7aR6R*cmm7Qr!   rn   N)ro   rp   rq   rr   r   r   r   ru   rn   r!   r   r   r     s    %$62Rr!   r   c                 v    / nU[        [        5      -  nU[        [        5      -  nU[        [        5      -  nU$ r;   )r   r   rw   r   )configtestss     r   	get_testsr   E  s<    E	_/00E	_-..E	_011ELr!   __main__c                  >    [         R                  " [        5       5      $ r;   )unittest	TestSuiter   rn   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   rw   r   r   ro   r   mainrn   r!   r   <module>r      s   >   5 4   : : '  ^:** ^:B>:x(( >:B3R(++ 3Rl   z/MMg& r!   