
    ,hd6                     (   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 j0                  d       yy)    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y)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                 P    | j                  | j                  j                  d       y )NEd25519)assertEqualpointGr   selfs    l/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/Crypto/SelfTest/PublicKey/test_ECC_Ed25519.pytest_curve_attributez)TestEccPoint_Ed25519.test_curve_attribute<   s    **I6    c                    t        | j                  d   | j                  d   d       t        ddd      }| j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       | j                  j                         }| j                  |j                  d       | j                  |j                  d	       | j                  |j
                  |j                  |j                  f       | j                  j                         }| j                  |j                  d
       | j                  |j                  d       | j                  |j
                  |j                  |j                  f       t        ddd       | j                  t        t         ddd       y )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?   sT   #Y? q!9-""( [[lmlmrtt- ll! mn mn#%%0 	`` 	"
 	*hBiHr   c                    t        ddd      }|j                  | j                         | j                  |j                  | j                  j                         | j                  |j
                  | j                  j
                         y Nr   r!   r   r   )r   setr   r   r   r   r   pointWs     r   test_setzTestEccPoint_Ed25519.test_set\   sX    !Qi0

4;;4;;==14;;==1r   c                     | j                   j                         }| j                  |j                  | j                   j                         | j                  |j                  | j                   j                         y N)r   r(   r   r   r   r3   s     r   	test_copyzTestEccPoint_Ed25519.test_copyb   sL    !!#4;;==14;;==1r   c                     | j                   j                         }| j                  j                         }| j                  | j                   |       | j	                  | j                   |       y r7   )r   r(   r)   r   assertNotEqual)r   pointHpointIs      r   
test_equalzTestEccPoint_Ed25519.test_equalg   sN    !!#""$f-DKK0r   c                     t        ddd      }| j                  |j                                | j                  ||j	                                y 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3c3356r   c                     | j                    }| j                   dz  }||dz  z   }| j                  |j                                ||z   }| j                   dz  }| j                  ||       y )Nd   c   )r   r?   r@   r   )r   negGG100sum_zerosum_99expecteds         r   test_negatez TestEccPoint_Ed25519.test_negater   se    |{{S $*$5578;;#*r   c                 v   | j                  | j                  | j                  z   | j                         | j                  | j                  | j                  z   | j                         | j                  | j                  | j                  j	                         z   | j                         | j                  | j                  j	                         | j                  z   | j                         | j                  | j                  z   }| j                  |j
                  d       | j                  |j                  d       y )Nr"   r#   )r   r   r)   pointG3rA   r   r   )r   G5s     r   test_additionz"TestEccPoint_Ed25519.test_addition|   s    t||3T\\B3T\\B(E(E(GGV6684<<GV\\DLL(lmlmr   c                 V   | j                   j                         }|| j                   z  }| j                  || j                         || j                   z  }| j                  || j                         || j                   j                         z  }| j                  || j                         y r7   )r   r(   r   r)   rM   rA   )r   r;   s     r   test_inplace_additionz*TestEccPoint_Ed25519.test_inplace_addition   s    !!#$++.$++.$++//11.r   c                    | j                   j                         }|j                          | j                  |j                  | j
                  j                         | j                  |j                  | j
                  j                         | j                   j                         }|j                         }|j                          | j                  ||       y r7   )r   r(   doubler   r   r)   r   rA   )r   r;   r,   pointRs       r   test_doublingz"TestEccPoint_Ed25519.test_doubling   s    !!#4<<>>24<<>>2 kk++-%r   c                    d}|| j                   z  }| j                  |j                  d       | j                  |j                  d       d}|| j                   z  }| j                  |j                  | j                   j                         | j                  |j                  | j                   j                         d}|| j                   z  }| j                  |j                  | j                  j                         | j                  |j                  | j                  j                         d}|| j                   z  }| j                  |j                  | j
                  j                         | j                  |j                  | j
                  j                         d}|| j                   z  }| j                  |j                  d       | j                  |j                  d       d}|| j                   z  }| j                  |j                  d	       | j                  |j                  d
       d}|| j                   z  }| j                  |j                  d       | j                  |j                  d       d}|| j                   z  }| j                  |j                  d       | j                  |j                  d       d}|| j                   z  }| j                  |j                  d       | j                  |j                  d       d}|| j                   z  }| j                  |j                  d       | j                  |j                  d       y )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4;;==1T[[4<<>>24<<>>2T[[4<<>>24<<>>2T[[#pq#pqT[[#pq#pqT[[#pq#pqT[[#pq#opT[[#pq#pqT[[#pq#opr   c                     | j                  | j                  j                         d       | j                  | j                  j                         d       y )Nr]       )r   r   size_in_bitssize_in_bytesr   s    r   
test_sizeszTestEccPoint_Ed25519.test_sizes   s<    113S9224b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   -   s    ]]_C _^`D _]_D c#hC	:FtCy$s)9=GtCy$s)9=G7I:22
17
+n/
&1qf:r   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestEccKey_Ed25519c                    t        d      }d}d}t        d|      }| j                  |j                  |       | j                  |j                  d       | j                  |j                                | j                  |j                  j                  |       | j                  |j                  j                  |       t        ||d      }t        d||      }| j                  |j                  d       | j                  |j                                | j                  |j                  |       t        d|      }| j                  t        t        dd	
       y )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   s   [\ZZ9404( mn)*r*r*R+94u= mn)*U+ 940 	*fICr   c                     t        t        d   j                  t        d   j                  d      }t	        d|      }| j                  |j                                | j                  |j                  |       y )Nr   r   )r   ru   )	r   r   GxGyr	   assertFalserw   r   rx   )r   ru   r{   s      r   test_public_keyz"TestEccKey_Ed25519.test_public_key   s[    +..	0B0E0EYW9E2*+U+r   c                     t        dd      }|j                         }| j                  |j                                | j	                  |j
                  |j
                         y )Nr       HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHrr   )r	   
public_keyr   rw   r   rx   )r   priv_keypub_keys      r   test_public_key_derivedz*TestEccKey_Ed25519.test_public_key_derived   sK    	8%%',,./'..9r   c                 2    | j                  t        d        y )Nc                      t        dd      S )Nr      HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHrr   )r	   rk   r   r   <lambda>z6TestEccKey_Ed25519.test_invalid_seed.<locals>.<lambda>   s    f99.U r   )r*   r+   r   s    r   test_invalid_seedz$TestEccKey_Ed25519.test_invalid_seed   s    *&UVr   c                    t        j                  dd      }t        j                  dd      }t        j                  dd      }|j                         }|j                         }|j                         }| j                  ||       | j	                  ||       | j                  ||       | j	                  ||       | j	                  ||       y )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    mm	B}}'C}}'C ++-
"--/"--/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   r   zcurve='Ed25519'r   )r   generateassertInreprr   r   r   )r   r{   s     r   test_name_consistencyz(TestEccKey_Ed25519.test_name_consistency  sT    ll+'c3I.)//;r   N)	rf   rg   rh   r|   r   r   r   r   r   rk   r   r   rm   rm      s"    D0,:W5"<r   rm   c                       e Zd Zd Zd Zd Zy)TestEccModule_Ed25519c                    t        j                  d      }| j                  |j                                t	        t
        d   j                  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   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    ll+)*+..	0B0E0EYWZ]Z_Z__U+ ||),C& 	9% ||)hlln6I6IJ||)hlln6I6IJt$r   c                 b   t        d      }d}d}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 )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(  s    [\ZZYRy1 mm)$7U+)* mm)RDU+*+ mm)$BOU+)* mm)$7r   c                 l   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| | j	                  t
        t        j                  dd	
       y )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33WY=O=R=RS*cmmN9NN*cmmT9TVT*cmm97Sr   N)rf   rg   rh   r   r   r   rk   r   r   r   r     s    %$82Tr   r   c                 v    g }|t        t              z  }|t        t              z  }|t        t              z  }|S r7   )r   r   rm   r   )configtestss     r   	get_testsr   J  s<    E	_122E	_/00E	_233ELr   __main__c                  <    t        j                  t                     S r7   )unittest	TestSuiter   rk   r   r   suiter   S  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   rm   r   r   rf   r   mainrk   r   r   <module>r      s   >   5 4   : : '  c:8,, c:L><** ><B3TH-- 3Tl   z/HMMg& r   