
    g"                     R    S r SSKJrJr  SSKJr  SSKJr  SSKJ	r	   " S S\	5      r
g)	z1passlib.tests -- unittests for passlib.crypto.des    )with_statementdivision)partial)getrandbytes)TestCasec                   >    \ rS rSrSr/ SQrS rS rS rS r	S r
S	rg
)DesTest   z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                 |   SSK JnJnJnJn  U R
                   H+  u  n  nU" U5      nU" U5      nU R                  XU-  5        M-     U R                  [        US5        U R                  [        XS-   5        U R                  [        US5        U R                  [        US5        U R                  [        US5        g)	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	            V/home/matz/Project1/venv/lib/python3.13/site-packages/passlib/tests/test_crypto_des.pytest_01_expandDesTest.test_01_expand;   s    	F 	F
 //JD!Q!$'D!$'DT+#56	 0 	)^S9 	*n!mD*ni@ 	*nb9*ni@    c                    SSK JnJnJn  U R	                  5       n[        S5       H0  n[        US5      nU" U5      nU" U5      nU R                  X5        M2     U R                  [        US5        U R                  [        X#S-   5        U R                  [        US5        U R                  [        US5        U R                  [        US	5        g
)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_shrinkDesTest.test_02_shrinkS   s    RRnn rAQ'D!$'D!$'DT(	  	)^S9 	*n!mD*ni@ 	*nb9*ni@r(   c                 j    SSK JnJnJn  U R	                  5       nX-  UR                  SU5      U-  -  $ )zrandomize parity bitsr   )r   _KPARITY_MASKr*   )r   r   r5   r*   r.   randint)r    keyr   r5   r*   r0   s         r%   _random_parityDesTest._random_parityk   s2    NNnn!ckk!K&@=&PQQr(   c                    SSK JnJnJnJn  U R
                   H  u  pVnU" U5      nU" U5      nU" U5      nU" XV5      nU R                  XSU< SU< S35        U" U5      n	U" X5      nU R                  XSU< SU	< SU< S35        [        S5       HG  n
U" U R                  U" U5      5      5      nU" X5      nU R                  XSU< SU< SU< S35        MI     M     S	nU R                  [        USU5        U R                  [        US
U5        U R                  [        XS5        U R                  [        XS5        U R                  [        XUSS9  U R                  [        XUSS9  U R                  [        XUSSS9  g)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   r;   r   r<   r=   r   r   r/   r8   r   r   r   )r    r;   r   r<   r=   r7   	plaintextcorrectresultr#   r"   r$   stubs                r%   test_03_encrypt_bytesDesTest.test_03_encrypt_bytesq   s   	B 	B (,'<'<#CG#,C	*Ig&G 's6FVW/2I/? @ "#&D&t7FVW/2D)/E F 2Yt229S>BC*4;  36i3I J % (=2 )%64@*&7DI 	)%6a@*&7yI 	*&7t"M*&7t%P 	*&7tQqQr(   c                 b   SSK Jn  U R                   Hs  u  p#nU" X#5      nU R                  XTSU< SU< S35        [	        S5       H;  nU R                  U5      nU" Xs5      nU R                  XTSU< SU< SU< S35        M=     Mu     U R                  [        USS5        U R                  [        US	S5        U R                  [        USS5        U R                  [        USS	5        U R                  [        USSS	S
9  U R                  [        USSSS
9  U R                  [        USSSSS9  g)zdes_encrypt_int_block()r   )des_encrypt_int_blockr>   r?   r@   r+   rA       r   rB   rD   rE   N)	r   rN   r   r   r/   r8   r   r   r   )r    rN   r7   rG   rH   rI   r"   r$   s           r%   test_04_encrypt_intsDesTest.test_04_encrypt_ints   s9   < (,'<'<#CG*3:FVW/2I/? @ 2Y**3/.t?  36i3I J  (= 	)%:GQG*&;RC 	)%:AwG*&;QC 	*&;QK*&;QN 	*&;Q1QOr(    N)__name__
__module____qualname____firstlineno__descriptionPrefixr   r&   r2   r8   rK   rP   __static_attributes__rR   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	   rR   r(   r%   <module>r^      s(    7 0  ' (
mPh mPr(   