
    ¿ig08                        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 	 d dlZd	Zn# e$ r d
ZY nw xY wddZd Zd Zd Zd Z G d dej                  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)SkipTest)list_test_cases)tostrFileNotFoundError)DerSequenceDerBitString)SHAKE128)ECCTFrbc                 B   d }	 t           s7t          t          j        t	          j        t          j                  |           d}t          j                            t          j	                  }t          j        
                    t	          j        j
        |g|R  |           }t          ||          5 }|                                }d d d            n# 1 swxY w Y   n,# t          $ r t          j        dt          d           Y nw xY w|t!          d| z            |S )N)	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results	dir_compsinit_dirfull_file_namefile_ins          p/var/www/html/afkarena/venv/lib/python3.11/site-packages/Cryptodome/SelfTest/PublicKey/test_import_Curve25519.py	load_filer(   4   s[   G$% 	/#EL$&K$=$=$-/ / / )	7??#<#EFFbgl8&Hi&H&H&H)TT.$'' 	%7llnnG	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%  $ $ $@!!"	$ 	$ 	$ 	$ 	$ 	$$
 |i/000Ns6   B.C 2CC CC CC &DDc                     d                     |           }t          t          |                              dd                              dd                    S )N      :)r   r   r   replace)linesexts     r'   compactr1   N   sE    
((5//CU3ZZ''R0088bAABBBr*   c                      t          d                                          } t          | dd                   }t          j        d|          }||                                fS )Nzecc_x25519.txt      
Curve25519)curveseed)r(   
splitlinesr1   r   	construct
public_key)	key_linesr7   keys      r'   create_ref_keys_x25519r=   S   sZ    *++6688I9QqS>""D
-l
6
6
6C!!""r*   c                  X    t          j                                        d          j        S )Ns   SEED)r
   newupdater    r*   r'   get_fixed_prngrB   Z   s    <>>  ))..r*   c                     t                      }|                    |            t                      }|                    |d                    |j        S )N   )r   decoder	   value)dataseqbss      r'   extract_bitstring_from_spkirJ   ^   sC    
--CJJt	BIIc!f8Or*   c                       e Zd Zd Zd ZdS )
TestImportc                 R    |                      t          t          j        d           d S )Nr*   )assertRaises
ValueErrorr   
import_keyselfs    r'   
test_emptyzTestImport.test_emptyh   s"    *cnc:::::r*   c                 t    d}t          |          }|                     t          t          j        |           d S )N`302e020100300506032b656f042204207009906b64ec727d5cb5c23007bf0425b3fd79014c6cd62ca3dddfcf0f278f79)r   rN   rO   r   rP   )rR   mismatch_hexmismatchs      r'   test_mismatchzTestImport.test_mismatchk   s4    y\***cnh?????r*   N)__name__
__module____qualname__rS   rX   rA   r*   r'   rL   rL   f   s7        ; ; ;@ @ @ @ @r*   rL   c                   Z     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Z xZS )TestImport_Curve25519c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S N)superr]   __init__r=   ref_private
ref_publicrR   argskwargs	__class__s      r'   ra   zTestImport_Curve25519.__init__t   ?    3#T**3TDVDDD,B,D,D)$///r*   c                 @   t          d          }t          j        |          }|                     | j        |           t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_x25519_public.der)r(   r   _import_subjectPublicKeyInfoassertEqualrc   _import_derrP   rR   key_filer<   s      r'   test_import_public_derz,TestImport_Curve25519.test_import_public_derx   s    455.x88#...oh--#...nX&&#.....r*   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_x25519_private.derr(   r   rm   rl   rb   rP   rn   s      r'   test_import_pkcs8_derz+TestImport_Curve25519.test_import_pkcs8_der   sh    566oh--)3///nX&&)3/////r*   c                     t          d          }t          j        |d          }|                     | j        |           t          j        |d          }|                     | j        |           d S )Nzecc_x25519_private_p8.dersecretrs   rn   s      r'   %test_import_private_pkcs8_encrypted_1z;TestImport_Curve25519.test_import_private_pkcs8_encrypted_1   sj    899oh11)3///nXx00)3/////r*   c                     t          d          }t          j        |d          }|                     | j        |           d S )Nzecc_x25519_private_p8.pemrv   r(   r   rP   rl   rb   rn   s      r'   %test_import_private_pkcs8_encrypted_2z;TestImport_Curve25519.test_import_private_pkcs8_encrypted_2   s@    899nXx00)3/////r*   c                     t          d          }t          j        |d          }|                     | j        |           t          j        |d          }|                     | j        |           d S )Nzecc_x25519_private_p8_2.derrv   rs   rn   s      r'   %test_import_private_pkcs8_encrypted_3z;TestImport_Curve25519.test_import_private_pkcs8_encrypted_3   sj    :;;oh11)3///nXx00)3/////r*   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Nzecc_x25519_x509.der)r(   r   rm   rl   rc   rP   rn   s      r'   test_import_x509_derz*TestImport_Curve25519.test_import_x509_der   sf    233oh--#...nX&&#.....r*   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_x25519_public.pemr(   r   rP   rl   rc   rn   s      r'   test_import_public_pemz,TestImport_Curve25519.test_import_public_pem   s=    455nX&&#.....r*   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_x25519_private.pemry   rn   s      r'   test_import_private_pemz-TestImport_Curve25519.test_import_private_pem   s>    566nX&&)3/////r*   c                    dD ]}t          d|z            }t          j        |d          }|                     | j        |           t          j        t          |          d          }|                     | j        |           d S )N)des3aes128aes192aes256zecc_x25519_private_enc_%s.pemrv      secret)r(   r   rP   rl   rb   r   )rR   algoro   r<   s       r'   !test_import_private_pem_encryptedz7TestImport_Curve25519.test_import_private_pem_encrypted   s    8 	4 	4D !@4!GHHH.844CT-s333.x)<<CT-s3333	4 	4r*   c                     t          d          }t          j        |          }|                     | j        |           d S )Nzecc_x25519_x509.pemr   rn   s      r'   test_import_x509_pemz*TestImport_Curve25519.test_import_x509_pem   s=    233nX&&#.....r*   )rY   rZ   r[   ra   rp   rt   rw   rz   r|   r~   r   r   r   r   __classcell__rg   s   @r'   r]   r]   r   s        E E E E E
/ 
/ 
/0 0 00 0 00 0 00 0 0/ / // / /0 0 04 4 4/ / / / / / /r*   r]   c                   Z     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Z xZS )TestExport_Curve25519c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S r_   )r`   r   ra   r=   rb   rc   rd   s      r'   ra   zTestExport_Curve25519.__init__   rh   r*   c                 J   t          d          }| j                            d          }|                     ||           | j                            d          }|                     ||           | j                            dd          }|                     ||           d S )Nrj   TDERformatF)r   compress)r(   rc   _export_subjectPublicKeyInforl   
export_keyrR   ro   encodeds      r'   test_export_public_derz,TestExport_Curve25519.test_export_public_der   s    455/>>tDD7+++/,,E,::7+++/,,EE,JJ7+++++r*   c                 4   t          d          }| j                                        }|                     ||           | j                            d          }|                     ||           |                     t          | j        j        dd           d S )Nrr   r   r   F)r   	use_pkcs8)r(   rb   _export_pkcs8rl   r   rN   rO   r   s      r'   test_export_private_pkcs8_clearz5TestExport_Curve25519.test_export_private_pkcs8_clear   s    566"00227+++ "--U-;;7+++*d&6&A!&% 	 	9 	9 	9 	9 	9r*   c                 &   | j                             dd          }|                     t          t          j        |d            t	          j        |d          }|                     | j         |           | j                             ddd          }t	          j        |d          }|                     | j         |           | j                             dddddi	          }t	          j        |d          }|                     | j         |           d S )
Nrv    PBKDF2WithHMAC-SHA1AndAES128-CBC)
passphrase
protectionr   r   r   r   z"PBKDF2WithHMAC-SHA256AndAES128-CBCiteration_count{   )r   r   r   prot_params)	rb   r   rN   rO   r   _import_pkcs8rl   r   rP   rR   r   decodeds      r'   #test_export_private_pkcs8_encryptedz9TestExport_Curve25519.test_export_private_pkcs8_encrypted   s(   "00H<^ 1 ` ` 	*c&7$GGG#GX66)7333 "--U9A9[ . ] ] .(33)7333 "--U9A9];Lc:R . T T .(33)733333r*   c                     t          dd                                          }| j                            d                                          }|                     ||           d S )Nr   rtPEMr   )r(   striprc   r   rl   )rR   key_file_refro   s      r'   test_export_public_pemz,TestExport_Curve25519.test_export_public_pem  s^     !8$??EEGG?--U-;;AACCx00000r*   c                     t          dd                                          }| j                            d                                          }|                     ||           d S )Nr   r   r   r   )r(   r   rb   r   rl   r   s      r'   test_export_private_pem_clearz3TestExport_Curve25519.test_export_private_pem_clear  s_    5t<<BBDD"--U-;;AACC7+++++r*   c                     | j                             ddd          }|                     t          t          j        |           d|v sJ t	          j        |d          }|                     | j         |           d S )Nr   r   r   r   zENCRYPTED PRIVATE KEYrv   )rb   r   rN   rO   r   rP   rl   r   s      r'   !test_export_private_pem_encryptedz7TestExport_Curve25519.test_export_private_pem_encrypted  s    "--U9B9[ . ] ]
 	*cng>>>&'1111.(33)733333r*   c                     | j                             d          }|                     t          |          d           |                     |t	          d                     d S )Nrawr       s@   ff7561ef60c9c8a757f6d6372ec14142c9be208d0e719136d8d3c715dfcf7e15)rc   r   rl   lenr   )rR   r   s     r'   test_export_rawz%TestExport_Curve25519.test_export_raw  s[    /,,E,::Wr***),o"p"pqqqqqr*   c                     | j                             dddt                                }| j                             dddt                                }|                     ||           d S )Nr   rv   r   r   r   r   randfuncrb   r   rB   rl   rR   encoded1encoded2s      r'   	test_prngzTestExport_Curve25519.test_prng"  s    #..e:B:\8F8H8H / J J #..e:B:\8F8H8H / J J 	8,,,,,r*   c                     | j                             dddt                                }| j                             dddt                                }|                     ||           d S )Nr   rv   r   r   r   r   r   s      r'   test_byte_or_string_passphrasez4TestExport_Curve25519.test_byte_or_string_passphrase.  s    #..e:B:\8F8H8H / J J #..e:C:\8F8H8H / J J 	8,,,,,r*   c                    |                      t          | j        j        d           |                      t          | j        j        dd           |                      t          | j        j        ddd           |                      t          | j        j        ddd	
           |                      t          | j        j        dd           d S )NXXXr   r   rv   )r   r   r,   F)r   r   r   r   r   OpenSSH)rN   rO   rb   r   rQ   s    r'   test_error_params1z(TestExport_Curve25519.test_error_params19  s    *d&6&A%PPP 	**5!&%- 	 	/ 	/ 	/ 	**5!&%'$)	 	 	+ 	+ 	+
 	**5!&%'%G	 	 	I 	I 	I 	**5!*%- 	 	/ 	/ 	/ 	/ 	/r*   )rY   rZ   r[   ra   r   r   r   r   r   r   r   r   r   r   r   r   s   @r'   r   r      s        E E E E E
, 
, 
,9 9 94 4 461 1 1
, , ,
4 4 4r r r

- 
- 
-	- 	- 	-/ / / / / / /r*   r   c                       e Zd Zd ZdS )TestImport_Curve25519_Weakc                 @   ddz  dz
  }dddd|dz
  ||dz   |dz   |dz   |dz  dz
  |dz  |dz  dz   f}|D ]i}t          j        |d          }t          j        |d	          }|                    d
          }|                     t
          t           j        |           jd S )Nr         r   rD   l   kxujaj\~|ObjZs	oP,E$ l   _+yBb$:6gw[8cph[DS7OW
curve25519)pointr6   r   r   )r   	EccXPointEccKeyr   rN   rO   rP   )rR   pweak_xxlow_order_pointweak_keyr   s          r'   test_weak_pemz(TestImport_Curve25519_Weak.test_weak_pemX  s    sFRK]_a%a%aacca%!)a%a%!)  	' 	'A!mA|<<Oz|LLLH)))77Gj!n%' ' ' '	' 	'r*   N)rY   rZ   r[   r   rA   r*   r'   r   r   V  s#        ' ' ' ' 'r*   r   c                     g }	 |t          t                    z  }|t          t                    z  }|t          t                    z  }|t          t                    z  }n# t
          $ r Y nw xY w|S r_   )r   rL   r]   r   r   r   )configtestss     r'   	get_testsr   r  s~    E,,,!6777!6777!;<<<   Ls   AA! !
A.-A.__main__c                  B    t          j        t                                S r_   )unittest	TestSuiter   rA   r*   r'   suitr     s    !)++...r*   suite)defaultTest)r   )$r   r   r   r   binasciir   r   Cryptodome.SelfTest.st_commonr   Cryptodome.Util.py3compatr   r   Cryptodome.Util.asn1r   r	   Cryptodome.Hashr
   Cryptodome.PublicKeyr   r   r   ImportErrorr(   r1   r=   rB   rJ   TestCaserL   r]   r   r   r   rY   r   mainrA   r*   r'   <module>r      so  > 
			                9 9 9 9 9 9 > > > > > > > > : : : : : : : : $ $ $ $ $ $ $ $ $ $ $ $#$$$$! # # #"#   4C C C
# # #/ / /  	@ 	@ 	@ 	@ 	@" 	@ 	@ 	@V/ V/ V/ V/ V/H- V/ V/ V/rH/ H/ H/ H/ H/H- H/ H/ H/V' ' ' ' '!2 ' ' '8  	 	 	 	 z/ / /HMg&&&&&& s    A AA