
    ¿ig0                        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          n/var/www/html/afkarena/venv/lib/python3.11/site-packages/Cryptodome/SelfTest/PublicKey/test_import_Curve448.py	load_filer(      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   3   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_x448.txt   
   Curve448)curveseed)r(   
splitlinesr1   r   	construct
public_key)	key_linesr7   keys      r'   create_ref_keys_x448r=   8   sY    .))4466I9QrT?##D
-jt
4
4
4C!!""r*   c                  X    t          j                                        d          j        S )Ns   SEED)r
   newupdater    r*   r'   get_fixed_prngrB   ?   s    <>>  ))..r*   c                     t                      }|                    |            t                      }|                    |d                    |j        S )N   )r   decoder	   value)dataseqbss      r'   extract_bitstring_from_spkirJ   C   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_emptyM   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_mismatchP   s4    y\***cnh?????r*   N)__name__
__module____qualname__rS   rX   rA   r*   r'   rL   rL   K   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_Curve448c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S N)superr]   __init__r=   ref_private
ref_publicrR   argskwargs	__class__s      r'   ra   zTestImport_Curve448.__init__Y   ?    1!4((14B6BBB,@,B,B)$///r*   c                 @   t          d          }t          j        |          }|                     | j        |           t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_x448_public.der)r(   r   _import_subjectPublicKeyInfoassertEqualrc   _import_derrP   rR   key_filer<   s      r'   test_import_public_derz*TestImport_Curve448.test_import_public_der]   s    233.x88#...oh--#...nX&&#.....r*   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Necc_x448_private.derr(   r   rm   rl   rb   rP   rn   s      r'   test_import_pkcs8_derz)TestImport_Curve448.test_import_pkcs8_deri   sh    344oh--)3///nX&&)3/////r*   c                     t          d          }t          j        |d          }|                     | j        |           t          j        |d          }|                     | j        |           d S )Nzecc_x448_private_p8.dersecretrs   rn   s      r'   %test_import_private_pkcs8_encrypted_1z9TestImport_Curve448.test_import_private_pkcs8_encrypted_1r   sj    677oh11)3///nXx00)3/////r*   c                     t          d          }t          j        |d          }|                     | j        |           d S )Nzecc_x448_private_p8.pemrv   r(   r   rP   rl   rb   rn   s      r'   %test_import_private_pkcs8_encrypted_2z9TestImport_Curve448.test_import_private_pkcs8_encrypted_2{   s@    677nXx00)3/////r*   c                     t          d          }t          j        |d          }|                     | j        |           t          j        |d          }|                     | j        |           d S )Nzecc_x448_private_p8_2.derrv   rs   rn   s      r'   %test_import_private_pkcs8_encrypted_3z9TestImport_Curve448.test_import_private_pkcs8_encrypted_3   sj    899oh11)3///nXx00)3/////r*   c                     t          d          }t          j        |d           }|                     | j        |           t          j        |          }|                     | j        |           d S )Nzecc_x448_x509.der)r(   r   rm   rl   rc   rP   rn   s      r'   test_import_x509_derz(TestImport_Curve448.test_import_x509_der   sf    011oh--#...nX&&#.....r*   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_x448_public.pemr(   r   rP   rl   rc   rn   s      r'   test_import_public_pemz*TestImport_Curve448.test_import_public_pem   s=    233nX&&#.....r*   c                     t          d          }t          j        |          }|                     | j        |           d S )Necc_x448_private.pemry   rn   s      r'   test_import_private_pemz+TestImport_Curve448.test_import_private_pem   s>    344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_x448_private_enc_%s.pemrv      secret)r(   r   rP   rl   rb   r   )rR   algoro   r<   s       r'   !test_import_private_pem_encryptedz5TestImport_Curve448.test_import_private_pem_encrypted   s    8 	4 	4D !>!EFFH.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_x448_x509.pemr   rn   s      r'   test_import_x509_pemz(TestImport_Curve448.test_import_x509_pem   s=    011nX&&#.....r*   )rY   rZ   r[   ra   rp   rt   rw   rz   r|   r~   r   r   r   r   __classcell__rg   s   @r'   r]   r]   W   s        C C C C C
/ 
/ 
/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_Curve448c                 ~     t          t          |           j        |i | t                      \  | _        | _        d S r_   )r`   r   ra   r=   rb   rc   rd   s      r'   ra   zTestExport_Curve448.__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_Curve448.test_export_public_der   s    233/>>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_clearz3TestExport_Curve448.test_export_private_pkcs8_clear   s    344"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_encryptedz7TestExport_Curve448.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_Curve448.test_export_public_pem   s^     !6==CCEE?--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_clearz1TestExport_Curve448.test_export_private_pem_clear   s_    3T::@@BB"--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_encryptedz5TestExport_Curve448.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   8   sp   e2abae24ab8f65b01969e61f84fee615b525f413a90e3d727f71d0ffe60fb1d0a1a0285f2a7fd88789206e0aa4f3e9fcb9e4ba5d644e691e)rc   r   rl   lenr   )rR   r   s     r'   test_export_rawz#TestExport_Curve448.test_export_raw  ss    /,,E,::Wr***)  -`  #a  #a  	b  	b  	b  	b  	br*   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_Curve448.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_passphrasez2TestExport_Curve448.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_Curve448.test_error_params1  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        C C C C C
, 
, 
,9 9 94 4 461 1 1
, , ,
4 4 4b b b

- 
- 
-	- 	- 	-/ / / / / / /r*   r   c                       e Zd Zd ZdS )TestImport_Curve448_Weakc                    ddz  ddz  z
  dz
  }dd|dz
  ||dz   f}|D ]i}t          j        |d          }t          j        |d          }|                    d	          }|                     t
          t           j        |           jd S )
Nr   i     rD   r   curve448)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_Curve448_Weak.test_weak_pem=  s    sFQVOaa%a%	  	' 	'A!mAz::OzzJJJH)))77Gj!n%' ' ' '	' 	'r*   N)rY   rZ   r[   r   rA   r*   r'   r   r   ;  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   P  s~    E,,,!4555!4555!9:::   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/(+ V/ V/ V/rH/ H/ H/ H/ H/(+ H/ H/ H/V' ' ' ' 'x0 ' ' '*  	 	 	 	 z/ / /HMg&&&&&& s    A AA