U
    ÈZj—$  ã                   @   sZ  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ƒ q¤eD ] Zefdd„Zeede eƒ qÊ[[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�rVdd„ Ze j d d!� 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   úb/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/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                    sÎ   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ó   7777777éd   é   ©Zsegment_sizec                    s   g | ]}ˆ   |¡‘qS r   ©Úencrypt©Ú.0Úx©Úcipherr   r   Ú
<listcomp>8   s     z4OfbTests.test_unaligned_data_128.<locals>.<listcomp>ó    é€   c                    s   g | ]}ˆ   |¡‘qS r   r   r   r   r   r   r   =   s     )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                    sÎ   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 )
Nr   r   r   r   c                    s   g | ]}ˆ   |¡‘qS r   r   r   r   r   r   r   D   s     z3OfbTests.test_unaligned_data_64.<locals>.<listcomp>r    é@   c                    s   g | ]}ˆ   |¡‘qS r   r   r   r   r   r   r   I   s     )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   r-   r.   r   Zdes_moder   r/   r   r   r   r   r1   P   s   r1   )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   s   |   |¡ d S ©N)Z_do_kat_aes_test©r&   Ú	file_namer   r   r   Únew_funcq   s    r5   Z	test_AES_c                 C   s   |   |¡ d S r2   )Z_do_mct_aes_testr3   r   r   r   r5   v   s    )zTOFBMMT2.rspzTOFBMMT3.rspzTOFBinvperm.rspzTOFBpermop.rspzTOFBsubtab.rspzTOFBvarkey.rspzTOFBvartext.rspc                 C   s   |   |¡ d S r2   )Z_do_tdes_testr3   r   r   r   r5   †   s    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   sÜ   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Ú€6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710Z€3b3fd92eb72dad20333449f8e83cfb4a7789508d16918f03f53c52dac54ed8259740051e9c5fecf64344f7a82260edcc304c6528f659c77866a510d9c1d6ae5eZ 2b7e151628aed2a6abf7158809cf4f3cÚ 000102030405060708090a0b0c0d0e0féøÿÿÿ©r   r   r   r-   r#   r   Zdecrypt©r&   Z	plaintextZ
ciphertextÚkeyZivr   r   r   r   Útest_aes_128‘   s     "zSP800TestVectors.test_aes_128c                 C   sÜ   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 )Nr7   Z€cdc80d6fddf18cab34c25909c99a4174fcc28b8d4c63837c09e81700c11004018d9a9aeac0f6596f559c6d4daf59a5f26d9f200857ca6c3e9cac524bd9acc92aZ08e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7br8   r9   r:   r;   r   r   r   Útest_aes_192¬   s     "zSP800TestVectors.test_aes_192c                 C   sÜ   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 )Nr7   Z€dc7e84bfda79164b7ecd8486985d38604febdc6740d20b3ac88f6ad82a4fb08d71ab47a086e86eedf39d1c5bba97c4080126141d67f37be8538f5a8be740e484Z@603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4r8   r9   r:   r;   r   r   r   Útest_aes_256Ç   s     "zSP800TestVectors.test_aes_256N)r*   r+   r,   Ú__doc__r=   r>   r?   r   r   r   r   r6   �   s   r6   c                 C   s6   g }|t tƒ7 }|  d¡r&|t tƒ7 }|t tƒ7 }|S )NZ
slow_tests)r   r   Úgetr1   r6   )ÚconfigZtestsr   r   r   Ú	get_testsã   s    
rC   Ú__main__c                   C   s   t  tƒ ¡S r2   )ÚunittestZ	TestSuiterC   r   r   r   r   Ú<lambda>í   r    rF   Úsuite)ZdefaultTest)!rE   Ú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   r0   r1   Znist_aes_kat_mmt_filesZnist_aes_mct_filesr4   r5   ÚsetattrZnist_tdes_filesZTestCaser6   rC   r*   rG   Úmainr   r   r   r   Ú<module>   s:   !
V	
