
    ¿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
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 j        d           dS dS )    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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                 F    |                      | j        j        d           d S )NEd448)assertEqualpointGr   selfs    h/var/www/html/afkarena/venv/lib/python3.11/site-packages/Cryptodome/SelfTest/PublicKey/test_ECC_Ed448.pytest_curve_attributez'TestEccPoint_Ed448.test_curve_attribute<   s#    *G44444    c                 `   t          | j        d         | j        d         d           t          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           | 	                    t          t           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   xyr   copypointG2assertRaises
ValueError)r   paibpbp2s       r   test_init_xyzTestEccPoint_Ed448.test_init_xy?   s   #W==== q!7+++""""""((( [   R  	S  	S  	S   R  	S  	S  	Srt--- l!!  !S  	T  	T  	T  !S  	T  	T  	T#%000 	  F F	  	  	  	 
 	*hBgFFFFFr   c                     t          ddd          }|                    | j                   |                     |j        | j        j                   |                     |j        | j        j                   d S Nr   r!   r   r   )r   setr   r   r   r   r   pointWs     r   test_setzTestEccPoint_Ed448.test_set\   sh    !Qg...

4;4;=1114;=11111r   c                     | j                                         }|                     |j        | j         j                   |                     |j        | j         j                   d S N)r   r(   r   r   r   r3   s     r   	test_copyzTestEccPoint_Ed448.test_copyb   sS    !!##4;=1114;=11111r   c                     | j                                         }| j                                        }|                     | j         |           |                     | j         |           d S r7   )r   r(   r)   r   assertNotEqual)r   pointHpointIs      r   
test_equalzTestEccPoint_Ed448.test_equalg   s^    !!##""$$f---DK00000r   c                     t          ddd          }|                     |                                           |                     ||                                           d S 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2333c335566666r   c                 x    | j          }| j         |z   }|                     |                                           d S r7   )r   r?   r@   )r   negGsums      r   test_negatezTestEccPoint_Ed448.test_negater   s;    |kD 002233333r   c                    |                      | j        | j        z   | j                   |                      | j        | j        z   | j                   |                      | j        | j                                        z   | j                   |                      | j                                        | j        z   | j                   | j        | j        z   }|                      |j        d           |                      |j        d           d S )Nr"   r#   )r   r   r)   pointG3rA   r   r   )r   G5s     r   test_additionz TestEccPoint_Ed448.test_additionw   s   t|3T\BBB3T\BBB(E(E(G(GGVVV66884<GVVV\DL(   R  	S  	S  	S   R  	S  	S  	S  	S  	Sr   c                 :   | j                                         }|| j         z  }|                     || j                   || j         z  }|                     || j                   || j                                         z  }|                     || j                   d S r7   )r   r(   r   r)   rH   rA   )r   r;   s     r   test_inplace_additionz(TestEccPoint_Ed448.test_inplace_addition   s    !!##$+...$+...$+//111.....r   c                    | j                                         }|                                 |                     |j        | j        j                   |                     |j        | j        j                   | j                                         }|                                }|                                 |                     ||           d S r7   )r   r(   doubler   r   r)   r   rA   )r   r;   r,   pointRs       r   test_doublingz TestEccPoint_Ed448.test_doubling   s    !!##4<>2224<>222 k++--%%%%%r   c                    d}|| j         z  }|                     |j        d           |                     |j        d           d}|| j         z  }|                     |j        | j         j                   |                     |j        | j         j                   d}|| j         z  }|                     |j        | j        j                   |                     |j        | j        j                   d}|| j         z  }|                     |j        | j        j                   |                     |j        | j        j                   d}|| j         z  }|                     |j        d           |                     |j        d           d}|| j         z  }|                     |j        d	           |                     |j        d
           d}|| j         z  }|                     |j        d           |                     |j        d           d}|| j         z  }|                     |j        d           |                     |j        d           d}|| j         z  }|                     |j        d           |                     |j        d           d}|| j         z  }|                     |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)   rH   )r   dr;   s      r   test_scalar_multiplyz'TestEccPoint_Ed448.test_scalar_multiply   sB   T[1%%%1%%%T[4;=1114;=111T[4<>2224<>222T[4<>2224<>222T[  $V  	W  	W  	W  $V  	W  	W  	WT[  $V  	W  	W  	W  $V  	W  	W  	WT[  $V  	W  	W  	W  $V  	W  	W  	WT[  $V  	W  	W  	W  $V  	W  	W  	WT[  $V  	W  	W  	W  $V  	W  	W  	WT[  $V  	W  	W  	W  $V  	W  	W  	W  	W  	Wr   c                     |                      | j                                        d           |                      | j                                        d           d S )Ni  8   )r   r   size_in_bitssize_in_bytesr   s    r   
test_sizeszTestEccPoint_Ed448.test_sizes   sP    1133S9992244b9999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 DC D DE ED C DE ED Xc#hC888FhtCy$s)7;;;GhtCy$s)7;;;G5 5 5G G G:2 2 22 2 2
1 1 17 7 7
4 4 4
S S S/ / /
& 
& 
&1W 1W 1Wf: : : : :r   r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestEccKey_Ed448c                    t          d          }d}d}t          d|          }|                     |j        |           |                     |j        d           |                     |                                           |                     |j        j        |           |                     |j        j	        |           t          ||d          }t          d||          }|                     |j        d           |                     |                                           |                     |j        |           t          d|          }|                     t          t          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   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   sy     N  O  O7...4(((  !S  	T  	T  	T))***r***r***R))7U;;;  !S  	T  	T  	T))***U+++ 7... 	*fGqAAAAAr   c                    t          t          d         j        t          d         j        d          }t	          d|          }|                     |                                           |                     |j        |           d S )Nr   r   )r   rp   )	r   r   GxGyr	   assertFalserr   r   rs   )r   rp   rv   s      r   test_public_keyz TestEccKey_Ed448.test_public_key   st    ),gg.>.AQQQ7%000**+++U+++++r   c                     t          dd          }|                                }|                     |                                           |                     |j        |j                   d S )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   se    g666%%'',,..///'.99999r   c                 >    |                      t          d            d S )Nc                  $    t          dd          S )Nr   s8   HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHrm   )r	   rf   r   r   <lambda>z4TestEccKey_Ed448.test_invalid_seed.<locals>.<lambda>   s    f7.S.S.S r   )r*   r+   r   s    r   test_invalid_seedz"TestEccKey_Ed448.test_invalid_seed   s"    *&S&STTTTTr   c                    t          j        dd          }t          j        dd          }t          j        dd          }|                                }|                                }|                                }|                     ||           |                     ||           |                     ||           |                     ||           |                     ||           d S )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    m@@@}'AAA}'AAA ++--
"--//"--//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   r   zcurve='Ed448'r   )r   generateassertInreprr   r   r   )r   rv   s     r   test_name_consistencyz&TestEccKey_Ed448.test_name_consistency  so    l)))otCyy111G,,,))/99999r   N)	ra   rb   rc   rw   r|   r   r   r   r   rf   r   r   rh   rh      st        B B B0, , ,: : :U U U5 5 5": : : : :r   rh   c                        e Zd Zd Zd Zd ZdS )TestEccModule_Ed448c                    t          j        d          }|                     |                                           t	          t
          d         j        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   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   l)))))***),gg.>.AQQQTWTYYU+++ |'***C&&& 	7#### |'HLNN4GHHH|'HLNN4GHHHt$$$$$r   c                    t          d          }d}d}d}t          ||d          }t          j        d|          }|                     |j        |           |                     |                                           t          j        d||          }|                     |j        |           |                     |                                           t          j        d|||	          }|                     |j        |           |                     |                                           t          j        d
|          }d S )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  O~Rw/// m'555U+++))*** m'2rBBBU+++**+++ m'b"MMMU+++))*** m'555r   c                 \   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| |                     t
          t          j        dd	
           d S )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.177;K;NOOO*cmLL7LeLLL*cmR7aRR6RRR*cm7QQQQQr   N)ra   rb   rc   r   r   r   rf   r   r   r   r     sF        % % %$6 6 62R R R R Rr   r   c                     g }|t          t                    z  }|t          t                    z  }|t          t                    z  }|S r7   )r   r   rh   r   )configtestss     r   	get_testsr   E  sE    E	_/000E	_-...E	_0111ELr   __main__c                  B    t          j        t                                S r7   )unittest	TestSuiter   rf   r   r   suiter   N  s    !)++...r   r   )defaultTest)r   binasciir   Cryptodome.SelfTest.st_commonr   Cryptodome.SelfTest.loaderr   Cryptodome.PublicKeyr   Cryptodome.PublicKey.ECCr   r   r	   Cryptodome.Math.Numbersr
   Cryptodome.Hashr   TestCaser   rh   r   r   ra   r   mainrf   r   r   <module>r      s  >        9 9 9 9 9 9 8 8 8 8 8 8 $ $ $ $ $ $ > > > > > > > > > > + + + + + + $ $ $ $ $ $^: ^: ^: ^: ^:* ^: ^: ^:B>: >: >: >: >:x( >: >: >:B3R 3R 3R 3R 3R(+ 3R 3R 3Rl      z/ / /HMg&&&&&& r   