
    ,h              	          d Z ddlZddlmZmZ ddlmZ ddlmZ ddl	m
Z
mZ ddlmZ ddlmZ d	d
gZdZeD ]  Z ededez  dd i      xs g Z ee      D ]  \  ZZ eee      rej2                  ej4                  z   ej6                  z   Z e eej:                               e eej<                               e ee            ededfZejA                  e          G d dejB                        Z" G d dejB                        Z# G d dejB                        Z$i fdZ%e&dk(  rddlZd Z' ejP                  d       yy)z&Self-test suite for Crypto.Cipher.DES3    N)hexlify	unhexlify)DES3)strxor_c)bchrtostr)load_test_vectors)list_test_cases)054686520717566636b2062726f776e20666f78206a756d700a826fd8ce53b855fcce21c8112256fe668d5c05dd9b6b90000123456789abcdef23456789abcdef01456789abcdef0123zNIST SP800-67 B.1)21e81b7ade88a2595c577d4d9b20c0f8 9b397ebf81b1181e282f4bb8adbadc6bzTwo-key 3DES)zTECBMMT2.rspzTECBMMT3.rsp)CipherTDESzTDES ECB (%s)countc                     t        |       S N)int)xs    b/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/Crypto/SelfTest/Cipher/test_DES3.py<lambda>r   @   s
    CF     z ()c                       e Zd Zd Zd Zd Zy)CheckParityc                 z    t        d      }t        j                  |      }| j                  |t        d             y )N CABF326FA56734324FFCCABCDEFACABF CBBF326EA46734324FFDCBBCDFFBCBBFr   r   adjust_key_parityassertEqual)self	before_2kafter_2ks      r   test_parity_option2zCheckParity.test_parity_option2R   s7    @A	)))4"#EF	Hr   c                 z    t        d      }t        j                  |      }| j                  |t        d             y )N0AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCC0ABABABABABABABABBABABABABABABABACDCDCDCDCDCDCDCDr!   )r$   	before_3kafter_3ks      r   test_parity_option3zCheckParity.test_parity_option3X   s7    PQ	)))4"#UV	Xr   c           	         t        d      dz  }t        d      dz  }| j                  t        t        j                  |dz  |z          | j                  t        t        j                  ||dz  z          | j                  t        t        j                  |dz         | j                  t        t        j                  |t        |d      z   |z          y N               )r   assertRaises
ValueErrorr   r"   r   r$   sub_key1sub_key2s      r   test_degradationzCheckParity.test_degradation^   s    7Q;9q= 	*d&<&<"Q,1	3 	*d&<&<"X\1	3 	*d&<&<"Q,	( 	*d&<&<"Xh%::XE	Gr   N)__name__
__module____qualname__r'   r-   r:    r   r   r   r   P   s    HXGr   r   c                       e Zd Zd Zy)DegenerateToDESTestc           	         t        d      dz  }t        d      dz  }| j                  t        t        j                  |dz  |z   t        j
                         | j                  t        t        j                  ||dz  z   t        j
                         | j                  t        t        j                  |dz  t        j
                         | j                  t        t        j                  ||z   t        |d      z   t        j
                         y r/   )r   r5   r6   r   newMODE_ECBr   r7   s      r   runTestzDegenerateToDESTest.runTestu   s    7Q;9q= 	*dhh"Q,1--	)
 	*dhh"X\1--	)
 	*dhh"Q,--	)
 	*dhh"X-30GG--	)r   Nr;   r<   r=   rD   r>   r   r   r@   r@   s   s    )r   r@   c                       e Zd Zd Zy)
TestOutputc                 N   t        j                  dt         j                        }d}|j                  |      }t	        d      }|j                  ||      }| j                  ||       | j                  |d        |j                  ||      }| j                  ||       | j                  |d        t        t	        d            }|j                  ||       | j                  ||       |j                  ||       | j                  ||       | j                  t        |j                  |d       | j                  t        |j                  |d       t	        d      }| j                  t        |j                  ||       | j                  t        |j                  ||       y )Ns   44444444GGGGGGGGTTTTTTTTs   5555555555555555   )outputs   0000000000000000   )r   rB   rC   encrypt	bytearrayr#   decrypt
memoryviewr5   	TypeErrorr6   )r$   cipherptctrJ   resshorter_outputs          r   rD   zTestOutput.runTest   s\    2DMMB^^B2nnRn/V$d#nnRn/V$d#IbM*r&)V$r&)V$)V^^RH)V^^RH"1*fnnbP*fnnbPr   NrE   r>   r   r   rG   rG      s    Qr   rG   c                     ddl m} g } |t        dt              }|j	                  t                      |t        t              z  }|t               gz  }|S )Nr0   )make_block_testsr   )	commonrW   r   	test_dataappendr@   r
   r   rG   )configrW   testss      r   	get_testsr]      sJ    (ET695E	LL$&'	_[))E	jl^ELr   __main__c                  >    t        j                  t                      y r   )unittest	TestSuiter]   r>   r   r   suiterb      s    9;'r   rb   )defaultTest))__doc__r`   binasciir   r   Crypto.Cipherr   Crypto.Util.strxorr   Crypto.Util.py3compatr   r   Crypto.SelfTest.loaderr	   Crypto.SelfTest.st_commonr
   rY   nist_tdes_mmt_files	tdes_filetest_vectors	enumerateindextv
isinstancestrkey1key2key3key	plaintext
ciphertexttest_data_itemrZ   TestCaser   r@   rG   r]   r;   rb   mainr>   r   r   <module>r|      ss  2 -  '  ' - 4 5<	$ 7 $ )I$*!')3 "23	5 ; 9;	  |, )	r b#gg"'') 56 67-'0%8: 	()), G(##  GF)(++ )6Q"" QD   z( HMMg& r   