
    9i>                     |   S SK r S SKJr  S SKJr  S SKJr  S SKJrJ	r	  S SK
JrJrJr  S SKJr  S SKJr  S	 r " S
 S\5      r " S S\ R(                  5      rSrSr\ H2  rS H)  r\R5                  S\5      r\\4S jr\" \S\-   \5        M+     M4     \ H2  rS H)  r\R5                  S\5      r\\4S jr\" \S\-   \5        M+     M4     CCSr\ H2  rS H  r\R5                  S\5      r\\4S jrM     \" \S\-   \5        M4      " S S\ R(                  5      r0 4S jr \!S:X  a  S r"\ RF                  " SS9  gg)     N)	unhexlify)load_test_vectors)list_test_cases)tobytes	is_string)AESDES3DES)SHAKE128)BlockChainingTestsc                 Z    [         R                  " [        U 5      S9R                  U5      $ )N)data)r   newr   read)taglengths     _/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/Crypto/SelfTest/Cipher/test_CFB.pyget_tag_randomr   +   s     <<WS\*//77    c                   \    \ rS rSr\R
                  r\R
                  rS r	S r
S rS rSrg)CfbTests/   c                 h   S/S-  n[         R                  " U R                  [         R                  U R                  SS9nU Vs/ s H  o2R                  U5      PM     nn[         R                  " U R                  [         R                  U R                  SS9nU R                  SR                  U5      UR                  SR                  U5      5      5        [         R                  " U R                  [         R                  U R                  SS9nU Vs/ s H  o2R                  U5      PM     nn[         R                  " U R                  [         R                  U R                  SS9nU R                  SR                  U5      UR                  SR                  U5      5      5        g s  snf s  snf )N   7777777d      segment_sizer      )r   r   key_128MODE_CFBiv_128encryptassertEqualjoinself
plaintextscipherxciphertextss        r   test_unaligned_data_128 CfbTests.test_unaligned_data_1286   s&   !^c)
s||T[[qQ3=?:aq):?s||T[[qQ+.sxx
?S0TUs||T[[sS3=?:aq):?s||T[[sS+.sxx
?S0TU @
 @   F*F/c                 h   S/S-  n[         R                  " U R                  [         R                  U R                  SS9nU Vs/ s H  o2R                  U5      PM     nn[         R                  " U R                  [         R                  U R                  SS9nU R                  SR                  U5      UR                  SR                  U5      5      5        [         R                  " U R                  [         R                  U R                  SS9nU Vs/ s H  o2R                  U5      PM     nn[         R                  " U R                  [         R                  U R                  SS9nU R                  SR                  U5      UR                  SR                  U5      5      5        g s  snf s  snf )Nr   r   r   r   r   @   )r	   r   key_192r!   iv_64r#   r$   r%   r&   s        r   test_unaligned_data_64CfbTests.test_unaligned_data_64C   s*   !^c)
$,,tzzPQR3=?:aq):?$,,tzzPQR+.sxx
?S0TU$,,tzzPRS3=?:aq):?$,,tzzPRS+.sxx
?S0TU @
 @r.   c           
      @   [        SSS5       H<  n[        R                  " U R                  [        R                  U R
                  US9nM>     S HK  nU R                  [        [        R                  U R                  [        R                  U R
                  US9  MM     g )Nr      r   )r      	      r6   )ranger   r   r    r!   r"   assertRaises
ValueErrorr'   bitsr)   s      r   test_segment_size_128CfbTests.test_segment_size_128Q   su    !S!$DWWT\\3<<*.0F % &Dj#''4<<"kk+/  1 &r   c           
      @   [        SSS5       H<  n[        R                  " U R                  [        R                  U R
                  US9nM>     S HK  nU R                  [        [        R                  U R                  [        R                  U R
                  US9  MM     g )Nr   A   r   )r   r7   r8   ?   rB   )	r:   r	   r   r1   r!   r2   r;   r<   r   r=   s      r   test_segment_size_64CfbTests.test_segment_size_64[   st    !RODXXdllDMM4::+/1F $ $Dj$((DLL#,,"jj+/  1 $r    N)__name__
__module____qualname____firstlineno__r   r!   aes_moder	   	des3_moder,   r3   r?   rD   __static_attributes__rF   r   r   r   r   /   s*    ||HIV
V11r   r   c                   &    \ rS rSrS rS rS rSrg)NistCfbVectorsf   c                    [        SUSU-  SS 05      nUc  g S nU H  n[        U5      (       a  UnM  UR                  U l        [        R
                  " UR                  [        R                  UR                  US9nUS:X  a7  U R                  UR                  UR                  5      UR                  5        M  US:X  a7  U R                  UR                  UR                  5      UR                  5        M   e   g )NCipherr   zAES CFB%d KATcountc                     [        U 5      $ Nintr*   s    r   <lambda>1NistCfbVectors._do_kat_aes_test.<locals>.<lambda>m       #a&r   r   	[ENCRYPT]	[DECRYPT])r   r   descdescriptionr   r   keyr!   ivr$   r#   	plaintext
ciphertextdecrypt)r'   	file_namer   test_vectors	directiontvr)   s          r   _do_kat_aes_testNistCfbVectors._do_kat_aes_testh   s    ():%+l:%(8:= 	B }}	!wwDWWRVVS\\255*68FK'  !=r}}Mk)  !>Mu r   c                   ^^ [        SUST-  SS 05      nUc  g TS;   d   eS nU GHE  m[        T5      (       a  TnM  TR                  U l        [        R
                  " TR                  [        R                  TR                  TS9nUU4S jnUS:X  ah  / n[        S	5       H6  nU" TR                  Xx5      n	UR                  UR                  U	5      5        M8     U R                  US
   TR                  5        M  US:X  ai  / n
[        S	5       H6  nU" TR                  X5      nU
R                  UR                  U5      5        M8     U R                  U
S
   TR                  5        GMF   e   g )NrR   zAES CFB%d MontecarlorT   c                     [        U 5      $ rV   rW   rY   s    r   rZ   1NistCfbVectors._do_mct_aes_test.<locals>.<lambda>   r\   r   )r   r   r   c                    > TS:X  a  US:  a  US   $ U TR                   /U   $ US:X  a  U $ US::  a  TR                   US-
  U $ XS-
     $ )Nr      r            )rb   )
input_text
output_seqjr   ri   s      r   	get_input2NistCfbVectors._do_mct_aes_test.<locals>.get_input   se    3&Av)"~-&.q116%%"W55Qq>)!b&))r   r]   i  r^   )r   r   r_   r`   r   r   ra   r!   rb   r:   rc   appendr#   r$   rd   re   )r'   rf   r   rg   rh   r)   rx   ctsrw   rc   ptsrd   ri   s     `         @r   _do_mct_aes_testNistCfbVectors._do_mct_aes_test   sO   ():%2\A%(8:= x'('	B }}	!wwDWWRVVS\\255*68F* K'tA )",, ?IJJv~~i89 %   R"--8k)tA!*2==#!AJJJv~~j9: %   R",,7uK r   c                 6   [        SUSU-  SS 05      nUc  g S nU GHx  n[        U5      (       a  UnM  UR                  U l        [	        US5      (       a:  [
        R                  " UR                  [
        R                  UR                  US9nOUR                  UR                  :w  a'  UR                  UR                  -   UR                  -   nOUR                  UR                  -   n[        R                  " U[        R                  UR                  US9nUS:X  a8  U R                  UR                  UR                   5      UR"                  5        GM;  US:X  a8  U R                  UR%                  UR"                  5      UR                   5        GMy   e   g )	N)rS   TDESzTDES CFB%d KATrT   c                     [        U 5      $ rV   rW   rY   s    r   rZ   .NistCfbVectors._do_tdes_test.<locals>.<lambda>   r\   r   keysr   r]   r^   )r   r   r_   r`   hasattrr
   r   r   r!   rb   key1key3key2r	   r$   r#   rc   rd   re   )r'   rf   r   rg   rh   ri   r)   ra   s           r   _do_tdes_testNistCfbVectors._do_tdes_test   sA   ();%,|;%(8:= 	B }}	!wwDr6""#,,.:< 77bgg%''BGG+bgg5C''BGG+C#t}}bee/;=K'  !=r}}Mk)  !>Mu/ r   )r`   N)rG   rH   rI   rJ   rj   r~   r   rM   rF   r   r   rO   rO   f   s    81f!r   rO   )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                 :    U R                  U[        U5      5        g rV   )rj   rX   r'   rf   r>   s      r   new_funcr          !!)SY7r   	test_AES_c                 :    U R                  U[        U5      5        g rV   )r~   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                 :    U R                  U[        U5      5        g rV   )r   rX   r   s      r   r   r     s    y#d)4r   
test_TDES_c                   <    \ rS rSrSrS rS rS rS rS r	S r
S	rg
)SP800TestVectorsi  zLClass exercising the CFB test vectors found in Section F.3
of NIST SP 800-3Ac                    SnSnSnSn[        U5      n[        U5      n[        U5      n[        U5      n[        R                  " U[        R                  USS9nU R	                  UR                  U5      U5        [        R                  " U[        R                  USS9nU R	                  UR                  U5      U5        g )N$6bc1bee22e409f96e93d7e117393172aae2d$3b79424c9c0dd436bace9e0ed4586a4f32b9 2b7e151628aed2a6abf7158809cf4f3c 000102030405060708090a0b0c0d0e0fr   r   r   r   r   r!   r$   r#   re   r'   rc   rd   ra   rb   r)   s         r   test_aes_128_cfb8"SP800TestVectors.test_aes_128_cfb8  s    >	>
::nr]i(	z*
cllBQ?	2J?cllBQ?
3Y?r   c                    SnSnSnSn[        U5      n[        U5      n[        U5      n[        U5      n[        R                  " U[        R                  USS9nU R	                  UR                  U5      U5        [        R                  " U[        R                  USS9nU R	                  UR                  U5      U5        g )Nr   $cda2521ef0a905ca44cd057cbf0d47a0678a08e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7br   r   r   r   r   s         r   test_aes_192_cfb8"SP800TestVectors.test_aes_192_cfb8,  s    >	>
J:nr]i(	z*
cllBQ?	2J?cllBQ?
3Y?r   c                    SnSnSnSn[        U5      n[        U5      n[        U5      n[        U5      n[        R                  " U[        R                  USS9nU R	                  UR                  U5      U5        [        R                  " U[        R                  USS9nU R	                  UR                  U5      U5        g )Nr   $dc1f1a8520a64db55fcc8ac554844e889700@603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4r   r   r   r   r   s         r   test_aes_256_cfb8"SP800TestVectors.test_aes_256_cfb8<  s    >	>
Z:nr]i(	z*
cllBQ?	2J?cllBQ?
3Y?r   c                    SnSnSnSn[        U5      n[        U5      n[        U5      n[        U5      n[        R                  " U[        R                  USS9nU R	                  UR                  U5      U5        [        R                  " U[        R                  USS9nU R	                  UR                  U5      U5        g )Nڀ6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710ڀ3b3fd92eb72dad20333449f8e83cfb4ac8a64537a0b3a93fcde3cdad9f1ce58b26751f67a3cbb140b1808cf187a4f4dfc04b05357c5d1c0eeac4c66f9ff7f2e6r   r   r   r   r   r   s         r   test_aes_128_cfb128$SP800TestVectors.test_aes_128_cfb128L  s    ;	;
 ;:nr]i(	z*
cllBSA	2J?cllBSA
3Y?r   c                    SnSnSnSn[        U5      n[        U5      n[        U5      n[        U5      n[        R                  " U[        R                  USS9nU R	                  UR                  U5      U5        [        R                  " U[        R                  USS9nU R	                  UR                  U5      U5        g )Nr   ڀcdc80d6fddf18cab34c25909c99a417467ce7f7f81173621961a2b70171d3d7a2e1e8a1dd59b88b1c8e60fed1efac4c9c05f9f9ca9834fa042ae8fba584b09ffr   r   r   r   r   r   s         r   test_aes_192_cfb128$SP800TestVectors.test_aes_192_cfb128b  s    ;	;
 K:nr]i(	z*
cllBSA	2J?cllBSA
3Y?r   c                    SnSnSnSn[        U5      n[        U5      n[        U5      n[        U5      n[        R                  " U[        R                  USS9nU R	                  UR                  U5      U5        [        R                  " U[        R                  USS9nU R	                  UR                  U5      U5        g )Nr   ڀdc7e84bfda79164b7ecd8486985d386039ffed143b28b1c832113c6331e5407bdf10132415e54b92a13ed0a8267ae2f975a385741ab9cef82031623d55b1e471r   r   r   r   r   r   s         r   test_aes_256_cfb128$SP800TestVectors.test_aes_256_cfb128x  s    ;	
;
 [:nr]i(	z*
cllBSA	2J?cllBSA
3Y?r   rF   N)rG   rH   rI   rJ   __doc__r   r   r   r   r   r   rM   rF   r   r   r   r     s+    @ @ @ @,@,@r   r   c                     / nU[        [        5      -  nU R                  S5      (       a  U[        [        5      -  nU[        [        5      -  nU$ )N
slow_tests)r   r   getrO   r   )configtestss     r   	get_testsr     sI    E	_X&&Ezz,00	_-..ELr   __main__c                  >    [         R                  " [        5       5      $ rV   )unittest	TestSuiter   rF   r   r   rZ   rZ     s    H&&y{3r   suite)defaultTest)$r   binasciir   Crypto.SelfTest.loaderr   Crypto.SelfTest.st_commonr   Crypto.Util.py3compatr   r   Crypto.Cipherr   r	   r
   Crypto.Hashr   Crypto.SelfTest.Cipher.test_CBCr   r   r   TestCaserO   nist_aes_kat_mmt_filesnist_aes_mct_filesfile_gen_namer>   replacerf   r   setattrnist_tdes_filesr   r   rG   r   mainrF   r   r   <module>r      st  >   4 5 4 ( (   >841! 41nrX&& rl &  ,M!))#t4	%.T 	8i 7B	  , (M!))#t4	%.T 	8i 7B	  ( x %M!))#t4	%.T 	5  NL94h? %u@x(( u@p   z3EMMg& r   