
    ,h$                        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 j6                        Zi fdZedk(  rd Z e j@                  d       yy)    N)	unhexlify)list_test_cases)tobytes)AESDES3DES)SHAKE128)load_test_vectors_wycheproofc                 ^    t        j                  t        |             j                  |      S )N)data)r	   newr   read)taglengths     a/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/Crypto/SelfTest/Cipher/test_OFB.pyget_tag_randomr   (   s     <<WS\*//77    )BlockChainingTestsc                   H    e Zd Zej                  Zej                  Zd Zd Z	y)OfbTestsc                 p   dgdz  }t        j                  | j                  t         j                  | j                  d      }|D cg c]  }|j                  |       }}t        j                  | j                  t         j                  | j                  d      }| j                  dj                  |      |j                  dj                  |                   t        j                  | j                  t         j                  | j                  d      }|D cg c]  }|j                  |       }}t        j                  | j                  t         j                  | j                  d      }| j                  dj                  |      |j                  dj                  |                   y c c}w c c}w )N   7777777d      segment_sizer      )r   r   key_128MODE_CFBiv_128encryptassertEqualjoinself
plaintextscipherxciphertextss        r   test_unaligned_data_128z 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.F3c                 p   dgdz  }t        j                  | j                  t         j                  | j                  d      }|D cg c]  }|j                  |       }}t        j                  | j                  t         j                  | j                  d      }| j                  dj                  |      |j                  dj                  |                   t        j                  | j                  t         j                  | j                  d      }|D cg c]  }|j                  |       }}t        j                  | j                  t         j                  | j                  d      }| j                  dj                  |      |j                  dj                  |                   y c c}w c c}w )Nr   r   r   r   r   @   )r   r   key_192r   iv_64r!   r"   r#   r$   s        r   test_unaligned_data_64z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__r   MODE_OFBaes_moder   	des3_moder*   r0    r   r   r   r   -   s     ||HIV
Vr   r   )NistBlockChainingVectorsc                   T    e Zd Zej                  Zej                  Zej                  Z	y)NistOfbVectorsN)
r1   r2   r3   r   r4   r5   r   des_moder   r6   r7   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                 &    | j                  |       y N)_do_kat_aes_testr%   	file_names     r   new_funcrA   q       i(r   	test_AES_c                 &    | j                  |       y r=   )_do_mct_aes_testr?   s     r   rA   rA   v   rB   r   )zTOFBMMT2.rspzTOFBMMT3.rspzTOFBinvperm.rspzTOFBpermop.rspzTOFBsubtab.rspzTOFBvarkey.rspzTOFBvartext.rspc                 &    | j                  |       y r=   )_do_tdes_testr?   s     r   rA   rA      s    9%r   
test_TDES_c                   "    e Zd ZdZd Zd Zd Zy)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                  |      }| j	                  |j                  |      |       t        j                  |t        j                  |      }| j	                  |j                  |      |       t        j                  |t        j                  |      }| j	                  |j                  |d d       |d d        t        j                  |t        j                  |      }| j	                  |j                  |d d       |d d        y )Nڀ6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710ڀ3b3fd92eb72dad20333449f8e83cfb4a7789508d16918f03f53c52dac54ed8259740051e9c5fecf64344f7a82260edcc304c6528f659c77866a510d9c1d6ae5e 2b7e151628aed2a6abf7158809cf4f3c 000102030405060708090a0b0c0d0e0fr   r   r   r4   r"   r!   decryptr%   	plaintext
ciphertextkeyivr'   s         r   test_aes_128zSP800TestVectors.test_aes_128   s   ;	;
 ;:nr]i(	z*
cllB/	2J?cllB/
3Y?cllB/	#27CRIcllB/
3B8)CR.Ir   c                    d}d}d}d}t        |      }t        |      }t        |      }t        |      }t        j                  |t        j                  |      }| j	                  |j                  |      |       t        j                  |t        j                  |      }| j	                  |j                  |      |       t        j                  |t        j                  |      }| j	                  |j                  |d d       |d d        t        j                  |t        j                  |      }| j	                  |j                  |d d       |d d        y )NrL   ڀcdc80d6fddf18cab34c25909c99a4174fcc28b8d4c63837c09e81700c11004018d9a9aeac0f6596f559c6d4daf59a5f26d9f200857ca6c3e9cac524bd9acc92a08e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7brO   rP   rQ   rS   s         r   test_aes_192z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                    d}d}d}d}t        |      }t        |      }t        |      }t        |      }t        j                  |t        j                  |      }| j	                  |j                  |      |       t        j                  |t        j                  |      }| j	                  |j                  |      |       t        j                  |t        j                  |      }| j	                  |j                  |d d       |d d        t        j                  |t        j                  |      }| j	                  |j                  |d d       |d d        y )NrL   ڀdc7e84bfda79164b7ecd8486985d38604febdc6740d20b3ac88f6ad82a4fb08d71ab47a086e86eedf39d1c5bba97c4080126141d67f37be8538f5a8be740e484@603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4rO   rP   rQ   rS   s         r   test_aes_256zSP800TestVectors.test_aes_256   s   ;	;
 [:nr]i(	z*
cllB/	2J?cllB/
3Y?cllB/	#27CRIcllB/
3B8)CR.Ir   N)r1   r2   r3   __doc__rX   r\   r`   r7   r   r   rJ   rJ      s    J6J6Jr   rJ   c                     g }|t        t              z  }| j                  d      r|t        t              z  }|t        t              z  }|S )N
slow_tests)r   r   getr:   rJ   )configtestss     r   	get_testsrg      sF    E	_X&&Ezz,00	_-..ELr   __main__c                  <    t        j                  t                     S r=   )unittest	TestSuiterg   r7   r   r   <lambda>rl      s    H&&y{3 r   suite)defaultTest)!rj   binasciir   Crypto.SelfTest.st_commonr   Crypto.Util.py3compatr   Crypto.Cipherr   r   r   Crypto.Hashr	   Crypto.SelfTest.loaderr
   r   Crypto.SelfTest.Cipher.test_CBCr   r   r8   r:   nist_aes_kat_mmt_filesnist_aes_mct_filesr@   rA   setattrnist_tdes_filesTestCaserJ   rg   r1   rm   mainr7   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HMMg& r   