
    i$                        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	J
r
  S SKJr  S SKJr  S rS S	KJr   " S
 S\5      rS SKJr   " S S\5      rSrSr\ H  r\4S jr\" \S\-   \5        M     \ H  r\4S jr\" \S\-   \5        M     CCSr\ H  r\4S jr\" \S\-   \5        M      " S S\ R6                  5      r0 4S jr\S:X  a  S r\ R@                  " SS9  gg)    N)	unhexlify)list_test_cases)tobytes)AESDES3DES)SHAKE128)load_test_vectors_wycheproofc                 Z    [         R                  " [        U 5      S9R                  U5      $ )N)data)r	   newr   read)taglengths     Z/var/www/html/trading/venv/lib/python3.13/site-packages/Crypto/SelfTest/Cipher/test_OFB.pyget_tag_randomr   (   s     <<WS\*//77    )BlockChainingTestsc                   P    \ rS rSr\R
                  r\R
                  rS r	S r
Srg)OfbTests-   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 OfbTests.test_unaligned_data_1284   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OfbTests.test_unaligned_data_64A   s*   !^c)
$,,tzzPQR3=?:aq):?$,,tzzPQR+.sxx
?S0TU$,,tzzPRS3=?:aq):?$,,tzzPRS+.sxx
?S0TU @
 @r-    N)__name__
__module____qualname____firstlineno__r   MODE_OFBaes_moder   	des3_moder+   r2   __static_attributes__r4   r   r   r   r   -   s     ||HIV
Vr   r   )NistBlockChainingVectorsc                   \    \ rS rSr\R
                  r\R
                  r\	R
                  r
Srg)NistOfbVectorsP   r4   N)r5   r6   r7   r8   r   r9   r:   r   des_moder   r;   r<   r4   r   r   r?   r?   P   s    ||H||HIr   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                 &    U R                  U5        g N)_do_kat_aes_testr&   	file_names     r   new_funcrG   q       i(r   	test_AES_c                 &    U R                  U5        g rC   )_do_mct_aes_testrE   s     r   rG   rG   v   rH   r   )zTOFBMMT2.rspzTOFBMMT3.rspzTOFBinvperm.rspzTOFBpermop.rspzTOFBsubtab.rspzTOFBvarkey.rspzTOFBvartext.rspc                 &    U R                  U5        g rC   )_do_tdes_testrE   s     r   rG   rG      s    9%r   
test_TDES_c                   *    \ rS rSrSrS rS rS rSrg)SP800TestVectors   zLClass exercising the OFB test vectors found in Section F.4
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5      nU R	                  UR                  U5      U5        [        R                  " U[        R                  U5      nU R	                  UR                  U5      U5        [        R                  " U[        R                  U5      nU R	                  UR                  US S 5      US S 5        [        R                  " U[        R                  U5      nU R	                  UR                  US S 5      US S 5        g )Nڀ6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710ڀ3b3fd92eb72dad20333449f8e83cfb4a7789508d16918f03f53c52dac54ed8259740051e9c5fecf64344f7a82260edcc304c6528f659c77866a510d9c1d6ae5e 2b7e151628aed2a6abf7158809cf4f3c 000102030405060708090a0b0c0d0e0fr   r   r   r9   r#   r"   decryptr&   	plaintext
ciphertextkeyivr(   s         r   test_aes_128SP800TestVectors.test_aes_128   s   ;	;
 ;:nr]i(	z*
cllB/	2J?cllB/
3Y?cllB/	#27CRIcllB/
3B8)CR.Ir   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5      nU R	                  UR                  U5      U5        [        R                  " U[        R                  U5      nU R	                  UR                  U5      U5        [        R                  " U[        R                  U5      nU R	                  UR                  US S 5      US S 5        [        R                  " U[        R                  U5      nU R	                  UR                  US S 5      US S 5        g )NrS   ڀcdc80d6fddf18cab34c25909c99a4174fcc28b8d4c63837c09e81700c11004018d9a9aeac0f6596f559c6d4daf59a5f26d9f200857ca6c3e9cac524bd9acc92a08e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7brV   rW   rX   rZ   s         r   test_aes_192SP800TestVectors.test_aes_192   s   ;	;
 K:nr]i(	z*
cllB/	2J?cllB/
3Y?cllB/	#27CRIcllB/
3B8)CR.Ir   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5      nU R	                  UR                  U5      U5        [        R                  " U[        R                  U5      nU R	                  UR                  U5      U5        [        R                  " U[        R                  U5      nU R	                  UR                  US S 5      US S 5        [        R                  " U[        R                  U5      nU R	                  UR                  US S 5      US S 5        g )NrS   ڀdc7e84bfda79164b7ecd8486985d38604febdc6740d20b3ac88f6ad82a4fb08d71ab47a086e86eedf39d1c5bba97c4080126141d67f37be8538f5a8be740e484@603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4rV   rW   rX   rZ   s         r   test_aes_256SP800TestVectors.test_aes_256   s   ;	;
 [:nr]i(	z*
cllB/	2J?cllB/
3Y?cllB/	#27CRIcllB/
3B8)CR.Ir   r4   N)	r5   r6   r7   r8   __doc__r_   rd   ri   r<   r4   r   r   rP   rP      s    J6J6Jr   rP   c                     / nU[        [        5      -  nU R                  S5      (       a  U[        [        5      -  nU[        [        5      -  nU$ )N
slow_tests)r   r   getr?   rP   )configtestss     r   	get_testsrq      sI    E	_X&&Ezz,00	_-..ELr   __main__c                  >    [         R                  " [        5       5      $ rC   )unittest	TestSuiterq   r4   r   r   <lambda>rv      s    H&&y{3r   suite)defaultTest)!rt   binasciir   Crypto.SelfTest.st_commonr   Crypto.Util.py3compatr   Crypto.Cipherr   r   r   Crypto.Hashr	   Crypto.SelfTest.loaderr
   r   Crypto.SelfTest.Cipher.test_CBCr   r   r=   r?   nist_aes_kat_mmt_filesnist_aes_mct_filesrF   rG   setattrnist_tdes_filesTestCaserP   rq   r5   rw   mainr4   r   r   <module>r      s  >   5 ) ( (   ?8 ?V! VB E-  &  (I!* )NK)3X> (
 $I!* )NK)3X> $ x !I!* &NL94h? !SJx(( SJl   z3EMMg& r   