o
     j$                     @   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   `/var/www/html/Deteccion_Ine/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      Z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   Zkey_128MODE_CFBZiv_128assertEqualjoinr   selfZ
plaintextsZ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   Zkey_192r%   Z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*   r,   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)
r-   r.   r/   r   r0   r1   r   Zdes_moder   r2   r   r   r   r   r4   P   s    
r4   )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)Z_do_kat_aes_testr)   	file_namer   r   r   new_funcq      r9   Z	test_AES_c                 C   r5   r6   )Z_do_mct_aes_testr7   r   r   r   r9   v   r:   )zTOFBMMT2.rspzTOFBMMT3.rspzTOFBinvperm.rspzTOFBpermop.rspzTOFBsubtab.rspzTOFBvarkey.rspzTOFBvartext.rspc                 C   r5   r6   )Z_do_tdes_testr7   r   r   r   r9      r:   Z
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ڀ6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710Z3b3fd92eb72dad20333449f8e83cfb4a7789508d16918f03f53c52dac54ed8259740051e9c5fecf64344f7a82260edcc304c6528f659c77866a510d9c1d6ae5eZ 2b7e151628aed2a6abf7158809cf4f3c 000102030405060708090a0b0c0d0e0fr   r   r   r0   r&   r   Zdecryptr)   Z	plaintextZ
ciphertextkeyZivr    r   r   r   test_aes_128       "&zSP800TestVectors.test_aes_128c                 C   r<   )Nr=   Zcdc80d6fddf18cab34c25909c99a4174fcc28b8d4c63837c09e81700c11004018d9a9aeac0f6596f559c6d4daf59a5f26d9f200857ca6c3e9cac524bd9acc92aZ08e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7br>   r?   r@   rA   r   r   r   test_aes_192   rD   zSP800TestVectors.test_aes_192c                 C   r<   )Nr=   Zdc7e84bfda79164b7ecd8486985d38604febdc6740d20b3ac88f6ad82a4fb08d71ab47a086e86eedf39d1c5bba97c4080126141d67f37be8538f5a8be740e484Z@603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4r>   r?   r@   rA   r   r   r   test_aes_256   rD   zSP800TestVectors.test_aes_256N)r-   r.   r/   __doc__rC   rE   rF   r   r   r   r   r;      s
    r;   c                 C   s6   g }|t t7 }| dr|t t7 }|t t7 }|S )NZ
slow_tests)r   r   getr4   r;   )configZtestsr   r   r   	get_tests   s   
rJ   __main__c                   C   s   t t S r6   )unittestZ	TestSuiterJ   r   r   r   r   <lambda>   s    rM   suite)ZdefaultTest)!rL   binasciir   ZCrypto.SelfTest.st_commonr   ZCrypto.Util.py3compatr   ZCrypto.Cipherr   r   r   ZCrypto.Hashr   ZCrypto.SelfTest.loaderr	   r   ZCrypto.SelfTest.Cipher.test_CBCr   r   r3   r4   Znist_aes_kat_mmt_filesZnist_aes_mct_filesr8   r9   setattrZnist_tdes_filesZTestCaser;   rJ   r-   rN   mainr   r   r   r   <module>   s>   !
V	