o
     j8                     @   sF  d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
mZ d dlmZmZ d dlmZ d dlmZ zd dlZd	ZW n eyQ   d
ZY nw d%ddZdd Zdd Zdd Zdd ZG dd dejZG dd dejZG dd dejZG dd dejZi fddZ e!d krd!d" Z"ej#d#d$ dS dS )&    N)	unhexlify)SkipTest)list_test_cases)tostrFileNotFoundError)DerSequenceDerBitString)SHAKE128)ECCTFrbc                 C   s   d }z@t sttjttj| d}tjtj	}tj
tjj
|g|R  | }t||}| }W d    n1 s<w   Y  W n tyS   tjdtdd Y nw |d u r^td|  |S )N)Z	PublicKeyr
   z(Warning: skipping extended tests for ECC   )
stacklevelz
Missing %s)test_vectors_availabler   errnoENOENTosstrerrorpathdirnamepycryptodome_test_vectors__file__joinopenreadwarningswarnUserWarningr   )	file_namemoderesultsZ	dir_compsZinit_dirZfull_file_nameZfile_in r    q/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/Crypto/SelfTest/PublicKey/test_import_Curve25519.py	load_file4   s.   


r"   c                 C   s&   d | }tt|ddddS )N      :)r   r   r   replace)linesextr    r    r!   compactN   s   
r*   c                  C   s6   t d } t| dd }tjd|d}|| fS )Nzecc_x25519.txt      Z
Curve25519)curveseed)r"   
splitlinesr*   r
   Z	constructZ
public_key)Z	key_linesr.   keyr    r    r!   create_ref_keys_x25519S   s   r1   c                   C   s   t  djS )Ns   SEED)r	   newupdater   r    r    r    r!   get_fixed_prngZ   s   r4   c                 C   s*   t  }||  t }||d  |jS )N   )r   decoder   value)dataseqbsr    r    r!   extract_bitstring_from_spki^   s
   
r;   c                   @   s   e Zd Zdd Zdd ZdS )
TestImportc                 C   s   |  ttjd d S )Nr#   )assertRaises
ValueErrorr
   
import_keyselfr    r    r!   
test_emptyh   s   zTestImport.test_emptyc                 C   s    d}t |}| ttj| d S )NZ`302e020100300506032b656f042204207009906b64ec727d5cb5c23007bf0425b3fd79014c6cd62ca3dddfcf0f278f79)r   r=   r>   r
   r?   )rA   Zmismatch_hexZmismatchr    r    r!   test_mismatchk   s   zTestImport.test_mismatchN)__name__
__module____qualname__rB   rC   r    r    r    r!   r<   f   s    r<   c                       l   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Z  ZS )TestImport_Curve25519c                    (   t t| j|i | t \| _| _d S N)superrH   __init__r1   ref_private
ref_publicrA   argskwargs	__class__r    r!   rL   t      zTestImport_Curve25519.__init__c                 C   sV   t d}t|}| | j| t|d }| | j| t|}| | j| d S )Necc_x25519_public.der)r"   r
   Z_import_subjectPublicKeyInfoassertEqualrN   _import_derr?   rA   key_filer0   r    r    r!   test_import_public_derx   s   

z,TestImport_Curve25519.test_import_public_derc                 C   >   t d}t|d }| | j| t|}| | j| d S )Necc_x25519_private.derr"   r
   rW   rV   rM   r?   rX   r    r    r!   test_import_pkcs8_der   
   
z+TestImport_Curve25519.test_import_pkcs8_derc                 C   @   t d}t|d}| | j| t|d}| | j| d S )Nzecc_x25519_private_p8.dersecretr]   rX   r    r    r!   %test_import_private_pkcs8_encrypted_1   
   z;TestImport_Curve25519.test_import_private_pkcs8_encrypted_1c                 C   s&   t d}t|d}| | j| d S )Nzecc_x25519_private_p8.pemra   r"   r
   r?   rV   rM   rX   r    r    r!   %test_import_private_pkcs8_encrypted_2   s   z;TestImport_Curve25519.test_import_private_pkcs8_encrypted_2c                 C   r`   )Nzecc_x25519_private_p8_2.derra   r]   rX   r    r    r!   %test_import_private_pkcs8_encrypted_3   rc   z;TestImport_Curve25519.test_import_private_pkcs8_encrypted_3c                 C   r[   )Nzecc_x25519_x509.der)r"   r
   rW   rV   rN   r?   rX   r    r    r!   test_import_x509_der   r_   z*TestImport_Curve25519.test_import_x509_derc                 C   $   t d}t|}| | j| d S )Necc_x25519_public.pemr"   r
   r?   rV   rN   rX   r    r    r!   test_import_public_pem      
z,TestImport_Curve25519.test_import_public_pemc                 C   rh   )Necc_x25519_private.pemrd   rX   r    r    r!   test_import_private_pem   rl   z-TestImport_Curve25519.test_import_private_pemc                 C   sR   dD ]$}t d| }t|d}| | j| tt|d}| | j| qd S )N)Zdes3Zaes128Zaes192Zaes256zecc_x25519_private_enc_%s.pemra      secret)r"   r
   r?   rV   rM   r   )rA   algorY   r0   r    r    r!   !test_import_private_pem_encrypted   s   z7TestImport_Curve25519.test_import_private_pem_encryptedc                 C   rh   )Nzecc_x25519_x509.pemrj   rX   r    r    r!   test_import_x509_pem   rl   z*TestImport_Curve25519.test_import_x509_pem)rD   rE   rF   rL   rZ   r^   rb   re   rf   rg   rk   rn   rq   rr   __classcell__r    r    rR   r!   rH   r   s    				
rH   c                       rG   )TestExport_Curve25519c                    rI   rJ   )rK   rt   rL   r1   rM   rN   rO   rR   r    r!   rL      rT   zTestExport_Curve25519.__init__c                 C   sZ   t d}| jd}| || | jjdd}| || | jjddd}| || d S )NrU   TDERformatF)rw   compress)r"   rN   Z_export_subjectPublicKeyInforV   
export_keyrA   rY   encodedr    r    r!   test_export_public_der   s   z,TestExport_Curve25519.test_export_public_derc                 C   sR   t d}| j }| || | jjdd}| || | jt| jjddd d S )Nr\   ru   rv   F)rw   	use_pkcs8)r"   rM   _export_pkcs8rV   ry   r=   r>   rz   r    r    r!   test_export_private_pkcs8_clear   s   

z5TestExport_Curve25519.test_export_private_pkcs8_clearc                 C   s   | j jddd}| ttj|d  t|d}| | j | | j jdddd}t|d}| | j | | j jdddddid	}t|d}| | j | d S )
Nra    PBKDF2WithHMAC-SHA1AndAES128-CBC)
passphrase
protectionru   rw   r   r   z"PBKDF2WithHMAC-SHA256AndAES128-CBCZiteration_count{   )rw   r   r   Zprot_params)	rM   r~   r=   r>   r
   Z_import_pkcs8rV   ry   r?   rA   r{   decodedr    r    r!   #test_export_private_pkcs8_encrypted   s&   z9TestExport_Curve25519.test_export_private_pkcs8_encryptedc                 C   0   t dd }| jjdd }| || d S )Nri   rtPEMrv   )r"   striprN   ry   rV   )rA   Zkey_file_refrY   r    r    r!   test_export_public_pem     z,TestExport_Curve25519.test_export_public_pemc                 C   r   )Nrm   r   r   rv   )r"   r   rM   ry   rV   rz   r    r    r!   test_export_private_pem_clear  r   z3TestExport_Curve25519.test_export_private_pem_clearc                 C   sL   | j jdddd}| ttj| d|v sJ t|d}| | j | d S )Nr   ro   r   r   zENCRYPTED PRIVATE KEYra   )rM   ry   r=   r>   r
   r?   rV   r   r    r    r!   !test_export_private_pem_encrypted  s   z7TestExport_Curve25519.test_export_private_pem_encryptedc                 C   s2   | j jdd}| t|d | |td d S )Nrawrv       s@   ff7561ef60c9c8a757f6d6372ec14142c9be208d0e719136d8d3c715dfcf7e15)rN   ry   rV   lenr   )rA   r{   r    r    r!   test_export_raw  s   z%TestExport_Curve25519.test_export_rawc                 C   s<   | j jdddt d}| j jdddt d}| || d S )Nr   ra   r   rw   r   r   ZrandfuncrM   ry   r4   rV   rA   Zencoded1Zencoded2r    r    r!   	test_prng"  s   zTestExport_Curve25519.test_prngc                 C   s<   | j jdddt d}| j jdddt d}| || d S )Nr   ra   r   r   ro   r   r   r    r    r!   test_byte_or_string_passphrase.  s   z4TestExport_Curve25519.test_byte_or_string_passphrasec                 C   st   | j t| jjdd | j t| jjddd | j t| jjdddd | j t| jjddd	d
 | j t| jjddd d S )NXXXrv   r   ra   )rw   r   r%   F)rw   r   r}   r   r   ZOpenSSH)r=   r>   rM   ry   r@   r    r    r!   test_error_params19  s.   
z(TestExport_Curve25519.test_error_params1)rD   rE   rF   rL   r|   r   r   r   r   r   r   r   r   r   rs   r    r    rR   r!   rt      s    rt   c                   @   s   e Zd Zdd ZdS )TestImport_Curve25519_Weakc                 C   s   dd d }dddd|d ||d |d |d |d d |d |d d f}|D ]}t |d}t j|dd	}|jd
d}| tt j| q(d S )Nr         r   r5   l   kxujaj\~|ObjZs	oP,E$ l   _+yBb$:6gw[8cph[DS7OWZ
curve25519)pointr-   r   rv   )r
   Z	EccXPointZEccKeyry   r=   r>   r?   )rA   pZweak_xxZlow_order_pointZweak_keyr{   r    r    r!   test_weak_pemX  s.   

z(TestImport_Curve25519_Weak.test_weak_pemN)rD   rE   rF   r   r    r    r    r!   r   V  s    r   c                 C   sP   g }z|t t7 }|t t7 }|t t7 }|t t7 }W |S  ty'   Y |S w rJ   )r   r<   rH   rt   r   r   )configZtestsr    r    r!   	get_testsr  s   r   __main__c                   C   s   t t S rJ   )unittestZ	TestSuiter   r    r    r    r!   suit  s   r   Zsuite)ZdefaultTest)r   )$r   r   r   r   binasciir   r   ZCrypto.SelfTest.st_commonr   ZCrypto.Util.py3compatr   r   ZCrypto.Util.asn1r   r   ZCrypto.Hashr	   ZCrypto.PublicKeyr
   r   r   ImportErrorr"   r*   r1   r4   r;   ZTestCaser<   rH   rt   r   r   rD   r   mainr    r    r    r!   <module>   s@   
Y 