
    ¿ig|6                        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_Ed25519   UK5J,{$%Xci\-G'
lJ[sii!   XfL33ffL33ffL33ffL33ff)xy   NP8-E:E,g`t!C@'&6   #Ur`
YTV>D&#!8eHBf`"l   \b'!cjI,`!c:5Ps%Q%Ngl   4q!!@0dvw=M95:5M]Xgr   r   ed25519curvec                 F    |                      | j        j        d           d S )NEd25519)assertEqualpointGr   selfs    j/var/www/html/afkarena/venv/lib/python3.11/site-packages/Cryptodome/SelfTest/PublicKey/test_ECC_Ed25519.pytest_curve_attributez)TestEccPoint_Ed25519.test_curve_attribute<   s#    *I66666    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      3r]d s
Y|CO~\^K[D_{?kx+SI   H,~5a(21f$&Rpc~U?&H_)r   r   r   "   #   )r   Gxyr   r   r   xyr   copypointG2assertRaises
ValueError)r   paibpbp2s       r   test_init_xyz!TestEccPoint_Ed25519.test_init_xy?   s   #Y???? q!9---""""""((( [lmmmlmmmrt--- l!! mnnn mnnn#%000 	`` 	" 	" 	" 	"
 	*hBiHHHHHr   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_Ed25519.test_set\   sh    !Qi000

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_Ed25519.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_Ed25519.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_Ed25519.test_paim   s\    q!9---0022333c335566666r   c                     | j          }| j         dz  }||dz  z   }|                     |                                           ||z   }| j         dz  }|                     ||           d S )Nd   c   )r   r?   r@   r   )r   negGG100sum_zerosum_99expecteds         r   test_negatez TestEccPoint_Ed25519.test_negater   st    |{S $*$5577888;#*****r   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_Ed25519.test_addition|   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(lmmmlmmmmmr   c                 :   | j                                         }|| j         z  }|                     || j                   || j         z  }|                     || j                   || j                                         z  }|                     || j                   d S r7   )r   r(   r   r)   rM   rA   )r   r;   s     r   test_inplace_additionz*TestEccPoint_Ed25519.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_Ed25519.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   px	_ItTyd09yAja.2h(~UmT= l   /d-yEyLl*up2rtG   r"   r#   
   l   Oy|$DG? wyJ;GTM2<,`l   ,{URCT;<O!S;%O1"Sj"|dU~c   l   yV	ZD)CBiunU]Su;2<gl   8Zx^ioi,Uo8pk
EQUSA-ul   l   

+pR'
+KC0kRqPQ|qtQl   aj 53TotKa1*lO|=<#^S\1   l   V%tsv*,>ZI ^Nn~=S~^l   v, p$f}L&*]/O |:U)r   r   r   r   r)   rM   )r   dr;   s      r   test_scalar_multiplyz)TestEccPoint_Ed25519.test_scalar_multiply   s   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[#pqqq#pqqqT[#pqqq#pqqqT[#pqqq#pqqqT[#pqqq#opppT[#pqqq#pqqqT[#pqqq#opppppr   c                     |                      | j                                        d           |                      | j                                        d           d S )Nr]       )r   r   size_in_bitssize_in_bytesr   s    r   
test_sizeszTestEccPoint_Ed25519.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)   rM   r   r/   r5   r8   r=   rB   rK   rO   rQ   rU   r`   re    r   r   r   r   -   sp       ]]_ _C _^` `D _]_ _D Xc#hC	:::FhtCy$s)9===GhtCy$s)9===G7 7 7I I I:2 2 22 2 2
1 1 17 7 7
+ + +n n n/ / /
& 
& 
&1q 1q 1qf: : : : :r   r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestEccKey_Ed25519c                    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 )N@9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60   En<	KBc	 !5?)&
MpU   Z0FU8[=t2:ek6RrU@ZQr   r   seed   0|>!Y,$%<0 <}Oe<Z&Or   )r   rs   pointr!   r   r_   )r   r	   r   rs   r_   r?   has_privatepointQr   r   r   r*   r+   )r   rs   PxPykeyru   s         r   test_private_keyz#TestEccKey_Ed25519.test_private_key   sX   [\\ZZ940004((( mnnn))***r***r***R++94u=== mnnn))***U+++ 94000 	*fICCCCCr   c                    t          t          d         j        t          d         j        d          }t	          d|          }|                     |                                           |                     |j        |           d S )Nr   r   )r   ru   )	r   r   GxGyr	   assertFalserw   r   rx   )r   ru   r{   s      r   test_public_keyz"TestEccKey_Ed25519.test_public_key   st    +.	0B0EYWWW9E222**+++U+++++r   c                     t          dd          }|                                }|                     |                                           |                     |j        |j                   d S )Nr       HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHrr   )r	   
public_keyr   rw   r   rx   )r   priv_keypub_keys      r   test_public_key_derivedz*TestEccKey_Ed25519.test_public_key_derived   se    	888%%'',,..///'.99999r   c                 >    |                      t          d            d S )Nc                  $    t          dd          S )Nr      HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHrr   )r	   rk   r   r   <lambda>z6TestEccKey_Ed25519.test_invalid_seed.<locals>.<lambda>   s    f99.U.U.U r   )r*   r+   r   s    r   test_invalid_seedz$TestEccKey_Ed25519.test_invalid_seed   s"    *&U&UVVVVVr   c                    t          j        dd          }t          j        dd          }t          j        dd          }|                                }|                                }|                                }|                     ||           |                     ||           |                     ||           |                     ||           |                     ||           d S )Nr   r   )rs   r   r   s    CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC)r   	constructr   r   r:   )r   private_keyprivate_key2private_key3r   public_key2public_key3s          r   test_equalityz TestEccKey_Ed25519.test_equality   s    m	BBB}'CCC}'CCC ++--
"--//"--//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='Ed25519'r   )r   generateassertInreprr   r   r   )r   r{   s     r   test_name_consistencyz(TestEccKey_Ed25519.test_name_consistency  sp    l+++'c333I...))/;;;;;r   N)	rf   rg   rh   r|   r   r   r   r   r   rk   r   r   rm   rm      st        D D D0, , ,: : :W W W5 5 5"< < < < <r   rm   c                        e Zd Zd Zd Zd ZdS )TestEccModule_Ed25519c                    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?   rw   r   r   r~   r   r_   r   rx   r:   r   newread)r   r{   ru   key2key1s        r   test_generatez#TestEccModule_Ed25519.test_generate  s   l+++))***+.	0B0EYWWWZ]Z__U+++ |),,,C&&& 	9%%%% |)hlnn6IJJJ|)hlnn6IJJJ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 )Nro   rp   rq   rt   r   r   rr   )r   point_xpoint_y)r   rs   r   r   r   )	r   r   r   r   r   rx   r?   rw   r   )r   rs   ry   rz   r_   ru   r{   s          r   test_constructz$TestEccModule_Ed25519.test_construct(  s3   [\\ZZYRy111 m)$777U+++))*** m)RDDDU+++**+++ m)$BOOOU+++))*** m)$777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 )Nr[   rY   )r   r   r   r   r   rW   rv   r   rr   )dictr   r~   r   r*   r+   r   r   )r   coordcoordGs      r   test_negative_constructz-TestEccModule_Ed25519.test_negative_constructA  s    R+++gi03WY=O=RSSS*cmNN9NNNN*cmT9TTVTTT*cm97SSSSSr   N)rf   rg   rh   r   r   r   rk   r   r   r   r     sF        % % %$8 8 82T T T T Tr   r   c                     g }|t          t                    z  }|t          t                    z  }|t          t                    z  }|S r7   )r   r   rm   r   )configtestss     r   	get_testsr   J  sE    E	_1222E	_/000E	_2333ELr   __main__c                  B    t          j        t                                S r7   )unittest	TestSuiter   rk   r   r   suiter   S  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   rm   r   r   rf   r   mainrk   r   r   <module>r      s  >        9 9 9 9 9 9 8 8 8 8 8 8 $ $ $ $ $ $ > > > > > > > > > > + + + + + + $ $ $ $ $ $c: c: c: c: c:8, c: c: c:L>< >< >< >< ><* >< >< ><B3T 3T 3T 3T 3TH- 3T 3T 3Tl      z/ / /HMg&&&&&& r   