
    ¿ig1!                         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	m
Z
 d dlmZ d Zd dlmZ  G d	 d
e          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)tobytes)AESDES3DES)SHAKE128c                 l    t          j        t          |                                         |          S )N)data)r	   newr   read)taglengths     c/var/www/html/afkarena/venv/lib/python3.11/site-packages/Cryptodome/SelfTest/Cipher/test_OpenPGP.pyget_tag_randomr   '   s)    <WS\\***//777    )BlockChainingTestsc                       e Zd Zej        Zej        Z edd          Z	 edd          Z
 edd          Z edd          Z 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S )OpenPGPTestskey_128   key_192   iv_128iv_64   data_128c                 l   t          j        | j        t           j        | j                  }t          dd          }|                    |          }|d d         |dd          }}t          j        | j        t           j        |          }|                    |          }|                     ||           d S )N	plaintexti@     )	r   r   r   MODE_OPENPGPr   r   encryptdecryptassertEqualselfcipherptcteivpt2s         r   test_loopback_128zOpenPGPTests.test_loopback_128:   s    s'7EEK22^^BSbS'2bcc7Rs'7==nnR  S!!!!!r   c                 l   t          j        | j        t           j        | j                  }t          dd          }|                    |          }|d d         |dd          }}t          j        | j        t           j        |          }|                    |          }|                     ||           d S )Nr   i   
   )	r   r   r   r!   r   r   r"   r#   r$   r%   s         r   test_loopback_64zOpenPGPTests.test_loopback_64E   s    $,(94:FFK11^^BSbS'2bcc7R$,(93??nnR  S!!!!!r   c                 N   t          j        | j        t           j        | j                  }|                    d          }|                     |j        | j                   t          j        | j        t           j        |          }|                     |j        | j                   d S Nr   )r   r   r   r!   r   r"   r$   ivr&   r'   r*   s      r   test_IV_iv_attributesz"OpenPGPTests.test_IV_iv_attributesP   s    s'7EEnnS!!DK000s'7==DK00000r   c                     t          j        | j        t           j        | j                  }|                    d          }t          j        | j        t           j        |          }|                     |                    d          d           d S r1   )r   r   r   r!   r   r"   r$   r#   r3   s      r   test_null_encryption_decryptionz,OpenPGPTests.test_null_encryption_decryptionX   sm    s'7EEnnS!!s'7==,,c22222r   c                 |   t          j        | j        t           j        | j                  }|                    d          }|                     t          |j        d           t          j        | j        t           j        |          }|                    d           |                     t          |j        d           d S r1   )	r   r   r   r!   r   r"   assertRaises	TypeErrorr#   r3   s      r   test_either_encrypt_or_decryptz+OpenPGPTests.test_either_encrypt_or_decrypt_   s    s'7EEnnS!!)V^S999s'7==s)V^S99999r   c                 v   dgdz  }t          j        | j        t           j        | j                  fd|D             }t          j        | j        t           j        | j                  |                     d                    |                              d                    |                               d S )N   7777777d   c                 :    g | ]}                     |          S  r"   .0xr'   s     r   
<listcomp>z8OpenPGPTests.test_unaligned_data_128.<locals>.<listcomp>l   %    ???aq))???r   r   )r   r   r   r!   r   r$   joinr"   r&   
plaintextsciphertextsr'   s      @r   test_unaligned_data_128z$OpenPGPTests.test_unaligned_data_128h   s    !^c)
s'7EE????:???s'7EE+..sxx
?S?S0T0TUUUUUr   c                 v   dgdz  }t          j        | j        t           j        | j                  fd|D             }t          j        | j        t           j        | j                  |                     d                    |                              d                    |                               d S )Nr<   r=   c                 :    g | ]}                     |          S r?   r@   rA   s     r   rD   z7OpenPGPTests.test_unaligned_data_64.<locals>.<listcomp>t   rE   r   r   )r   r   r   r!   r   r$   rF   r"   rG   s      @r   test_unaligned_data_64z#OpenPGPTests.test_unaligned_data_64p   s    !^c)
$,(94:FF????:???$,(94:FF+..sxx
?S?S0T0TUUUUUr   c                     d S Nr?   r&   s    r   test_output_paramzOpenPGPTests.test_output_paramx       r   c                     d S rO   r?   rP   s    r   test_output_param_same_bufferz*OpenPGPTests.test_output_param_same_buffer{   rR   r   c                     d S rO   r?   rP   s    r   test_output_param_memoryviewz)OpenPGPTests.test_output_param_memoryview~   rR   r   c                     d S rO   r?   rP   s    r   test_output_param_negz"OpenPGPTests.test_output_param_neg   rR   r   N)__name__
__module____qualname__r   r!   aes_moder   	des3_moder   r   r   r   r   r   r,   r/   r4   r6   r:   rJ   rM   rQ   rT   rV   rX   r?   r   r   r   r   -   s&       H!I nY++GnY++G^Hb))FN7A&&E~j"--H	" 	" 	"	" 	" 	"1 1 13 3 3: : :V V VV V V          r   r   c                       e Zd Zd Zd ZdS )TestVectorsc                 (   d}d}d}d}d}t          |          }t          |          }t          |          }t          |          }t          |          }t          j        |t          j        |          }|                    |          }|                     |d d         |           |                     |dd          |           t          j        |t          j        |          }|                    |          }|                     ||           d S )N4ac18620270744fb4f647426c61636b43617457686974654361744dc6b9e1f095de609765c59983db5956ae4f63aea7405389d2ebb 5baa61e4c9b93f3f0682250b6cf8331b 3d7d3e62282add7eb203eeba5c800733$fd934601ef49cb58b6d9aebca6056bdb96efr    )r   r   r   r!   r"   r$   r#   	r&   r   
ciphertextkeyr2   encrypted_ivr'   r)   r(   s	            r   test_aeszTestVectors.test_aes   s   0 K	K
0/;i((	z**
nnr]] ..c.33^^I&&CRC,///BCC*---c.==^^J''Y'''''r   c                 (   d}d}d}d}d}t          |          }t          |          }t          |          }t          |          }t          |          }t          j        |t          j        |          }|                    |          }|                     |d d         |           |                     |dd          |           t          j        |t          j        |          }|                    |          }|                     ||           d S )N2ac1762037074324fb53ba3596f73656d69746556616c6c657929979238528357b90e2e0be549cb0b2d5999b9a4a447e5c5c7d07ade65b460f5ea9be35f9e14aa883a2048e3824aa616c0b2cd47e2afb8b7e4b06a7eef0b58050e8b904ar.   )r   r   r   r!   r"   r$   r#   rf   s	            r   	test_des3zTestVectors.test_des3   s    I	I
@+i((	z**
nnr]] ..#t0"55^^I&&CRC,///BCC*---#t0,??^^J''Y'''''r   N)rY   rZ   r[   rj   rq   r?   r   r   r_   r_      s3        +( +( +(Z( ( ( ( (r   r_   c                 f    g }|t          t                    z  }|t          t                    z  }|S rO   )r   r   r_   )configtestss     r   	get_testsru      s0    E	_\***E	_[)))ELr   __main__c                  B    t          j        t                                S rO   )unittest	TestSuiteru   r?   r   r   <lambda>rz      s    H&y{{33 r   suite)defaultTest)rx   binasciir   Cryptodome.SelfTest.st_commonr   Cryptodome.Util.py3compatr   Cryptodome.Cipherr   r   r   Cryptodome.Hashr	   r   #Cryptodome.SelfTest.Cipher.test_CBCr   r   TestCaser_   ru   rY   r{   mainr?   r   r   <module>r      sU  >        9 9 9 9 9 9 - - - - - - , , , , , , , , , , $ $ $ $ $ $8 8 8 C B B B B BU U U U U% U U UpI( I( I( I( I((# I( I( I(X      z33EHMg&&&&&& r   