
    daf                     ,   d dl Z d dlZd dlmZmZ 	  edd      r ej
                  d       ej                  d      ZdZ ej                  e j                  dk(  d       ej                  ed	       G d
 dej                                      Z ej                  ed       G d dej                               Zedk(  r ej&                          yy# e	$ r;Z
e j                  dk7  r ej
                   ee
            dZ ee
      ZY dZ
[
dZ
[
ww xY w)    N)check_sanitizerwarnings_helperT)addressmemoryz.The crypt module SEGFAULTs on ASAN/MSAN buildscryptwin32zThis should only run on windowszimport succeededc                       e Zd Zd Zy)TestWhyCryptDidNotImportc                 0    | j                  dt               y )Nznot supported)assertInIMPORT_ERRORselfs    */root/Python-3.12.4/Lib/test/test_crypt.pytest_import_failure_messagez4TestWhyCryptDidNotImport.test_import_failure_message   s    o|4    N)__name__
__module____qualname__r    r   r   r
   r
      s    5r   r
   zcrypt module is requiredc                   *   e Zd Zd Zd Zd Zd Z ej                  e	xr2 e	j                  e	j                  v xs e	j                  e	j                  v d      d        Z ej                  e	xr e	j                  e	j                  v d      d        Zd	 Zy
)CryptTestCasec                     t         j                  d      }t         j                  d|      }| j                  ||       t         j                  dd      }|)t         j                  d|      }| j                  ||       y y )N
mypasswordab)r   assertEqual)r   crcr2s      r   
test_cryptzCryptTestCase.test_crypt   sj    [[&kk,+b![[t,>++lB/CS"% r   c           	         | j                  t        t        j                        d       t        j                  D ]  }t        j                  |      }| j                  t        |      |j                  z
  h d       |j                  sO| j                  |j                  |d t        |      |j                  z
           y )N@   >   r                  )	r   lenr   
_saltcharsmethodsmksaltr   
salt_charsident)r   methodsalts      r   	test_saltzCryptTestCase.test_salt&   s    U--.3mm 	PF<<'DMM#d)f&7&779KL||fllD1M#d)F<M<M2M,NO		Pr   c                    t         j                  D ]  }t         j                  d|      }| j                  t        |      |j                         t         j                  d|      }| j                  ||       t         j                  dt         j                  |            }| j                  t        |      |j                          y )Nassword)r   r)   r   r'   
total_sizer*   )r   r-   r   r   s       r   test_saltedcryptzCryptTestCase.test_saltedcrypt.   s    mm 	9FY/BSWf&7&78++i,CS"%YV(<=BSWf&7&78	9r   c                 Z   | j                  t        t        j                        dk\         t        j
                  j                  d      r0| j                  t        j                  t        j                  g       y | j                  t        j                  d   t        j                         y )Nr"   openbsd)

assertTruer'   r   r)   sysplatform
startswithr   METHOD_BLOWFISHMETHOD_CRYPTr   s    r   test_methodszCryptTestCase.test_methods7   sj    EMM*a/0<<""9-U]]U-B-B,CDU]]2.0B0BCr   zrequires support of SHA-2c                    t         j                  t         j                  fD ]  }dD ]  }t         j                  ||      }| j	                  d|z  |       | j                  t        |      |j                  z
  dt        t        |            z          t         j                  d|      }| j                  |       t         j                  d|      }| j                  ||         y )N)  i'  i roundsz$rounds=%d$   r   )
r   METHOD_SHA256METHOD_SHA512r*   r   r   r'   r+   strr7   )r   r-   rA   r.   r   r   s         r   test_sha2_roundszCryptTestCase.test_sha2_rounds>   s     **E,?,?@ 		*F/ *||F6|:mf4d;  TV->->!>!#c#f+&6!68[[t4#kk,3  b)*		*r   zrequires support of Blowfishc                    t        dd      D ]  }t        j                  t        j                  d|z        }| j	                  d|z  |       | j	                  t        |      t        j                  j                  z
  ddh       t        j                  d|      }| j                  |       t        j                  d|      }| j                  ||        y )	Nr$   rB   r"   r@   z$%02d$r%   r&   r   )	ranger   r*   r;   r   r'   r+   r7   r   )r   
log_roundsr.   r   r   s        r   test_blowfish_roundsz"CryptTestCase.test_blowfish_roundsQ   s      2, 	&J<< 5 5a:o<NDMM(Z/6MM#d)e&;&;&F&FFAO\40BOOB++lB/CS"%	&r   c                 |   t         j                  t         j                  t         j                  fD ]  }| j	                  t
              5  t         j                  |d       d d d        | j	                  t
              5  t         j                  |d       d d d        dddddz  fD ]7  }| j	                  t              5  t         j                  ||       d d d        9  | j	                  t              5  t         j                  t         j                  d       d d d        t         j                  t         j                  fD ]8  }| j                  t        d	      5  t         j                  |d
       d d d        : y # 1 sw Y   #xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   vxY w)N4096r@   g      @r   r"   r6   i  r?   supporti   )r   rC   rD   r;   assertRaises	TypeErrorr*   
ValueErrorr<   
METHOD_MD5assertRaisesRegex)r   r-   rA   s      r   test_invalid_roundsz!CryptTestCase.test_invalid_rounds^   s|   **E,?,?,,. 	8F""9- 4VF34""9- 4VF34aQV, 8&&z2 8LLL78 88	8 z* 	=LL..tL<	=))5+;+;< 	2F''
I> 2VD12 2	24 44 48 8	= 	=2 2s<   F=F>F7&F&F2F	F	F#&F/2F;	N)r   r   r   r   r/   r3   r=   unittest
skipUnlessr   rC   r)   rD   rF   r;   rJ   rS   r   r   r   r   r      s    &P9D X 	
5==0XE4G4G5==4X#
*
* X8%''5==8:X&&2r   r   __main__)r8   rT   test.supportr   r   SkipTestimport_deprecatedr   r   ImportErrorexr9   rE   rU   skipIfTestCaser
   r   r   mainr   r   r   <module>r_      s,   
  9	tD1h PQQ-O--g6EL S\\W,.OP*+5x00 5 , Q5 U67Q2H%% Q2 8Q2h zHMMO I  
||whB((Er7L	s   0C D1DD