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r¬d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   ú–/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/Cryptodome/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ó   7777777éd   é   ©Ú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   Ú€cdc80d6fddf18cab34c25909c99a4174fcc28b8d4c63837c09e81700c11004018d9a9aeac0f6596f559c6d4daf59a5f26d9f200857ca6c3e9cac524bd9acc92aÚ08e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7brM   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   ÚCryptodome.SelfTest.st_commonr   ÚCryptodome.Util.py3compatr   ÚCryptodome.Cipherr   r   r   ÚCryptodome.Hashr   ÚCryptodome.SelfTest.loaderr	   r   Ú#Cryptodome.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	þ