o
    5h!                     @   s   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d Zd d	lmZ G d
d deZG dd de jZi fddZedkrWdd Ze jdd dS dS )    N)	unhexlify)list_test_cases)tobytes)AESDES3DES)SHAKE128c                 C   s   t jt| d|S )N)data)r   newr   read)taglength r   w/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/Crypto/SelfTest/Cipher/test_OpenPGP.pyget_tag_random'   s   r   )BlockChainingTestsc                   @   s   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	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dS ) OpenPGPTestskey_128   key_192   iv_128iv_64   data_128c                 C   n   t | jt j| j}tdd}||}|d d |dd  }}t | jt j|}||}| || d S )N	plaintexti@     )	r   r
   r   MODE_OPENPGPr   r   encryptdecryptassertEqualselfcipherptcteivpt2r   r   r   test_loopback_128:      


zOpenPGPTests.test_loopback_128c                 C   r   )Nr   i   
   )	r   r
   r   r   r   r   r   r    r!   r"   r   r   r   test_loopback_64E   r*   zOpenPGPTests.test_loopback_64c                 C   sT   t | jt j| j}|d}| |j| j t | jt j|}| |j| j d S N    )r   r
   r   r   r   r   r!   ivr#   r$   r'   r   r   r   test_IV_iv_attributesP   s
   
z"OpenPGPTests.test_IV_iv_attributesc                 C   sF   t | jt j| j}|d}t | jt j|}| |dd d S r-   )r   r
   r   r   r   r   r!   r    r0   r   r   r   test_null_encryption_decryptionX   s   
z,OpenPGPTests.test_null_encryption_decryptionc                 C   s^   t | jt j| j}|d}| t|jd t | jt j|}|d | t|jd d S r-   )	r   r
   r   r   r   r   assertRaises	TypeErrorr    r0   r   r   r   test_either_encrypt_or_decrypt_   s   

z+OpenPGPTests.test_either_encrypt_or_decryptc                    f   dgd }t | jt j| j  fdd|D }t | jt j| j | d| d| d S )N   7777777d   c                       g | ]}  |qS r   r   .0xr$   r   r   
<listcomp>l       z8OpenPGPTests.test_unaligned_data_128.<locals>.<listcomp>r.   )r   r
   r   r   r   r!   joinr   r#   
plaintextsciphertextsr   r>   r   test_unaligned_data_128h   
   
"z$OpenPGPTests.test_unaligned_data_128c                    r6   )Nr7   r8   c                    r9   r   r:   r;   r>   r   r   r?   t   r@   z7OpenPGPTests.test_unaligned_data_64.<locals>.<listcomp>r.   )r   r
   r   r   r   r!   rA   r   rB   r   r>   r   test_unaligned_data_64p   rF   z#OpenPGPTests.test_unaligned_data_64c                 C      d S Nr   r#   r   r   r   test_output_paramx      zOpenPGPTests.test_output_paramc                 C   rH   rI   r   rJ   r   r   r   test_output_param_same_buffer{   rL   z*OpenPGPTests.test_output_param_same_bufferc                 C   rH   rI   r   rJ   r   r   r   test_output_param_memoryview~   rL   z)OpenPGPTests.test_output_param_memoryviewc                 C   rH   rI   r   rJ   r   r   r   test_output_param_neg   rL   z"OpenPGPTests.test_output_param_negN)__name__
__module____qualname__r   r   aes_moder   	des3_moder   r   r   r   r   r   r)   r,   r1   r2   r5   rE   rG   rK   rM   rN   rO   r   r   r   r   r   -   s&    




	r   c                   @   s   e Zd Zdd Zdd ZdS )TestVectorsc           	      C      d}d}d}d}d}t |}t |}t |}t |}t |}t|tj|}||}| |d d | | |dd  | t|tj|}||}| || d S )N4ac18620270744fb4f647426c61636b43617457686974654361744dc6b9e1f095de609765c59983db5956ae4f63aea7405389d2ebb 5baa61e4c9b93f3f0682250b6cf8331b 3d7d3e62282add7eb203eeba5c800733$fd934601ef49cb58b6d9aebca6056bdb96efr   )r   r   r
   r   r   r!   r    	r#   r   
ciphertextkeyr/   encrypted_ivr$   r&   r%   r   r   r   test_aes   s"   

zTestVectors.test_aesc           	      C   rV   )N2ac1762037074324fb53ba3596f73656d69746556616c6c657929979238528357b90e2e0be549cb0b2d5999b9a4a447e5c5c7d07ade65b460f5ea9be35f9e14aa883a2048e3824aa616c0b2cd47e2afb8b7e4b06a7eef0b58050e8b904ar+   )r   r   r
   r   r   r!   r    r\   r   r   r   	test_des3   s"   

zTestVectors.test_des3N)rP   rQ   rR   r`   rf   r   r   r   r   rU      s    -rU   c                 C   s    g }|t t7 }|t t7 }|S rI   )r   r   rU   )configtestsr   r   r   	get_tests   s   ri   __main__c                   C   s   t t S rI   )unittest	TestSuiteri   r   r   r   r   <lambda>   s    rm   suite)defaultTest)rk   binasciir   Crypto.SelfTest.st_commonr   Crypto.Util.py3compatr   Crypto.Cipherr   r   r   Crypto.Hashr   r   Crypto.SelfTest.Cipher.test_CBCr   r   TestCaserU   ri   rP   rn   mainr   r   r   r   <module>   s   XL