
    ¿ig>                     r   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	 d dl
mZmZmZ d dlmZ d dlmZ d	 Z G d
 de          Z G d de j                  ZdZdZeD ]3ZdD ].Ze                    de          ZeefdZ eedez   e           /4eD ]3ZdD ].Ze                    de          ZeefdZ eedez   e           /4[[dZeD ]3ZdD ]Ze                    de          ZeefdZ eedez   e           4 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)load_test_vectors)list_test_cases)tobytes	is_string)AESDES3DES)SHAKE128)BlockChainingTestsc                 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_CFB.pyget_tag_randomr   +   s)    <WS\\***//777    c                   B    e Zd Zej        Zej        Zd Zd Z	d Z
d ZdS )CfbTestsc                    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>z4CfbTests.test_unaligned_data_128.<locals>.<listcomp>:   %    ???aq))???r   r      c                 :    g | ]}                     |          S r   r    r"   s     r   r&   z4CfbTests.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 CfbTests.test_unaligned_data_1286   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&   z3CfbTests.test_unaligned_data_64.<locals>.<listcomp>F   r'   r   r   @   c                 :    g | ]}                     |          S r   r    r"   s     r   r&   z3CfbTests.test_unaligned_data_64.<locals>.<listcomp>K   r'   r   )r	   r   key_192r+   iv_64r-   r.   r!   r/   s      @r   test_unaligned_data_64zCfbTests.test_unaligned_data_64C   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   c           	         t          ddd          D ].}t          j        | j        t          j        | j        |          }/dD ]@}|                     t          t          j        | j        t          j        | j        |           Ad S )Nr      r   )r      	      r<   )ranger   r   r*   r+   r,   assertRaises
ValueErrorr0   bitsr%   s      r   test_segment_size_128zCfbTests.test_segment_size_128Q   s    !S!$$ 	0 	0DWT\3<*.0 0 0FF & 	1 	1Dj#'4<"k+/  1 1 1 1	1 	1r   c           	         t          ddd          D ].}t          j        | j        t          j        | j        |          }/dD ]@}|                     t          t          j        | j        t          j        | j        |           Ad S )Nr   A   r   )r   r=   r>   ?   rG   )	r@   r	   r   r8   r+   r9   rA   rB   r   rC   s      r   test_segment_size_64zCfbTests.test_segment_size_64[   s    !ROO 	1 	1DXdlDM4:+/1 1 1FF $ 	1 	1Dj$(DL#,"j+/  1 1 1 1	1 	1r   N)__name__
__module____qualname__r   r+   aes_moder	   	des3_moder3   r:   rE   rI   r   r   r   r   r   /   sd        |HIV V V
V 
V 
V1 1 11 1 1 1 1r   r   c                        e Zd Zd Zd Zd ZdS )NistCfbVectorsc                    t          d|d|z  dd i          }|d S d }|D ]}t          |          r|}|j        | _        t	          j        |j        t          j        |j        |          }|dk    r4| 	                    |
                    |j                  |j                   |dk    r4| 	                    |                    |j                  |j                   J d S )NCipherr   zAES CFB%d KATcountc                      t          |           S Nintr$   s    r   <lambda>z1NistCfbVectors._do_kat_aes_test.<locals>.<lambda>m       #a&& r   r   	[ENCRYPT]	[DECRYPT])r   r   descdescriptionr   r   keyr+   ivr-   r!   	plaintext
ciphertextdecrypt)r0   	file_namer   test_vectors	directiontvr%   s          r   _do_kat_aes_testzNistCfbVectors._do_kat_aes_testh   s
   ():%+l:%(8(8:= = F	 	 	B }} 	!wDWRVS\25*68 8 8FK''  !=!=r}MMMMk))  !>!>MMMM	 	r   c                    t          d|dz  dd i          }|d S dv sJ d }|D ]@t                    r}j        | _        t	          j        j        t          j        j                  }fd}|dk    rpg }t          d	          D ]<} |j
        ||          }	|                    |                    |	                     =|                     |d
         j                   |dk    rqg }
t          d	          D ]<} |j        |
|          }|
                    |                    |                     =|                     |
d
         j
                   @J d S )NrR   zAES CFB%d MontecarlorT   c                      t          |           S rV   rW   rY   s    r   rZ   z1NistCfbVectors._do_mct_aes_test.<locals>.<lambda>   r[   r   )r   r(   r   c                     dk    r|dk    r|d         S | j         g|         S |dk    r| S |dk    rj         |dz
  |         S ||dz
           S )Nr(      r            )ra   )
input_text
output_seqjr   rh   s      r   	get_inputz2NistCfbVectors._do_mct_aes_test.<locals>.get_input   sn    3&&Avv)"~-&.q1166%%"WW5Qq>)!!b&))r   r\   i  r]   )r   r   r^   r_   r   r   r`   r+   ra   r@   rb   appendr!   r-   rc   rd   )r0   re   r   rf   rg   r%   ru   ctsrt   rb   ptsrc   rh   s     `         @r   _do_mct_aes_testzNistCfbVectors._do_mct_aes_test   s   ():%2\A%(8(8:= = Fx''''	 %	 %	B }} 	!wDWRVS\25*68 8 8F* * * * * * K''t : :A )	",Q ? ?IJJv~~i889999  R"-8888k))t ; ;A!*2=#q!A!AJJJv~~j99::::  R",7777K%	 %	r   c                    t          d|d|z  dd i          }|d S d }|D ]1}t          |          r|}|j        | _        t	          |d          r-t          j        |j        t
          j        |j	        |          }n^|j
        |j        k    r|j
        |j        z   |j        z   }n|j
        |j        z   }t          j        |t          j        |j	        |          }|dk    r4|                     |                    |j                  |j                   |dk    r5|                     |                    |j                  |j                   1J d S )	N)rS   TDESzTDES CFB%d KATrT   c                      t          |           S rV   rW   rY   s    r   rZ   z.NistCfbVectors._do_tdes_test.<locals>.<lambda>   r[   r   keysr   r\   r]   )r   r   r^   r_   hasattrr
   r   r~   r+   ra   key1key3key2r	   r-   r!   rb   rc   rd   )r0   re   r   rf   rg   rh   r%   r`   s           r   _do_tdes_testzNistCfbVectors._do_tdes_test   sw   ();%,|;%(8(8:= = F	 	 	B }} 	!wDr6"" 	=#,.:< < < 7bg%%'BG+bg5CC'BG+C#t}be/;= = =K''  !=!=r}MMMMk))  !>!>MMMM/	 	r   N)rJ   rK   rL   ri   rz   r   r   r   r   rP   rP   f   sB          81 1 1f! ! ! ! !r   rP   )zCFB?GFSbox128.rspzCFB?GFSbox192.rspzCFB?GFSbox256.rspzCFB?KeySbox128.rspzCFB?KeySbox192.rspzCFB?KeySbox256.rspzCFB?VarKey128.rspzCFB?VarKey192.rspzCFB?VarKey256.rspzCFB?VarTxt128.rspzCFB?VarTxt192.rspzCFB?VarTxt256.rspzCFB?MMT128.rspzCFB?MMT192.rspzCFB?MMT256.rsp)zCFB?MCT128.rspzCFB?MCT192.rspzCFB?MCT256.rsp)8128?c                 L    |                      |t          |                     d S rV   )ri   rX   r0   re   rD   s      r   new_funcr      $    !!)SYY77777r   	test_AES_c                 L    |                      |t          |                     d S rV   )rz   rX   r   s      r   r   r      r   r   )zTCFB?MMT2.rspzTCFB?MMT3.rspzTCFB?invperm.rspzTCFB?permop.rspzTCFB?subtab.rspzTCFB?varkey.rspzTCFB?vartext.rsp)r   64c                 L    |                      |t          |                     d S rV   )r   rX   r   s      r   r   r     s$    y#d))44444r   
test_TDES_c                   6    e Zd ZdZd Zd Zd Zd Zd Zd Z	dS )	SP800TestVectorszPClass exercising the CFB test vectors found in Section F.3
    of NIST SP 800-3Ac                    d}d}d}d}t          |          }t          |          }t          |          }t          |          }t          j        |t          j        |d          }|                     |                    |          |           t          j        |t          j        |d          }|                     |                    |          |           d S )N$6bc1bee22e409f96e93d7e117393172aae2d$3b79424c9c0dd436bace9e0ed4586a4f32b9 2b7e151628aed2a6abf7158809cf4f3c 000102030405060708090a0b0c0d0e0fr   r   r   r   r   r+   r-   r!   rd   r0   rb   rc   r`   ra   r%   s         r   test_aes_128_cfb8z"SP800TestVectors.test_aes_128_cfb8  s    >	>
::nnr]]i((	z**
clBQ???	22J???clBQ???
33Y?????r   c                    d}d}d}d}t          |          }t          |          }t          |          }t          |          }t          j        |t          j        |d          }|                     |                    |          |           t          j        |t          j        |d          }|                     |                    |          |           d S )Nr   $cda2521ef0a905ca44cd057cbf0d47a0678a08e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7br   r   r   r   r   s         r   test_aes_192_cfb8z"SP800TestVectors.test_aes_192_cfb8,  s    >	>
J:nnr]]i((	z**
clBQ???	22J???clBQ???
33Y?????r   c                    d}d}d}d}t          |          }t          |          }t          |          }t          |          }t          j        |t          j        |d          }|                     |                    |          |           t          j        |t          j        |d          }|                     |                    |          |           d S )Nr   $dc1f1a8520a64db55fcc8ac554844e889700@603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4r   r   r   r   r   s         r   test_aes_256_cfb8z"SP800TestVectors.test_aes_256_cfb8<  s    >	>
Z:nnr]]i((	z**
clBQ???	22J???clBQ???
33Y?????r   c                    d}d}d}d}t          |          }t          |          }t          |          }t          |          }t          j        |t          j        |d          }|                     |                    |          |           t          j        |t          j        |d          }|                     |                    |          |           d S )Nڀ6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710ڀ3b3fd92eb72dad20333449f8e83cfb4ac8a64537a0b3a93fcde3cdad9f1ce58b26751f67a3cbb140b1808cf187a4f4dfc04b05357c5d1c0eeac4c66f9ff7f2e6r   r   r(   r   r   r   s         r   test_aes_128_cfb128z$SP800TestVectors.test_aes_128_cfb128L  s    ;	;
 ;:nnr]]i((	z**
clBSAAA	22J???clBSAAA
33Y?????r   c                    d}d}d}d}t          |          }t          |          }t          |          }t          |          }t          j        |t          j        |d          }|                     |                    |          |           t          j        |t          j        |d          }|                     |                    |          |           d S )Nr   ڀcdc80d6fddf18cab34c25909c99a417467ce7f7f81173621961a2b70171d3d7a2e1e8a1dd59b88b1c8e60fed1efac4c9c05f9f9ca9834fa042ae8fba584b09ffr   r   r(   r   r   r   s         r   test_aes_192_cfb128z$SP800TestVectors.test_aes_192_cfb128b  s    ;	;
 K:nnr]]i((	z**
clBSAAA	22J???clBSAAA
33Y?????r   c                    d}d}d}d}t          |          }t          |          }t          |          }t          |          }t          j        |t          j        |d          }|                     |                    |          |           t          j        |t          j        |d          }|                     |                    |          |           d S )Nr   ڀdc7e84bfda79164b7ecd8486985d386039ffed143b28b1c832113c6331e5407bdf10132415e54b92a13ed0a8267ae2f975a385741ab9cef82031623d55b1e471r   r   r(   r   r   r   s         r   test_aes_256_cfb128z$SP800TestVectors.test_aes_256_cfb128x  s    ;	
;
 [:nnr]]i((	z**
clBSAAA	22J???clBSAAA
33Y?????r   N)
rJ   rK   rL   __doc__r   r   r   r   r   r   r   r   r   r   r     s         @ @ @ @ @ @ @ @ @ @ @ @,@ @ @,@ @ @ @ @r   r   c                     g }|t          t                    z  }|                     d          r|t          t                    z  }|t          t                    z  }|S )N
slow_tests)r   r   getrP   r   )configtestss     r   	get_testsr     sW    E	_X&&&Ezz, 1000	_-...ELr   __main__c                  B    t          j        t                                S rV   )unittest	TestSuiter   r   r   r   rZ   rZ     s    H&y{{33 r   suite)defaultTest)$r   binasciir   Cryptodome.SelfTest.loaderr   Cryptodome.SelfTest.st_commonr   Cryptodome.Util.py3compatr   r   Cryptodome.Cipherr   r	   r
   Cryptodome.Hashr   #Cryptodome.SelfTest.Cipher.test_CBCr   r   r   TestCaserP   nist_aes_kat_mmt_filesnist_aes_mct_filesfile_gen_namerD   replacere   r   setattrnist_tdes_filesr   r   rJ   r   mainr   r   r   <module>r      s  >        8 8 8 8 8 8 9 9 9 9 9 9 8 8 8 8 8 8 8 8 , , , , , , , , , , $ $ $ $ $ $ B B B B B B8 8 841 41 41 41 41! 41 41 41nr r r r rX& r r rl &  , C CM C C!))#t44	%.T 	8 	8 	8 	8i 7BBBB	C ( C CM C C!))#t44	%.T 	8 	8 	8 	8i 7BBBB	C
 x % @ @M 5 5!))#t44	%.T 	5 	5 	5 	5 	5GNL94h????
u@ u@ u@ u@ u@x( u@ u@ u@p      z33EHMg&&&&&& r   