o
    5h                     @   sh  d Z ddlZddlmZmZ ddlmZ ddlmZ ddl	m
Z
mZ ddlmZ ddlmZ d	d
gZdZeD ]FZedede ddd ipFg ZeeD ]0\ZZeeerUqKejej ej Zeeejeeejeeedeef fZe e qKq6G 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lZdd Z'ej(dd dS dS )z&Self-test suite for Crypto.Cipher.DES3    N)hexlify	unhexlify)DES3)strxor_c)bchrtostr)load_test_vectors)list_test_cases)054686520717566636b2062726f776e20666f78206a756d700a826fd8ce53b855fcce21c8112256fe668d5c05dd9b6b90000123456789abcdef23456789abcdef01456789abcdef0123zNIST SP800-67 B.1)21e81b7ade88a2595c577d4d9b20c0f8 9b397ebf81b1181e282f4bb8adbadc6bzTwo-key 3DES)zTECBMMT2.rspzTECBMMT3.rsp)CipherTDESzTDES ECB (%s)countc                 C   s   t | S N)int)x r   t/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/Crypto/SelfTest/Cipher/test_DES3.py<lambda>@   s    r   z%s (%s)c                   @   s$   e Zd Zdd Zdd Zdd ZdS )CheckParityc                 C   &   t d}t|}| |t d d S )N CABF326FA56734324FFCCABCDEFACABF CBBF326EA46734324FFDCBBCDFFBCBBFr   r   adjust_key_parityassertEqual)self	before_2kafter_2kr   r   r   test_parity_option2R   
   
zCheckParity.test_parity_option2c                 C   r   )N0AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCC0ABABABABABABABABBABABABABABABABACDCDCDCDCDCDCDCDr   )r    	before_3kafter_3kr   r   r   test_parity_option3X   r$   zCheckParity.test_parity_option3c                 C   s~   t dd }t dd }| ttj|d |  | ttj||d   | ttj|d  | ttj|t|d |  d S N               )r   assertRaises
ValueErrorr   r   r   r    sub_key1sub_key2r   r   r   test_degradation^   s   





zCheckParity.test_degradationN)__name__
__module____qualname__r#   r)   r5   r   r   r   r   r   P   s    r   c                   @      e Zd Zdd ZdS )DegenerateToDESTestc                 C   s   t dd }t dd }| ttj|d | tj | ttj||d  tj | ttj|d tj | ttj|| t|d tj d S r*   )r   r0   r1   r   newMODE_ECBr   r2   r   r   r   runTestu   s$   





zDegenerateToDESTest.runTestNr6   r7   r8   r=   r   r   r   r   r:   s       r:   c                   @   r9   )
TestOutputc                 C   s  t dt j}d}||}td}|j||d}| || | |d  |j||d}| || | |d  ttd}|j||d | || |j||d | || | jt	|j|dd | jt	|j|dd td}| jt
|j||d | jt
|j||d d S )Ns   44444444GGGGGGGGTTTTTTTTs   5555555555555555   )outputs   0000000000000000   )r   r;   r<   encrypt	bytearrayr   decrypt
memoryviewr0   	TypeErrorr1   )r    cipherptctrB   resshorter_outputr   r   r   r=      s(   
zTestOutput.runTestNr>   r   r   r   r   r@      r?   r@   c                 C   sD   ddl m} g }|tdt}|t  |tt7 }|t g7 }|S )Nr+   )make_block_testsr   )	commonrN   r   	test_dataappendr:   r	   r   r@   )configrN   testsr   r   r   	get_tests   s   rT   __main__c                   C   s   t t  d S r   )unittest	TestSuiterT   r   r   r   r   suite   s   rX   )defaultTest))__doc__rV   binasciir   r   Crypto.Cipherr   Crypto.Util.strxorr   Crypto.Util.py3compatr   r   Crypto.SelfTest.loaderr   Crypto.SelfTest.st_commonr	   rP   nist_tdes_mmt_files	tdes_filetest_vectors	enumerateindextv
isinstancestrkey1key2key3key	plaintext
ciphertexttest_data_itemrQ   TestCaser   r:   r@   rT   r6   rX   mainr   r   r   r   <module>   sR   



#"