
    <f6:                        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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                 `   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   GxyassertEqualr   r   xypointGcopypointG2assertRaises
ValueError)selfpaibpbp2s       u/home/panchajanya/Development/work/volatility3/lib/python3.11/site-packages/Crypto/SelfTest/PublicKey/test_ECC_448.py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F    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_setY   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   r/   s     r)   	test_copyzTestEccPoint_Ed448.test_copy_   sS    !!##4;=1114;=11111r+   c                     | j                                         }| j                                        }|                     | j         |           |                     | j         |           d S r3   )r    r!   r"   r   assertNotEqual)r%   pointHpointIs      r)   
test_equalzTestEccPoint_Ed448.test_equald   s^    !!##""$$f---DK00000r+   c                     t          ddd          }|                     |                                           |                     ||                                           d S r-   )r   
assertTrueis_point_at_infinityr   point_at_infinity)r%   r&   s     r)   test_paizTestEccPoint_Ed448.test_paij   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 r3   )r    r;   r<   )r%   negGsums      r)   test_negatezTestEccPoint_Ed448.test_negateo   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"   pointG3r=   r   r   )r%   G5s     r)   test_additionz TestEccPoint_Ed448.test_additiont   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 r3   )r    r!   r   r"   rD   r=   )r%   r7   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 r3   )r    r!   doubler   r   r"   r   r=   )r%   r7   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"   rD   )r%   dr7   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_bytesr%   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"   rD   r*   r1   r4   r9   r>   rB   rF   rH   rL   rW   r]    r+   r)   r   r   -   sm        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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ed448)r   rk   pointr   r   rV   )r   r	   r   rk   rV   r;   has_privatepointQr   r   r   r#   r$   )r%   rk   PxPykeyrn   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 )Nrm   r   )r   rn   )	r   r   GxGyr	   assertFalserp   r   rq   )r%   rn   rt   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 )Nrm   9   HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHrj   )r	   
public_keyry   rp   r   rq   )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 )Nrm   s8   HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHrj   )r	   rc   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   )rk   r   rm   s9   CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC)r   	constructr}   r   r6   )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 )Nrm   r   zcurve='Ed448'r   )r   generateassertInreprr   r   r}   )r%   rt   s     r)   test_name_consistencyz&TestEccKey_Ed448.test_name_consistency  so    l)))otCyy111G,,,))/99999r+   N)	r^   r_   r`   ru   rz   r   r   r   r   rc   r+   r)   re   re      st        B B B0, , ,: : :U U U5 5 5": : : : :r+   re   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;   rp   r   r   rw   rx   rV   r   rq   r6   r   newread)r%   rt   rn   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 )Nrg   rh   ri   rl   r   r   rj   )r   point_xpoint_y)r   rk   r   r   rm   )	r   r   r   r   r   rq   r;   rp   ry   )r%   rk   rr   rs   rV   rn   rt   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 )NrR   rP   )r   r   rm   r   r   rN   ro   s:   HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHrj   )dictr   rw   rx   r#   r$   r   r   )r%   coordcoordGs      r)   test_negative_constructz+TestEccModule_Ed448.test_negative_construct9  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)r^   r_   r`   r   r   r   rc   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 r3   )r   r   re   r   )configtestss     r)   	get_testsr   B  sE    E	_/000E	_-...E	_0111ELr+   __main__c                  B    t          j        t                                S r3   )unittest	TestSuiter   rc   r+   r)   suiter   K  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   re   r   r   r^   r   mainrc   r+   r)   <module>r      s  >        5 5 5 5 5 5 4 4 4 4 4 4             : : : : : : : : : : ' ' ' ' ' '            [: [: [: [: [:* [: [: [:|>: >: >: >: >:x( >: >: >:B3R 3R 3R 3R 3R(+ 3R 3R 3Rl      z/ / /HMg&&&&&& r+   