
     h"                     R    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e	      Z
y)	z1passlib.tests -- unittests for passlib.crypto.des    )with_statementdivision)partial)getrandbytes)TestCasec                   6    e Zd ZdZg dZd Zd Zd Zd Zd Z	y)	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                 |   ddl m}m}m}m} | j
                  D ]+  \  }}} ||      } ||      }| j                  |||z         - | j                  t        |d       | j                  t        ||dz          | j                  t        |d       | j                  t        |d       | j                  t        |d       y)	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key3s	            _/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/passlib/tests/test_crypto_des.pytest_01_expandzDesTest.test_01_expand;   s    	F 	F
 // 	7JD!Q!$'D!$'DT4+#56		7 	)^S9 	*nk!mD*ni@ 	*nb9*ni@    c                    ddl m}m}m} | j	                         }t        d      D ]0  }t        |d      } ||      } ||      }| j                  ||       2 | j                  t        |d       | j                  t        ||dz          | j                  t        |d       | j                  t        |d       | j                  t        |d	       y
)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#   s	            r$   test_02_shrinkzDesTest.test_02_shrinkS   s    RRnn r 	)AQ'D!$'D!$'DT4(		) 	)^S9 	*nk!mD*ni@ 	*nb9*ni@r&   c                 l    ddl m}m}m} | j	                         }||z  |j                  d|      |z  z  S )zrandomize parity bitsr   )r   _KPARITY_MASKr(   )r   r   r2   r(   r,   randint)r   keyr   r2   r(   r.   s         r$   _random_parityzDesTest._random_parityk   s4    NNnnk!ckk!K&@=&PQQr&   c                     ddl m}m}m}m} | j
                  D ]  \  }}} ||      } ||      } ||      } |||      }| j                  ||d|d|d        ||      }	 ||	|      }| j                  ||d|d|	d|d       t        d      D ]E  }
 || j                   ||                  } |||      }| j                  ||d|d|d|d       G  d	}| j                  t        |d|       | j                  t        |d
|       | j                  t        ||d       | j                  t        ||d       | j                  t        |||d       | j                  t        |||d       | j                  t        |||dd       y)zdes_encrypt_block()r   )des_encrypt_blockr   _pack64	_unpack64key= plaintext=:z shrink(key)=r)    rndparity(key)=r   r   r+   r   salt   roundsN)r   r7   r   r8   r9   r   r   r-   r5   r   r   r   )r   r7   r   r8   r9   r4   	plaintextcorrectresultr"   r!   r#   stubs                r$   test_03_encrypt_byteszDesTest.test_03_encrypt_bytesq   s   	B 	B (,'<'< 	J#CG#,C	*Ig&G 'sI6FVW/2I/? @ "#&D&tY7FVW/2D)/E F 2Y Jt229S>BC*4;  36i3I JJ%	J2 )%64@*&7DI 	)%6a@*&7yI 	*&7t"M*&7t%P 	*&7tQqQr&   c                 l   ddl m} | j                  D ]p  \  }}} |||      }| j                  ||d|d|d       t	        d      D ]9  }| j                  |      } |||      }| j                  ||d|d|d|d       ; r | j                  t        |dd       | j                  t        |d	d       | j                  t        |dd       | j                  t        |dd	       | j                  t        |ddd	
       | j                  t        |ddd
       | j                  t        |dddd       y)zdes_encrypt_int_block()r   )des_encrypt_int_blockr:   r;   r<   r)   r=       r   r>   r@   rA   N)	r   rI   r   r   r-   r5   r   r   r   )r   rI   r4   rC   rD   rE   r!   r#   s           r$   test_04_encrypt_intszDesTest.test_04_encrypt_ints   sM   < (,'<'< 	J#CG*3	:FVW/2I/? @ 2Y J**3/.tY?  36i3I JJ	J 	)%:GQG*&;RC 	)%:AwG*&;QC 	*&;QK*&;QN 	*&;Q1QOr&   N)
__name__
__module____qualname__descriptionPrefixr   r%   r0   r5   rG   rK    r&   r$   r	   r	      s0    ,$LA0A0R,R\Pr&   r	   N)__doc__
__future__r   r   	functoolsr   passlib.utilsr   passlib.tests.utilsr   r	   rP   r&   r$   <module>rV      s(    7 0  ' (
mPh mPr&   