a
    ¼3jß  ã                
   @   sÌ   d dl Z d dlZzd dlZdZW nH eyh Z z0e jdkrHe eeƒ¡‚dZeeƒZW Y dZ[n
dZ[0 0 e 	e jdkd¡e 
ed¡G dd„ dejƒƒƒZe 	ed¡G dd	„ d	ejƒƒZed
krÈe ¡  dS )é    NÚwin32zThis should only run on windowszimport succeededc                   @   s   e Zd Zdd„ ZdS )ÚTestWhyCryptDidNotImportc                 C   s   |   dt¡ d S )Nznot supported)ÚassertInÚIMPORT_ERROR©Úself© r   úK/www/server/python_manager/versions/3.9.10/lib/python3.9/test/test_crypt.pyÚtest_import_failure_message   s    z4TestWhyCryptDidNotImport.test_import_failure_messageN)Ú__name__Ú
__module__Ú__qualname__r
   r   r   r   r	   r      s   r   zcrypt module is requiredc                   @   s€   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Ze e	oFe	j
e	jv pFe	je	jv d	¡d
d„ ƒZe e	ofe	je	jv d¡dd„ ƒZdd„ ZdS )ÚCryptTestCasec                 C   sR   t   d¡}t   d|¡}|  ||¡ t   dd¡}|d urNt   d|¡}|  ||¡ d S )NÚ
mypasswordÚab)ÚcryptÚassertEqual)r   ÚcrÚcr2r   r   r	   Ú
test_crypt   s    
zCryptTestCase.test_cryptc                 C   sl   |   ttjƒd¡ tjD ]N}t |¡}|  t|ƒ|j h d£¡ |jr|  |j|d t|ƒ|j … ¡ qd S )Né@   >   r   é   é   é   é   é   )	r   Úlenr   Z
_saltcharsÚmethodsÚmksaltr   Ú
salt_charsÚident)r   ÚmethodÚsaltr   r   r	   Ú	test_salt#   s    

zCryptTestCase.test_saltc                 C   sj   t jD ]^}t   d|¡}|  t|ƒ|j¡ t   d|¡}|  ||¡ t   dt  |¡¡}|  t|ƒ|j¡ qd S )NZassword)r   r   r   r   Z
total_sizer   )r   r!   r   r   r   r   r	   Útest_saltedcrypt+   s    
zCryptTestCase.test_saltedcryptc                 C   sL   |   ttjƒdk¡ tj d¡r4|  tjtjg¡ n|  tjd tj	¡ d S )Nr   Zopenbsdéÿÿÿÿ)
Ú
assertTruer   r   r   ÚsysÚplatformÚ
startswithr   ÚMETHOD_BLOWFISHÚMETHOD_CRYPTr   r   r   r	   Útest_methods4   s    zCryptTestCase.test_methodszrequires support of SHA-2c              	   C   sŽ   t jt jfD ]|}dD ]r}t j||d}|  d| |¡ |  t|ƒ|j dtt|ƒƒ ¡ t   d|¡}|  	|¡ t   d|¡}|  ||¡ qqd S )N)éè  i'  i † ©Úroundsz$rounds=%d$é   r   )
r   ÚMETHOD_SHA256ÚMETHOD_SHA512r   r   r   r   r   Ústrr&   )r   r!   r/   r"   r   r   r   r   r	   Útest_sha2_rounds;   s    ÿ
zCryptTestCase.test_sha2_roundszrequires support of Blowfishc                 C   s‚   t ddƒD ]r}tjtjd|> d}|  d| |¡ |  t|ƒtjj ddh¡ t d|¡}|  |¡ t d|¡}|  ||¡ q
d S )	Nr   r0   r   r.   z$%02d$r   r   r   )	Úranger   r   r*   r   r   r   r&   r   )r   Z
log_roundsr"   r   r   r   r   r	   Útest_blowfish_roundsN   s    
z"CryptTestCase.test_blowfish_roundsc              
   C   sd  t jt jt jfD ]Â}|  t¡ t j|dd W d   ƒ n1 sB0    Y  |  t¡ t j|dd W d   ƒ n1 sz0    Y  ddddd> fD ]<}|  t¡ t j||d W d   ƒ q”1 sÆ0    Y  q”q|  t¡  t jt jdd W d   ƒ n1 s0    Y  t jt j	fD ]B}|  
td	¡ t j|d
d W d   ƒ n1 sR0    Y  qd S )NZ4096r.   g      °@r   r   r%   iç  r-   Úsupporti   )r   r1   r2   r*   ZassertRaisesÚ	TypeErrorr   Ú
ValueErrorr+   Z
METHOD_MD5ZassertRaisesRegex)r   r!   r/   r   r   r	   Útest_invalid_rounds[   s    ÿ,,00z!CryptTestCase.test_invalid_roundsN)r   r   r   r   r#   r$   r,   ÚunittestÚ
skipUnlessr   r1   r   r2   r4   r*   r6   r:   r   r   r   r	   r      s   		û
ÿ

r   Ú__main__)r'   r;   r   r   ÚImportErrorÚexr(   ZSkipTestr3   r<   ZskipIfZTestCaser   r   r   Úmainr   r   r   r	   Ú<module>   s    


T