o
    5h"                     @   sL   d Z ddlmZmZ ddlmZ ddlmZ ddlm	Z	 G dd de	Z
dS )	z1passlib.tests -- unittests for passlib.crypto.des    )with_statementdivision)partial)getrandbytes)TestCasec                   @   s@   e Zd ZdZg dZdd Zdd Zdd Zd	d
 Zdd Z	dS )DesTestzpasslib.crypto.des)"r   r   l   #b72e )    r	   l   X\|XH )l            l           l   {U
t9s,	 )   ""DD r
   l   3E<f  )   MW	r
   l   -S$e74; )r
   r   l   rq5R r   )   2lajv r   l   <tCei )l   Wn4Ae l   Bgr@[l   M46lzH )l   n7;e	l   W{2f l   qRj@tQ )l   &L=l   rqPFl   YhGmu4 )l   1L0KB l   
D[`-*
 l   * )l   5V%l   2 l   @?my
 )l   rizel   :#!x,l   [X+5 )l   5El   anc:l   	\C hf)l   sq~K l   jH~SR(1 l   z+o,;S )l   *M8=l   (nAF^ l   ^9*~ )l   /;DD#l   `^k}4 l   @qrb )l   Fu-.> l   2RNyj2 l   w+:WQ)l   ^F54Ax l   \>ka8+X l   ZW;@x )l   vat5B l   b`.[^l   Vn.6E )l   0SYXl   b]di@ l   VUE
 )l   %fszK l   <S! l   Vr} )l   sV+Tx} l   Rnj9l   !Vny )l   )DuJO l   *q/Ul   JN[S )l   &6qCl   (1@ql l   A.V";`z )l   O$'p|b l   Z)ZH l   wi@ )l   r   l    qQ3h )l   ||x r   l   Fq\ )l   qc r   l   LSXGm )r   r	   l   Q$*B* )r	   r   l   [U7=UU )r   r   l   =@?. )r   r	   l   B/?#@]Q c           	      C   s   ddl m}m}m}m} | jD ]\}}}||}||}| |||@  q| t|d | t	||d  | t	|d | t	|d | t	|d dS )	zexpand_des_key()r   )expand_des_keyshrink_des_key_KDATA_MASKINT_56_MASK      ?                       N)
passlib.crypto.desr   r   r   r   des_test_vectorsassertEqualassertRaises	TypeError
ValueError)	selfr   r   r   r   key1_key2key3 r!   q/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/passlib/tests/test_crypto_des.pytest_01_expand;   s   zDesTest.test_01_expandc           	      C   s   ddl m}m}m} |  }tdD ]}t|d}||}||}| || q| t	|d | t
||d  | t
|d | t
|d | t
|d	 d
S )zshrink_des_key()r   )r   r   INT_64_MASK      r   r   s	            r             N)r   r   r   r$   	getRandomranger   r   r   r   r   )	r   r   r   r$   rngir   r   r    r!   r!   r"   test_02_shrinkS   s   
zDesTest.test_02_shrinkc                 C   s4   ddl m}m}m} |  }||@ |d||@ B S )zrandomize parity bitsr   )r   _KPARITY_MASKr$   )r   r   r-   r$   r(   randint)r   keyr   r-   r$   r*   r!   r!   r"   _random_parityk   s   zDesTest._random_parityc              
   C   sT  ddl m}m}m}m} | jD ]W\}}}||}||}||}|||}| ||d||f  ||}	||	|}| ||d||	|f  tdD ]}
|| ||}|||}| ||d|||f  qIqd}| 	t
|d| | 	t|d| | 	t
||d | 	t||d	 | j	t|||d
d | j	t|||dd | j	t|||ddd dS )zdes_encrypt_block()r   )des_encrypt_blockr   _pack64	_unpack64key=%r plaintext=%r:z#key=%r shrink(key)=%r plaintext=%r:r%   &key=%r rndparity(key)=%r plaintext=%r:r   r   r'   r   salt   roundsN)r   r1   r   r2   r3   r   r   r)   r0   r   r   r   )r   r1   r   r2   r3   r/   	plaintextcorrectresultr   r   r    stubr!   r!   r"   test_03_encrypt_bytesq   s:   





zDesTest.test_03_encrypt_bytesc              
   C   s   ddl m} | jD ]2\}}}|||}| ||d||f  tdD ]}| |}|||}| ||d|||f  q"q	| t|dd | t|dd | t|dd | t|dd | jt|dddd | jt|ddd	d | jt|ddddd
 dS )zdes_encrypt_int_block()r   )des_encrypt_int_blockr4   r%   r5       r   r6   r8   r9   N)	r   r@   r   r   r)   r0   r   r   r   )r   r@   r/   r;   r<   r=   r   r    r!   r!   r"   test_04_encrypt_ints   s(   




zDesTest.test_04_encrypt_intsN)
__name__
__module____qualname__descriptionPrefixr   r#   r,   r0   r?   rB   r!   r!   r!   r"   r      s    &.r   N)__doc__
__future__r   r   	functoolsr   passlib.utilsr   passlib.tests.utilsr   r   r!   r!   r!   r"   <module>   s    