
    ¿ig$                        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 Zd d	lmZ  G d
 de          Zd dlmZ  G d de          ZdZdZeD ]ZefdZ eedez   e           eD ]ZefdZ eedez   e           [[dZeD ]ZefdZ eedez   e            G d de j                  Zi fdZedk    rd Z e j         d           dS dS )    N)	unhexlify)list_test_cases)tobytes)AESDES3DES)SHAKE128)load_test_vectors_wycheproofc                 l    t          j        t          |                                         |          S )N)data)r	   newr   read)taglengths     _/var/www/html/afkarena/venv/lib/python3.11/site-packages/Cryptodome/SelfTest/Cipher/test_OFB.pyget_tag_randomr   (   s)    <WS\\***//777    )BlockChainingTestsc                   6    e Zd Zej        Zej        Zd Zd Z	dS )OfbTestsc                    dgdz  }t          j        | j        t           j        | j        d          fd|D             }t          j        | j        t           j        | j        d          |                     d                    |                              d                    |                               t          j        | j        t           j        | j        d          fd|D             }t          j        | j        t           j        | j        d          |                     d                    |                              d                    |                               d S )	N   7777777d      segment_sizec                 :    g | ]}                     |          S  encrypt.0xciphers     r   
<listcomp>z4OfbTests.test_unaligned_data_128.<locals>.<listcomp>8   %    ???aq))???r   r      c                 :    g | ]}                     |          S r   r   r!   s     r   r%   z4OfbTests.test_unaligned_data_128.<locals>.<listcomp>=   r&   r   )r   r   key_128MODE_CFBiv_128assertEqualjoinr    self
plaintextsciphertextsr$   s      @r   test_unaligned_data_128z OfbTests.test_unaligned_data_1284   s3   !^c)
s|T[qQQQ????:???s|T[qQQQ+..sxx
?S?S0T0TUUUs|T[sSSS????:???s|T[sSSS+..sxx
?S?S0T0TUUUUUr   c                    dgdz  }t          j        | j        t           j        | j        d          fd|D             }t          j        | j        t           j        | j        d          |                     d                    |                              d                    |                               t          j        | j        t           j        | j        d          fd|D             }t          j        | j        t           j        | j        d          |                     d                    |                              d                    |                               d S )	Nr   r   r   r   c                 :    g | ]}                     |          S r   r   r!   s     r   r%   z3OfbTests.test_unaligned_data_64.<locals>.<listcomp>D   r&   r   r   @   c                 :    g | ]}                     |          S r   r   r!   s     r   r%   z3OfbTests.test_unaligned_data_64.<locals>.<listcomp>I   r&   r   )r   r   key_192r*   iv_64r,   r-   r    r.   s      @r   test_unaligned_data_64zOfbTests.test_unaligned_data_64A   s7   !^c)
$,tzPQRRR????:???$,tzPQRRR+..sxx
?S?S0T0TUUU$,tzPRSSS????:???$,tzPRSSS+..sxx
?S?S0T0TUUUUUr   N)
__name__
__module____qualname__r   MODE_OFBaes_moder   	des3_moder2   r9   r   r   r   r   r   -   sH        |HIV V V
V 
V 
V 
V 
Vr   r   )NistBlockChainingVectorsc                   8    e Zd Zej        Zej        Zej        Z	dS )NistOfbVectorsN)
r:   r;   r<   r   r=   r>   r   des_moder   r?   r   r   r   rB   rB   P   s#        |H|HIIIr   rB   )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                 0    |                      |           d S N)_do_kat_aes_testr/   	file_names     r   new_funcrI   q       i(((((r   	test_AES_c                 0    |                      |           d S rE   )_do_mct_aes_testrG   s     r   rI   rI   v   rJ   r   )zTOFBMMT2.rspzTOFBMMT3.rspzTOFBinvperm.rspzTOFBpermop.rspzTOFBsubtab.rspzTOFBvarkey.rspzTOFBvartext.rspc                 0    |                      |           d S rE   )_do_tdes_testrG   s     r   rI   rI      s    9%%%%%r   
test_TDES_c                   $    e Zd ZdZd Zd Zd ZdS )SP800TestVectorszPClass exercising the OFB test vectors found in Section F.4
    of NIST SP 800-3Ac                    d}d}d}d}t          |          }t          |          }t          |          }t          |          }t          j        |t          j        |          }|                     |                    |          |           t          j        |t          j        |          }|                     |                    |          |           t          j        |t          j        |          }|                     |                    |d d                   |d d                    t          j        |t          j        |          }|                     |                    |d d                   |d d                    d S )Nڀ6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710ڀ3b3fd92eb72dad20333449f8e83cfb4a7789508d16918f03f53c52dac54ed8259740051e9c5fecf64344f7a82260edcc304c6528f659c77866a510d9c1d6ae5e 2b7e151628aed2a6abf7158809cf4f3c 000102030405060708090a0b0c0d0e0fr   r   r   r=   r,   r    decryptr/   	plaintext
ciphertextkeyivr$   s         r   test_aes_128zSP800TestVectors.test_aes_128   sN   ;	;
 ;:nnr]]i((	z**
clB//	22J???clB//
33Y???clB//	#2#77CRCIIIclB//
3B388)CRC.IIIIIr   c                    d}d}d}d}t          |          }t          |          }t          |          }t          |          }t          j        |t          j        |          }|                     |                    |          |           t          j        |t          j        |          }|                     |                    |          |           t          j        |t          j        |          }|                     |                    |d d                   |d d                    t          j        |t          j        |          }|                     |                    |d d                   |d d                    d S )NrT   ڀcdc80d6fddf18cab34c25909c99a4174fcc28b8d4c63837c09e81700c11004018d9a9aeac0f6596f559c6d4daf59a5f26d9f200857ca6c3e9cac524bd9acc92a08e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7brW   rX   rY   r[   s         r   test_aes_192zSP800TestVectors.test_aes_192   sO   ;	;
 K:nnr]]i((	z**
clB//	22J???clB//
33Y???clB//	#2#77CRCIIIclB//
3B388)CRC.IIIIIr   c                    d}d}d}d}t          |          }t          |          }t          |          }t          |          }t          j        |t          j        |          }|                     |                    |          |           t          j        |t          j        |          }|                     |                    |          |           t          j        |t          j        |          }|                     |                    |d d                   |d d                    t          j        |t          j        |          }|                     |                    |d d                   |d d                    d S )NrT   ڀdc7e84bfda79164b7ecd8486985d38604febdc6740d20b3ac88f6ad82a4fb08d71ab47a086e86eedf39d1c5bba97c4080126141d67f37be8538f5a8be740e484@603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4rW   rX   rY   r[   s         r   test_aes_256zSP800TestVectors.test_aes_256   sO   ;	;
 [:nnr]]i((	z**
clB//	22J???clB//
33Y???clB//	#2#77CRCIIIclB//
3B388)CRC.IIIIIr   N)r:   r;   r<   __doc__r`   rd   rh   r   r   r   rR   rR      sV         J J J6J J J6J J J J Jr   rR   c                     g }|t          t                    z  }|                     d          r|t          t                    z  }|t          t                    z  }|S )N
slow_tests)r   r   getrB   rR   )configtestss     r   	get_testsro      sW    E	_X&&&Ezz, 1000	_-...ELr   __main__c                  B    t          j        t                                S rE   )unittest	TestSuitero   r   r   r   <lambda>rt      s    H&y{{33 r   suite)defaultTest)!rr   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@   rB   nist_aes_kat_mmt_filesnist_aes_mct_filesrH   rI   setattrnist_tdes_filesTestCaserR   ro   r:   ru   mainr   r   r   <module>r      s  >        9 9 9 9 9 9 - - - - - - , , , , , , , , , , $ $ $ $ $ $ C C C C C C8 8 8 C B B B B BV V V V V! V V VB I H H H H H    -    &  ( ? ?I!* ) ) ) )GNK)3X>>>># ? ?I!* ) ) ) )GNK)3X>>>>x ! @ @I!* & & & &GNL94h????
SJ SJ SJ SJ SJx( SJ SJ SJl      z33EHMg&&&&&& r   