+
    '(j>                        ^ RI t ^ RIHt ^ RIHt ^ RIHt ^ RIHtH	t	 ^ RI
HtHtHt ^ RIHt ^ RIHt R	 t ! R
 R]4      t ! R R] P(                  4      tRtRt] F6  tR F-  t]P5                  R]4      t]]3R lt]! ]R],           ]4       K/  	  K8  	  ] F6  tR F-  t]P5                  R]4      t]]3R lt]! ]R],           ]4       K/  	  K8  	  AARt] F6  tR F  t]P5                  R]4      t]]3R ltK  	  ]! ]R],           ]4       K8  	   ! R R] P(                  4      t/ 3R lt ]!R8X  d   R t"] PF                  ! RR7       R# R# )     N)	unhexlify)load_test_vectors)list_test_cases)tobytes	is_string)AESDES3DES)SHAKE128)BlockChainingTestsc                 `    \         P                  ! \        V 4      R 7      P                  V4      # ))data)r   newr   read)taglengths   &&T/home/ubuntu/cf-venv/lib/python3.14/site-packages/Crypto/SelfTest/Cipher/test_CFB.pyget_tag_randomr   +   s     <<WS\*//77    c                   h   a  ] tR t^/t o ]P
                  t]P
                  tR t	R t
R tR tRtV tR# )CfbTestsc                   R .^d,          p\         P                  ! V P                  \         P                  V P                  ^R7      pV Uu. uF  q2P                  V4      NK  	  pp\         P                  ! V P                  \         P                  V P                  ^R7      pV P                  RP                  V4      VP                  RP                  V4      4      4       \         P                  ! V P                  \         P                  V P                  ^R7      pV Uu. uF  q2P                  V4      NK  	  pp\         P                  ! V P                  \         P                  V P                  ^R7      pV P                  RP                  V4      VP                  RP                  V4      4      4       R# u upi u upi s   7777777segment_sizer   N)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 @
 @   F9!F>c                   R .^d,          p\         P                  ! V P                  \         P                  V P                  ^R7      pV Uu. uF  q2P                  V4      NK  	  pp\         P                  ! V P                  \         P                  V P                  ^R7      pV P                  RP                  V4      VP                  RP                  V4      4      4       \         P                  ! V P                  \         P                  V P                  ^@R7      pV Uu. uF  q2P                  V4      NK  	  pp\         P                  ! V P                  \         P                  V P                  ^@R7      pV P                  RP                  V4      VP                  RP                  V4      4      4       R# u upi u upi 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           
     N   \        ^^^4       F?  p\        P                  ! V P                  \        P                  V P
                  VR7      pKA  	  R FN  pV P                  \        \        P                  V P                  \        P                  V P
                  VR7       KP  	  R# )   r   N)r      	         )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           
     N   \        ^^A^4       F?  p\        P                  ! V P                  \        P                  V P
                  VR7      pKA  	  R FN  pV P                  \        \        P                  V P                  \        P                  V P
                  VR7       KP  	  R# )r1   r   N)r   r2   r3   ?   A   )	r6   r	   r   r,   r   r-   r7   r8   r   r9   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(   r.   r;   r@   __static_attributes____classdictcell____classdict__s   @r   r   r   /   s2     ||HIV
V11 1r   r   c                   2   a  ] tR t^ft o R tR tR tRtV tR# )NistCfbVectorsc                   \        RVRV,          RR /4      pVf   R# RpV F  p\        V4      '       d   TpK  VP                  V n        \        P
                  ! VP                  \        P                  VP                  VR7      pVR8X  d8   V P                  VP                  VP                  4      VP                  4       K  VR8X  d8   V P                  VP                  VP                  4      VP                  4       K  Q h	  R# )	CipherzAES CFB%d KATcountc                     \        V 4      # Nintr&   s   &r   <lambda>1NistCfbVectors._do_kat_aes_test.<locals>.<lambda>m       #a&r   Nr   	[ENCRYPT]	[DECRYPT]rP   r   )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                  aa \        R
VRS,          RR /4      pVf   R# SR9   g   Q hRpV EFS  o\        S4      '       d   SpK  SP                  V n        \        P
                  ! SP                  \        P                  SP                  SR7      pVV3R lpVR8X  dm   . p\        R4       F6  pV! SP                  Wx4      p	VP                  VP                  V	4      4       K8  	  V P                  VR,          SP                  4       K  VR	8X  dn   . p
\        R4       F6  pV! SP                  W4      pV
P                  VP                  V4      4       K8  	  V P                  V
R,          SP                  4       EKT  Q h	  R# )rP   zAES CFB%d MontecarlorQ   c                     \        V 4      # rS   rT   rV   s   &r   rW   1NistCfbVectors._do_mct_aes_test.<locals>.<lambda>   rY   r   Nr   c                    < S^8X  d&   V^8  d
   VR,          # V SP                   .V,          # V^ 8X  d   V # V^8:  d   SP                   V^,
          V # W^,
          ,          # )   )r`   )
input_text
output_seqjr   rg   s   &&&r   	get_input2NistCfbVectors._do_mct_aes_test.<locals>.get_input   se    3&Av)"~-&.q116%%"W55Qq>)!b&))r   rZ   i  r[   r\   )r1   rn   )r   r   r]   r^   r   r   r_   r   r`   r6   ra   appendr   r    rb   rc   )r#   rd   r   re   rf   r%   rs   ctsrr   ra   ptsrb   rg   s   &&f         @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                r   \        R	VRV,          RR /4      pVf   R# RpV EF  p\        V4      '       d   TpK  VP                  V n        \	        VR4      '       d>   \
        P                  ! VP                  \
        P                  VP                  VR7      pMVP                  VP                  8w  d0   VP                  VP                  ,           VP                  ,           pMVP                  VP                  ,           p\        P                  ! V\        P                  VP                  VR7      pVR8X  d9   V P                  VP                  VP                   4      VP"                  4       EKQ  VR8X  d9   V P                  VP%                  VP"                  4      VP                   4       EK  Q h	  R# )
rP   zTDES CFB%d KATrQ   c                     \        V 4      # rS   rT   rV   s   &r   rW   .NistCfbVectors._do_tdes_test.<locals>.<lambda>   rY   r   Nkeysr   rZ   r[   )rP   TDES)r   r   r]   r^   hasattrr
   r   r~   r   r`   key1key3key2r	   r    r   ra   rb   rc   )r#   rd   r   re   rf   rg   r%   r_   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)	rC   rD   rE   rF   rh   ry   r   rI   rJ   rK   s   @r   rN   rN   f   s     81f! !r   rN   ?c                 <    V P                  V\        V4      4       R # rS   )rh   rU   r#   rd   r:   s   &&&r   new_funcr          !!)SY7r   	test_AES_c                 <    V P                  V\        V4      4       R # rS   )ry   rU   r   s   &&&r   r   r      r   r   c                 <    V P                  V\        V4      4       R # rS   )r   rU   r   s   &&&r   r   r     s    y#d)4r   
test_TDES_c                   H   a  ] tR tRt o RtR tR tR tR tR t	R t
R	tV tR
# )SP800TestVectorsi  zLClass exercising the CFB test vectors found in Section F.3
of NIST SP 800-3Ac                   R pRpRpRp\        V4      p\        V4      p\        V4      p\        V4      p\        P                  ! V\        P                  V^R7      pV P	                  VP                  V4      V4       \        P                  ! V\        P                  V^R7      pV P	                  VP                  V4      V4       R# )$6bc1bee22e409f96e93d7e117393172aae2d$3b79424c9c0dd436bace9e0ed4586a4f32b9 2b7e151628aed2a6abf7158809cf4f3c 000102030405060708090a0b0c0d0e0fr   Nr   r   r   r   r    r   rc   r#   ra   rb   r_   r`   r%   s   &     r   test_aes_128_cfb8"SP800TestVectors.test_aes_128_cfb8  s    >	>
::nr]i(	z*
cllBQ?	2J?cllBQ?
3Y?r   c                   R pRpRpRp\        V4      p\        V4      p\        V4      p\        V4      p\        P                  ! V\        P                  V^R7      pV P	                  VP                  V4      V4       \        P                  ! V\        P                  V^R7      pV P	                  VP                  V4      V4       R# )r   $cda2521ef0a905ca44cd057cbf0d47a0678a08e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7br   r   Nr   r   s   &     r   test_aes_192_cfb8"SP800TestVectors.test_aes_192_cfb8,  s    >	>
J:nr]i(	z*
cllBQ?	2J?cllBQ?
3Y?r   c                   R pRpRpRp\        V4      p\        V4      p\        V4      p\        V4      p\        P                  ! V\        P                  V^R7      pV P	                  VP                  V4      V4       \        P                  ! V\        P                  V^R7      pV P	                  VP                  V4      V4       R# )r   $dc1f1a8520a64db55fcc8ac554844e889700@603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4r   r   Nr   r   s   &     r   test_aes_256_cfb8"SP800TestVectors.test_aes_256_cfb8<  s    >	>
Z:nr]i(	z*
cllBQ?	2J?cllBQ?
3Y?r   c                   RpRpRpRp\        V4      p\        V4      p\        V4      p\        V4      p\        P                  ! V\        P                  V^R7      pV P	                  VP                  V4      V4       \        P                  ! V\        P                  V^R7      pV P	                  VP                  V4      V4       R# ) 6bc1bee22e409f96e93d7e117393172ar   r   r   Nڀ6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710ڀ3b3fd92eb72dad20333449f8e83cfb4ac8a64537a0b3a93fcde3cdad9f1ce58b26751f67a3cbb140b1808cf187a4f4dfc04b05357c5d1c0eeac4c66f9ff7f2e6r   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                   RpRpRpRp\        V4      p\        V4      p\        V4      p\        V4      p\        P                  ! V\        P                  V^R7      pV P	                  VP                  V4      V4       \        P                  ! V\        P                  V^R7      pV P	                  VP                  V4      V4       R# )r   r   r   r   Nr   ڀcdc80d6fddf18cab34c25909c99a417467ce7f7f81173621961a2b70171d3d7a2e1e8a1dd59b88b1c8e60fed1efac4c9c05f9f9ca9834fa042ae8fba584b09ffr   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                   RpRpRpRp\        V4      p\        V4      p\        V4      p\        V4      p\        P                  ! V\        P                  V^R7      pV P	                  VP                  V4      V4       \        P                  ! V\        P                  V^R7      pV P	                  VP                  V4      V4       R# )r   r   r   r   Nr   ڀdc7e84bfda79164b7ecd8486985d386039ffed143b28b1c832113c6331e5407bdf10132415e54b92a13ed0a8267ae2f975a385741ab9cef82031623d55b1e471r   r   s   &     r   test_aes_256_cfb128$SP800TestVectors.test_aes_256_cfb128x  s    ;	
;
 [:nr]i(	z*
cllBSA	2J?cllBSA
3Y?r   rB   N)rC   rD   rE   rF   __doc__r   r   r   r   r   r   rI   rJ   rK   s   @r   r   r     s4     @ @ @ @,@,@ @r   r   c                     . pV\        \        4      ,          pV P                  R 4      '       d   V\        \        4      ,          pV\        \        4      ,          pV# )
slow_tests)r   r   getrN   r   )configtestss   & r   	get_testsr     sI    E	_X&&Ezz,00	_-..ELr   __main__c                  >    \         P                  ! \        4       4      # rS   )unittest	TestSuiter   rB   r   r   rW   rW     s    H&&y{3r   suite)defaultTest)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)zTCFB?MMT2.rspzTCFB?MMT3.rspzTCFB?invperm.rspzTCFB?permop.rspzTCFB?subtab.rspzTCFB?varkey.rspzTCFB?vartext.rsp)r   64)$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   TestCaserN   nist_aes_kat_mmt_filesnist_aes_mct_filesfile_gen_namer:   replacerd   r   setattrnist_tdes_filesr   r   rC   r   mainrB   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   