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lmZ dd	 Zd d
lmZ G dd deZd dlmZ G dd deZdZdZeD ]ZefddZeede e qReD ]ZefddZeede e qe[[dZeD ]ZefddZeede e q|G dd de jZi fddZedkrdd Ze j d d! dS dS )"    N)	unhexlify)list_test_cases)tobytes)AESDES3DES)SHAKE128)load_test_vectors_wycheproofc                 C   s   t jt| d|S )N)data)r   newr   read)taglength r   s/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/Crypto/SelfTest/Cipher/test_OFB.pyget_tag_random(   s   r   )BlockChainingTestsc                   @   s(   e Zd ZejZejZdd Zdd Z	dS )OfbTestsc                       dgd }t j| jt j| jdd  fdd|D }t j| jt j| jdd | d| d| t j| jt j| jdd  fd	d|D }t j| jt j| jdd | d| d| d S )
N   7777777d      segment_sizec                       g | ]}  |qS r   encrypt.0xcipherr   r   
<listcomp>8       z4OfbTests.test_unaligned_data_128.<locals>.<listcomp>       c                    r   r   r   r   r    r   r   r"   =   r#   )r   r   key_128MODE_CFBiv_128assertEqualjoinr   self
plaintextsciphertextsr   r    r   test_unaligned_data_1284   s   
"z OfbTests.test_unaligned_data_128c                    r   )
Nr   r   r   r   c                    r   r   r   r   r    r   r   r"   D   r#   z3OfbTests.test_unaligned_data_64.<locals>.<listcomp>r$   @   c                    r   r   r   r   r    r   r   r"   I   r#   )r   r   key_192r'   iv_64r)   r*   r   r+   r   r    r   test_unaligned_data_64A   s   
"zOfbTests.test_unaligned_data_64N)
__name__
__module____qualname__r   MODE_OFBaes_moder   	des3_moder/   r3   r   r   r   r   r   -   s
    r   )NistBlockChainingVectorsc                   @   s   e Zd ZejZejZejZ	dS )NistOfbVectorsN)
r4   r5   r6   r   r7   r8   r   des_moder   r9   r   r   r   r   r;   P   s    
r;   )zOFBGFSbox128.rspzOFBGFSbox192.rspzOFBGFSbox256.rspzOFBKeySbox128.rspzOFBKeySbox192.rspzOFBKeySbox256.rspzOFBVarKey128.rspzOFBVarKey192.rspzOFBVarKey256.rspzOFBVarTxt128.rspzOFBVarTxt192.rspzOFBVarTxt256.rspzOFBMMT128.rspzOFBMMT192.rspzOFBMMT256.rsp)zOFBMCT128.rspzOFBMCT192.rspzOFBMCT256.rspc                 C      |  | d S N)_do_kat_aes_testr,   	file_namer   r   r   new_funcq      rB   	test_AES_c                 C   r=   r>   )_do_mct_aes_testr@   r   r   r   rB   v   rC   )zTOFBMMT2.rspzTOFBMMT3.rspzTOFBinvperm.rspzTOFBpermop.rspzTOFBsubtab.rspzTOFBvarkey.rspzTOFBvartext.rspc                 C   r=   r>   )_do_tdes_testr@   r   r   r   rB      rC   
test_TDES_c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	SP800TestVectorszPClass exercising the OFB test vectors found in Section F.4
    of NIST SP 800-3Ac                 C      d}d}d}d}t |}t |}t |}t |}t|tj|}| ||| t|tj|}| ||| t|tj|}| ||d d |d d  t|tj|}| ||d d |d d  d S )Nڀ6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710ڀ3b3fd92eb72dad20333449f8e83cfb4a7789508d16918f03f53c52dac54ed8259740051e9c5fecf64344f7a82260edcc304c6528f659c77866a510d9c1d6ae5e 2b7e151628aed2a6abf7158809cf4f3c 000102030405060708090a0b0c0d0e0fr   r   r   r7   r)   r   decryptr,   	plaintext
ciphertextkeyivr!   r   r   r   test_aes_128       "&zSP800TestVectors.test_aes_128c                 C   rI   )NrJ   ڀcdc80d6fddf18cab34c25909c99a4174fcc28b8d4c63837c09e81700c11004018d9a9aeac0f6596f559c6d4daf59a5f26d9f200857ca6c3e9cac524bd9acc92a08e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7brM   rN   rO   rQ   r   r   r   test_aes_192   rW   zSP800TestVectors.test_aes_192c                 C   rI   )NrJ   ڀdc7e84bfda79164b7ecd8486985d38604febdc6740d20b3ac88f6ad82a4fb08d71ab47a086e86eedf39d1c5bba97c4080126141d67f37be8538f5a8be740e484@603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4rM   rN   rO   rQ   r   r   r   test_aes_256   rW   zSP800TestVectors.test_aes_256N)r4   r5   r6   __doc__rV   rZ   r]   r   r   r   r   rH      s
    rH   c                 C   s6   g }|t t7 }| dr|t t7 }|t t7 }|S )N
slow_tests)r   r   getr;   rH   )configtestsr   r   r   	get_tests   s   
rc   __main__c                   C   s   t t S r>   )unittest	TestSuiterc   r   r   r   r   <lambda>   s    rg   suite)defaultTest)!re   binasciir   Crypto.SelfTest.st_commonr   Crypto.Util.py3compatr   Crypto.Cipherr   r   r   Crypto.Hashr   Crypto.SelfTest.loaderr	   r   Crypto.SelfTest.Cipher.test_CBCr   r   r:   r;   nist_aes_kat_mmt_filesnist_aes_mct_filesrA   rB   setattrnist_tdes_filesTestCaserH   rc   r4   rh   mainr   r   r   r   <module>   s>   !
V	