
    ¿ig              	          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          pg Z ee          D ]\  ZZ eee          rej        ej        z   ej        z   Z e eej                             e eej                             e ee                    ededfZe                     e            G d dej!                  Z" G d dej!                  Z# G d dej!                  Z$i fdZ%e&dk    rddlZd Z' ej(        d           dS dS )z*Self-test suite for Cryptodome.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    `/var/www/html/afkarena/venv/lib/python3.11/site-packages/Cryptodome/SelfTest/Cipher/test_DES3.py<lambda>r   @   s    CFF     z ()c                        e Zd Zd Zd Zd ZdS )CheckParityc                     t          d          }t          j        |          }|                     |t          d                     d S )N CABF326FA56734324FFCCABCDEFACABF CBBF326EA46734324FFDCBBCDFFBCBBFr   r   adjust_key_parityassertEqual)self	before_2kafter_2ks      r   test_parity_option2zCheckParity.test_parity_option2R   sU    @AA	))44"#EFF	H 	H 	H 	H 	Hr   c                     t          d          }t          j        |          }|                     |t          d                     d S )N0AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCC0ABABABABABABABABBABABABABABABABACDCDCDCDCDCDCDCDr!   )r$   	before_3kafter_3ks      r   test_parity_option3zCheckParity.test_parity_option3X   sU    PQQ	))44"#UVV	X 	X 	X 	X 	Xr   c           	         t          d          dz  }t          d          dz  }|                     t          t          j        |dz  |z              |                     t          t          j        ||dz  z              |                     t          t          j        |dz             |                     t          t          j        |t          |d          z   |z              d S N               )r   assertRaises
ValueErrorr   r"   r   r$   sub_key1sub_key2s      r   test_degradationzCheckParity.test_degradation^   s    77Q;99q= 	*d&<"Q,1	3 	3 	3 	*d&<"X\1	3 	3 	3 	*d&<"Q,	( 	( 	( 	*d&<"Xh%:%::XE	G 	G 	G 	G 	Gr   N)__name__
__module____qualname__r'   r-   r:    r   r   r   r   P   sL        H H HX X XG G G G Gr   r   c                       e Zd Zd ZdS )DegenerateToDESTestc           	         t          d          dz  }t          d          dz  }|                     t          t          j        |dz  |z   t          j                   |                     t          t          j        ||dz  z   t          j                   |                     t          t          j        |dz  t          j                   |                     t          t          j        ||z   t          |d          z   t          j                   d S r/   )r   r5   r6   r   newMODE_ECBr   r7   s      r   runTestzDegenerateToDESTest.runTestu   s    77Q;99q= 	*dh"Q,1-	) 	) 	)
 	*dh"X\1-	) 	) 	)
 	*dh"Q,-	) 	) 	)
 	*dh"X-30G0GG-	) 	) 	) 	) 	)r   Nr;   r<   r=   rD   r>   r   r   r@   r@   s   s#        ) ) ) ) )r   r@   c                       e Zd Zd ZdS )
TestOutputc                    t          j        dt           j                  }d}|                    |          }t	          d          }|                    ||          }|                     ||           |                     |d            |                    ||          }|                     ||           |                     |d            t          t	          d                    }|                    ||           |                     ||           |                    ||           |                     ||           |                     t          |j        |d           |                     t          |j        |d           t	          d          }|                     t          |j        ||           |                     t          |j        ||           d S )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    2DMBB^^B2nnRn//V$$$d###nnRn//V$$$d###IbMM**r&)))V$$$r&)))V$$$)V^RHHH)V^RHHH"1*fnbPPP*fnbPPPPPr   NrE   r>   r   r   rG   rG      s(        Q Q Q Q Qr   rG   c                     ddl m} g } |t          dt                    }|                    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]      sm    ((((((ET6955E	LL$&&'''	_[)))E	jll^ELr   __main__c                  F    t          j        t                                 d S r   )unittest	TestSuiter]   r>   r   r   suiterb      s    9;;'''''r   rb   )defaultTest))__doc__r`   binasciir   r   Cryptodome.Cipherr   Cryptodome.Util.strxorr   Cryptodome.Util.py3compatr   r   Cryptodome.SelfTest.loaderr	   Cryptodome.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|      s  2 1 0  ' ' ' ' ' ' ' ' " " " " " " + + + + + + 1 1 1 1 1 1 1 1 8 8 8 8 8 8 9 9 9 9 9 9<	$ 7 $ ) )I$$*!')3 "2"23	5 5 ; 9;	  Y|,, ) )	r :b# 	g"')% 5 566% 6 677%--'0yy%%%8: 	(((() G  G  G  G  G(#  G  G  GF) ) ) ) )(+ ) ) )6Q Q Q Q Q" Q Q QD      zOOO( ( ( HMg&&&&&& r   