o
    °ó®gÓ®  ã                   @   sÔ  d dl Z d dlmZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlmZ d dlmZmZ d dlmZ d dlmZ d dlmZ d dlmZ eed	ƒZh d
£Ze d¡Zedu rieZndd„ e d¡ ¡  d¡D ƒZeddgdZeekr‹eddgdZ ndZ zd dl!m"Z"m#Z#m$Z$ W n e%y©   dZ"dZ#e&ƒ Z$Y nw zd dl'Z'W n e%y»   dZ'Y nw e
 (e'd¡Z)dd„ Z*dZ+dd„ Z,G dd„ de
j-ƒZ.G dd„ de
j-ƒZ/e0dkrèe
 1¡  dS dS ) é    N)Ú	unhexlify)Úsupport)Ú_4GÚ
bigmemtest)Úimport_fresh_module)Úthreading_helper)Úwarnings_helper)ÚHTTPExceptionZgettotalrefcount>   Úsha256Zblake2Zsha3Úsha512Úmd5Úsha1ZPY_BUILTIN_HASHLIB_HASHESc                 C   s   h | ]}|  ¡ ’qS © )Ústrip)Ú.0Úmr   r   úG/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/test/test_hashlib.pyÚ	<setcomp>%   s    ÿr   ú"ú,ÚhashlibÚ_hashlib)Zfresh)Zblocked)ÚHASHÚHASHXOFÚopenssl_md_meth_nameszrequires _blake2c                 C   s6   d}d}| D ]}|||d? d@  ||d@   7 }q|S )NZ0123456789abcdefÚ é   é   r   )ÚsÚhÚrÚir   r   r   ÚhexstrA   s
   "r"   z(http://www.pythontest.net/hashlib/{}.txtc              	   c   s°    t  | ¡}z	tj|dd}W n ttfy    t d |¡¡‚w |+ |D ]}| ¡ }| 	d¡s3|s4q&| 
d¡}t |d ¡|d< |V  q&W d   ƒ d S 1 sQw   Y  d S )Nzutf-8)ÚencodingzCould not retrieve {}ú#r   r   )ÚURLÚformatr   Zopen_urlresourceÚOSErrorr	   ÚunittestZSkipTestr   Ú
startswithÚsplitÚbytesÚfromhex)Ú	hash_nameÚurlZtestdataÚlineÚpartsr   r   r   Úread_vectorsL   s"   €
ÿ
ú"ÿr1   c                       sj  e Zd ZdZddhZejdkpeZdd„ Z	‡ fdd„Z
ed	d
„ ƒZedd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd±d&d'„Zd(d)„ Zd*d+„ Zed,d-„ ƒZd.d/„ Z	0	1d²d2d3„Z d4d5„ Z!d6d7„ Z"d8d9„ Z#d:d;„ Z$ed<d=„ ƒZ%d>d?„ Z&d@dA„ Z'dBdC„ Z(e) *e+j,e-dD k dE¡e.e-dD dFd%dGdHdI„ ƒƒZ/e) *e+j,e-dF k dE¡e.e-dF dFd%dGdJdK„ ƒƒZ0dLdM„ Z1dNdO„ Z2dPdQ„ Z3dRdS„ Z4dTdU„ Z5dVdW„ Z6dXdY„ Z7dZd[„ Z8d\d]„ Z9d^d_„ Z:d`da„ Z;dbdc„ Z<ddde„ Z=dfdg„ Z>dhdi„ Z?djdk„ Z@dldm„ ZAdndo„ ZBdpdq„ ZCdrds„ ZDdtdu„ ZEdvdw„ ZFedxdy„ ƒZGedzd{„ ƒZHed|d}„ ƒZIed~d„ ƒZJed€d„ ƒZKed‚dƒ„ ƒZLed„d…„ ƒZMed†d‡„ ƒZNedˆd‰„ ƒZOedŠd‹„ ƒZPdŒd„ ZQdŽd„ ZRdd‘„ ZSd’d“„ ZTd”d•„ ZUd–d—„ ZVd˜d™„ ZWdšd›„ ZXdœd„ ZYdždŸ„ ZZd d¡„ Z[d¢d£„ Z\d¤d¥„ Z]e^j_d¦d§„ ƒZ`d¨d©„ Zaebjcdªd«„ ƒZde) eefd1ud¬¡d­d®„ ƒZgd¯d°„ Zh‡  ZiS )³ÚHashLibTestCase)r   ÚMD5r   ZSHA1Úsha224ZSHA224r
   ÚSHA256Úsha384ZSHA384r   ZSHA512Úblake2bÚblake2sÚsha3_224Úsha3_256Úsha3_384Úsha3_512Ú	shake_128Ú	shake_256r=   r>   Úposixc              
   C   sl   zt  |¡W S  ty5 } z#| jr#|tv r*t d| ¡ W Y d}~dS W Y d}~dS W Y d}~dS d}~ww )z@Import a module and return a reference to it or None on failure.z%Did a C extension fail to compile? %sN)Ú	importlibÚimport_moduleÚModuleNotFoundErrorÚ_warn_on_extension_importÚbuiltin_hashesÚwarningsÚwarn)ÚselfÚmodule_nameÚerrorr   r   r   Ú_conditional_import_modulei   s   
þ
þ€ýz*HashLibTestCase._conditional_import_modulec              	      sø  t ƒ }ˆ jD ]	}| | ¡ ¡ qˆ  d¡}|r| ddh¡ i ˆ _|D ]}t ƒ ˆ j|< q#ˆ j ¡ D ]\}}| tt	|ƒ¡ d |fdd„}| |¡ q1ˆ  d¡}|ˆ _
|rŒˆ  t|dƒ¡ ˆ  t|dƒ¡ ˆ j ¡ D ]"\}}t|d	| d ƒ}	|	r‹z|	ƒ  W n	 ty…   Y qiw | |	¡ qi‡ fd
d„}
ˆ  d¡}|r|
dƒ ˆ  d¡}|r¨|
dƒ ˆ  d¡}|r·|
dƒ |
dƒ ˆ  d¡}|rÆ|
dƒ |
dƒ |rÐ|
dƒ |
dƒ ˆ  d¡}|rï|
dƒ |
dƒ |
dƒ |
dƒ |
dƒ |
dƒ ttˆ ƒj|i |¤Ž d S )NÚ_blake2r7   r8   c                 [   s.   | d u rt j|fi |¤ŽS t j|| fi |¤ŽS ©N)r   Únew)ÚdataZ_algÚkwargsr   r   r   Ú_test_algorithm_via_hashlib_newƒ   s   zAHashLibTestCase.__init__.<locals>._test_algorithm_via_hashlib_newr   Úopenssl_md5Zopenssl_sha1Zopenssl_c                    s"   t tdƒ| ƒ}ˆ j|   |¡ d S )NÚ__get_builtin_constructor)Úgetattrr   Úconstructors_to_testÚadd)ÚnameÚconstructor©rG   r   r   Úadd_builtin_constructor›   s   z9HashLibTestCase.__init__.<locals>.add_builtin_constructorÚ_md5r   Ú_sha1r   Ú_sha256r4   r
   Ú_sha512r6   r   Ú_sha3r9   r:   r;   r<   r=   r>   )ÚsetÚsupported_hash_namesrU   ÚlowerrJ   ÚupdaterT   ÚitemsrS   r   r   Ú
assertTrueÚhasattrÚ
ValueErrorÚsuperr2   Ú__init__)rG   ÚargsrO   Z
algorithmsÚ	algorithmrK   ÚconstructorsrP   r   rW   rY   rZ   r[   r\   r]   r^   ©Ú	__class__rX   r   rh   r   sn   



þ
€




zHashLibTestCase.__init__c                 C   s   | j  ¡ }tj |¡S rL   )rT   ÚvaluesÚ	itertoolsÚchainÚfrom_iterable)rG   rk   r   r   r   Úhash_constructors¼   s   
z!HashLibTestCase.hash_constructorsc                 C   s   t | jdƒr| j ¡ S d S )NÚget_fips_mode)re   r   rs   rX   r   r   r   Úis_fips_modeÁ   s   
zHashLibTestCase.is_fips_modec                 C   sL   t   dtdƒ¡}| jD ]}||dd}|j| jv r| d¡ q| ¡  qd S )NÚbé
   F©Zusedforsecurityé   )ÚarrayÚrangerr   rV   ÚshakesÚ	hexdigest)rG   ÚaÚconsÚcr   r   r   Útest_hash_arrayÈ   s   

ûzHashLibTestCase.test_hash_arrayc                 C   s"   |   tjtdd„ | jD ƒƒ¡ d S )Nc                 s   s    | ]	}|  ¡ r|V  qd S rL   )Úislower)r   Z_algor   r   r   Ú	<genexpr>Ó   s   € ÿz=HashLibTestCase.test_algorithms_guaranteed.<locals>.<genexpr>)ÚassertEqualr   Úalgorithms_guaranteedr_   r`   rX   r   r   r   Útest_algorithms_guaranteedÑ   s   ÿz*HashLibTestCase.test_algorithms_guaranteedc                 C   s   |   ttjƒ tj¡¡ d S rL   )rd   r_   r   r„   ÚissubsetÚalgorithms_availablerX   r   r   r   Útest_algorithms_availableÖ   s   ÿz)HashLibTestCase.test_algorithms_availablec                 C   sŠ   t jddd | jr|  d¡ | jD ]}|dd |ddd qt jddd t jdd | jd urC| jjddd | jjdd d S d S )Nr
   Trw   zskip in FIPS modeó    r   )r   rM   rt   ÚskipTestrr   r   r   rQ   ©rG   r~   r   r   r   Útest_usedforsecurity_trueÚ   s   



þz)HashLibTestCase.test_usedforsecurity_truec                 C   sz   t jddd | jD ]}|dd |ddd q
t jddd t jdd | jd ur;| jjddd | jjdd d S d S )Nr
   Frw   r‰   r   )r   rM   rr   r   r   rQ   r‹   r   r   r   Útest_usedforsecurity_falseç   s   


þz*HashLibTestCase.test_usedforsecurity_falsec                 C   s$   |   ttjd¡ |   ttjd¡ d S )Nzspam spam spam spam spamé   )ÚassertRaisesrf   r   rM   Ú	TypeErrorrX   r   r   r   Útest_unknown_hashò   s   z!HashLibTestCase.test_unknown_hashc                 C   s   |   t d¡jd¡ d S )Nr5   r
   )rƒ   r   rM   rV   rX   r   r   r   Útest_new_upper_to_lowerö   s   z'HashLibTestCase.test_new_upper_to_lowerc              	   C   sì   t tdƒ}t tdƒ}|  t|d¡ zdd l}W n ty%   |  d¡ Y nw d tjd< | 	¡  z|  t|d¡ W dt
ƒ v rC|tjd< ntjd= ndt
ƒ v rS|tjd< w tjd= w |  t|d¡ |dƒ}|  ||j¡ |  t|ƒd	dg¡ d S )
NrR   Z__builtin_constructor_cacheÚtestr   z_md5 module not availablerZ   r   é   r3   )rS   r   r   rf   rZ   ÚImportErrorrŠ   ÚsysÚmodulesÚclearÚlocalsr   ZassertIsr   rƒ   Úsorted)rG   Zget_builtin_constructorZbuiltin_constructor_cacherZ   rW   r   r   r   Útest_get_builtin_constructorù   s4   ÿÿÿ



ý
z,HashLibTestCase.test_get_builtin_constructorc                 C   s~   | j D ]9}|dd}|j| jv r(|  | d¡t¡ |  t| d¡ƒ| d¡¡ q|  | ¡ t¡ |  t| ¡ ƒ| ¡ ¡ qd S )NFrw   rx   )	rr   rV   r{   ÚassertIsInstanceÚdigestr+   rƒ   r"   r|   ©rG   r~   r   r   r   r   Útest_hexdigest  s   

ùzHashLibTestCase.test_hexdigestc                 C   s    d}| j D ]H}|dd}|j| jvrqtd urt|tƒrq|j|jfD ])}|  t|d¡ |D ]}|  tt	f¡ ||ƒ W d   ƒ q.1 sFw   Y  q.q#qd S )N)i    l   öÿ l   
    l            l   öÿÿÿ l   
        Frw   iöÿÿÿ)
rr   rV   r{   r   Ú
isinstancer   r|   r   rf   ÚOverflowError)rG   Zlarge_sizesr~   r   r   Úlengthr   r   r   Útest_digest_length_overflow  s    


ÿÿþùz+HashLibTestCase.test_digest_length_overflowc                 C   sr   | j D ]3}|dd}|  |jt¡ |j| jv r |  |j| j¡ n|  |j| j¡ |  |jtj	|jddj¡ qd S )NFrw   )
rr   rœ   rV   Ústrr`   ÚassertInÚassertNotInrƒ   r   rM   rž   r   r   r   Útest_name_attribute-  s   

þùz#HashLibTestCase.test_name_attributec                 C   s*  d}d}d}d}| j D ]‡}|dd}| |¡ | |¡ | |¡ | |¡ |j| jv r/d}nd}|dd}| || | | ¡ |  |j|Ž |j|Ž ¡ ||| | | dd}	|  |j|Ž |	j|Ž ¡ ||| | dd}
|
j|Ž }|
 ¡ }| |¡ |  |j|Ž |j|Ž ¡ |  |
j|Ž |¡ qd S )	Ns€   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas   bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbs~   ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccs   ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddFrw   )rx   r   )rr   rb   rV   r{   rƒ   r   Úcopy)rG   ZaasZbeesZceesZdeesr~   Zm1ri   Zm2Zm3Zm4Z	m4_digestZm4_copyr   r   r   Útest_large_update:  s2   








èz!HashLibTestCase.test_large_updateFc                 K   sÄ   t |ƒd }| ¡ }| j| }|  t |ƒd¡ |D ]F}||fi |¤Ž}	|s)|	 ¡ n|	 |¡}
|  |
|d|||
t |ƒ|f ¡ |sD|	 ¡ n|	 |¡}
t |¡}|  |
|¡ |s_|  t |ƒ|	j	¡ qd S )Né   zrHash algorithm %s constructed using %s returned hexdigest %r for %d byte input data that should have hashed to %r.)
Úlenra   rT   ZassertGreaterEqualr|   rƒ   r   r+   r,   Údigest_size)rG   rV   rN   r|   ÚshakerO   r¢   rk   Úhash_object_constructorr   Zcomputedr   r   r   r   ÚcheckZ  s,   

ÿþþ
€ózHashLibTestCase.checkc                 C   s&   | j | }|D ]	}|  t|d¡ qd S )NZspam)rT   r   r   )rG   Zalgorithm_namerk   r®   r   r   r   Úcheck_no_unicodeo  s   
ÿz HashLibTestCase.check_no_unicodec                 C   ó@   |   d¡ |   d¡ |   d¡ |   d¡ |   d¡ |   d¡ d S )Nr   r   r4   r
   r6   r   ©r°   rX   r   r   r   Útest_no_unicodeu  ó   




zHashLibTestCase.test_no_unicodec                 C   s   |   d¡ |   d¡ d S )Nr7   r8   r²   rX   r   r   r   Útest_no_unicode_blake2}  s   
z&HashLibTestCase.test_no_unicode_blake2c                 C   r±   )Nr9   r:   r;   r<   r=   r>   r²   rX   r   r   r   Útest_no_unicode_sha3‚  r´   z$HashLibTestCase.test_no_unicode_sha3r   Nc                 C   sÈ   | j | }|D ]Z}|dd}|  |j|¡ |  |j|¡ |r7|  t| |¡ƒ|¡ |  t| |¡ƒd| ¡ n|  t| ¡ ƒ|¡ |  t| ¡ ƒd| ¡ |  |j|¡ |  | 	d¡d t
|ƒ¡ qd S )NFrw   rª   Ú_r   )rT   rƒ   Ú
block_sizer¬   r«   r   r|   rV   r¥   r*   Úrepr)rG   rV   r¸   r¬   Zdigest_lengthrk   r®   r   r   r   r   Úcheck_blocksize_nameŠ  s"   

ÿÿòz$HashLibTestCase.check_blocksize_namec                 C   sX   |   ddd¡ |   ddd¡ |   ddd¡ |   ddd	¡ |   d
dd¡ |   ddd¡ d S )Nr   é@   rx   r   é   r4   é   r
   é    r6   é€   é0   r   ©rº   rX   r   r   r   Útest_blocksize_name  s   z#HashLibTestCase.test_blocksize_namec                 C   s\   |   ddd¡ |   ddd¡ |   ddd	¡ |   d
dd¡ |   dddd¡ |   dddd¡ d S )Nr9   é   r½   r:   éˆ   r¾   r;   éh   rÀ   r<   éH   r»   r=   é¨   r   r>   rÁ   rX   r   r   r   Útest_blocksize_name_sha3¥  s   z(HashLibTestCase.test_blocksize_name_sha3c                 C   sl   | j | }|D ],}|ƒ }td urt|tƒrq|  || d¡ |  |j|¡ |  |j|¡ |  |j|¡ qd S )Ni@  )rT   r   r    rƒ   Z_capacity_bitsZ
_rate_bitsZ_suffix)rG   rV   ZcapacityZrateÚsuffixrk   r®   r   r   r   r   Ú
check_sha3­  s   
øzHashLibTestCase.check_sha3c                 C   sd   |   dddd¡ |   dddd¡ |   dd	d
d¡ |   dddd¡ |   dddd¡ |   dddd¡ d S )Nr9   iÀ  i€  ó   r:   é   i@  r;   i   i@  r<   é   i@  r=   é   i@  ó   r>   )rÊ   rX   r   r   r   Útest_extra_sha3¹  s   zHashLibTestCase.test_extra_sha3c                 C   s    |   ddd¡ |   ddd¡ d S )Nr7   r¿   r»   r8   r¾   rÁ   rX   r   r   r   Útest_blocksize_name_blake2Á  s   z*HashLibTestCase.test_blocksize_name_blake2c                 C   ó   | j ddddd d S )Nr   r‰   Z d41d8cd98f00b204e9800998ecf8427eFrw   ©r¯   rX   r   r   r   Útest_case_md5_0Æ  ó   
þzHashLibTestCase.test_case_md5_0c                 C   rÒ   )Nr   ó   abcZ 900150983cd24fb0d6963f7d28e17f72Frw   rÓ   rX   r   r   r   Útest_case_md5_1Ì  rÕ   zHashLibTestCase.test_case_md5_1c                 C   rÒ   )Nr   s>   ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789Z d174ab98d277d9f5a5611c2c9f419d9fFrw   rÓ   rX   r   r   r   Útest_case_md5_2Ò  s   
üzHashLibTestCase.test_case_md5_2é   z!test cannot run on 32-bit systemsrŽ   )ÚsizeZmemuseÚdry_runc                 C   ó   |   dd| d¡ d S )Nr   ó   AZ c9af2dff37468ce5dfee8f2cfc0a9c6drÓ   ©rG   rÚ   r   r   r   Útest_case_md5_hugeÚ  ó   z"HashLibTestCase.test_case_md5_hugec                 C   rÜ   )Nr   rÝ   Z 28138d306ff1b8281f1a9067e1a1a2b3rÓ   rÞ   r   r   r   Útest_case_md5_uintmaxß  rà   z%HashLibTestCase.test_case_md5_uintmaxc                 C   ó   |   ddd¡ d S )Nr   r‰   Z(da39a3ee5e6b4b0d3255bfef95601890afd80709rÓ   rX   r   r   r   Útest_case_sha1_0è  ó   ÿz HashLibTestCase.test_case_sha1_0c                 C   râ   )Nr   rÖ   Z(a9993e364706816aba3e25717850c26c9cd0d89drÓ   rX   r   r   r   Útest_case_sha1_1ì  rä   z HashLibTestCase.test_case_sha1_1c                 C   râ   )Nr   ó8   abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopqZ(84983e441c3bd26ebaae4aa1f95129e5e54670f1rÓ   rX   r   r   r   Útest_case_sha1_2ð  ó   þz HashLibTestCase.test_case_sha1_2c                 C   ó   |   ddd d¡ d S )Nr   ó   aé@B Z(34aa973cd4c4daa4f61eeb2bdbad27316534016frÓ   rX   r   r   r   Útest_case_sha1_3õ  ó   ÿz HashLibTestCase.test_case_sha1_3c                 C   râ   )Nr4   r‰   Z8d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42frÓ   rX   r   r   r   Útest_case_sha224_0þ  rä   z"HashLibTestCase.test_case_sha224_0c                 C   râ   )Nr4   rÖ   Z823097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7rÓ   rX   r   r   r   Útest_case_sha224_1  rä   z"HashLibTestCase.test_case_sha224_1c                 C   râ   )Nr4   ræ   Z875388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525rÓ   rX   r   r   r   Útest_case_sha224_2  rè   z"HashLibTestCase.test_case_sha224_2c                 C   ré   )Nr4   rê   rë   Z820794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67rÓ   rX   r   r   r   Útest_case_sha224_3  rí   z"HashLibTestCase.test_case_sha224_3c                 C   râ   )Nr
   r‰   Z@e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855rÓ   rX   r   r   r   Útest_case_sha256_0  rä   z"HashLibTestCase.test_case_sha256_0c                 C   râ   )Nr
   rÖ   Z@ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015adrÓ   rX   r   r   r   Útest_case_sha256_1  rä   z"HashLibTestCase.test_case_sha256_1c                 C   râ   )Nr
   ræ   Z@248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1rÓ   rX   r   r   r   Útest_case_sha256_2  rè   z"HashLibTestCase.test_case_sha256_2c                 C   ré   )Nr
   rê   rë   Z@cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0rÓ   rX   r   r   r   Útest_case_sha256_3  rí   z"HashLibTestCase.test_case_sha256_3c                 C   râ   )Nr6   r‰   Z`38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95brÓ   rX   r   r   r   Útest_case_sha384_0"  rä   z"HashLibTestCase.test_case_sha384_0c                 C   râ   )Nr6   rÖ   Z`cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7rÓ   rX   r   r   r   Útest_case_sha384_1'  rä   z"HashLibTestCase.test_case_sha384_1c                 C   râ   )Nr6   óp   abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstuZ`09330c33f71147e83d192fc782cd1b4753111b173b3b05d22fa08086e3b0f712fcc7c71a557e2db966c3e9fa91746039rÓ   rX   r   r   r   Útest_case_sha384_2,  ó   ýz"HashLibTestCase.test_case_sha384_2c                 C   ré   )Nr6   rê   rë   Z`9d0e1809716474cb086e834e310a4a1ced149e9c00f248527972cec5704c2a5b07b8b3dc38ecc4ebae97ddd87f3d8985rÓ   rX   r   r   r   Útest_case_sha384_33  rí   z"HashLibTestCase.test_case_sha384_3c                 C   râ   )Nr   r‰   Z€cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3erÓ   rX   r   r   r   Útest_case_sha512_09  rä   z"HashLibTestCase.test_case_sha512_0c                 C   râ   )Nr   rÖ   Z€ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49frÓ   rX   r   r   r   Útest_case_sha512_1>  rä   z"HashLibTestCase.test_case_sha512_1c                 C   râ   )Nr   rø   Z€8e959b75dae313da8cf4f72814fc143f8f7779c6eb9f7fa17299aeadb6889018501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909rÓ   rX   r   r   r   Útest_case_sha512_2C  rú   z"HashLibTestCase.test_case_sha512_2c                 C   ré   )Nr   rê   rë   Z€e718483d0ce769644e2e42c7bc15b4638e1f98b13b2044285632a803afa973ebde0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09brÓ   rX   r   r   r   Útest_case_sha512_3J  rí   z"HashLibTestCase.test_case_sha512_3c                 C   s  |   |j|¡ t|d ƒD ]	}|d| d qd|d  }| jt||d |   |j|¡ t|d ƒD ]	}|d| d q2d|d  }	| jt||	d |   |j|¡ td|d ƒD ]}||d qX| jt|dd | jt|dd | jt||d d |   |j|¡ t|d ƒD ]	}|d| d q‡d|d  }
| jt||
d |   |ƒ  ¡ |d	d ¡ ¡ tdd
ƒD ]}||d q²| jt|dd | jt|d
d tdd
ƒD ]}||d qÏ| jt|dd | jt|dd | jt|d
d tdd
ƒD ]}||d qô| jt|dd | jt|d
d td|d ƒD ]}||d q| jt|dd | jt||d d |dd |dd | jt|dd | jt	|dd |dd ||d | jt|dd | jt	||d d | jt
|d	d | jt
|d	d |  t
|d¡ |d	d	d	d	dddd
ddddd d S )NrŽ   rê   ©Úsalt)Úperson©r¬   éÿÿÿÿr   ©Úkeyr‰   rÎ   )Úfanout)Údepth)Ú
node_depth)Ú
inner_size)Ú	leaf_sizeì   ÿÿ l        )Únode_offset)rN   )Ústringr   é   rÌ   é   T)r  r  r  r¬   r  r  r  r  r	  r
  Ú	last_node)rƒ   Z	SALT_SIZErz   r   rf   ZPERSON_SIZEZMAX_DIGEST_SIZEZMAX_KEY_SIZEr|   r¡   r   )rG   rW   Z	salt_sizeZperson_sizeZkey_sizer¬   Z
max_offsetr!   r  r  r  r   r   r   Úcheck_blake2O  s„   ÿ




ôzHashLibTestCase.check_blake2c                 C   sx   dd„ }|dd}|D ],}|D ]'}|||ƒ}|||ƒ}	|||d}
|  |
 ¡ ¡ |||	|d}|  | ¡ ¡ qq| ¡ S )Nc                 S   sT   d}d| |@ }d}t | ƒ}t| ƒD ]}|| |@ }||}}|d? d@ ||< q|S )Nr  l   ­KZ= rŽ   é   éÿ   )Ú	bytearrayrz   )r¢   ÚseedÚmaskr}   ru   Úoutr!   Útr   r   r   Úselftest_seqŸ  s   
z4HashLibTestCase.blake2_rfc7693.<locals>.selftest_seqr¾   r  )r  r¬   )rb   r   r|   )rG   rW   Zmd_lenZin_lenr  ZouterZoutlenZinlenZindatar  ZunkeyedZkeyedr   r   r   Úblake2_rfc7693ž  s   



úzHashLibTestCase.blake2_rfc7693c                 C   óB   |   tjddddd¡ g d¢}g d¢}|  |  tj||¡d¡ d S )Nrx   r»   l   ÿÿÿÿ )r¼   r¾   rÀ   r»   )r   r”   r¿   é   r  rÍ   Z@c23a7800d98123bd10f506c61e29da5603d763b8bbad2e737f5e765a7bccd475)r  r   r7   rƒ   r  )rG   Z
b2b_md_lenZ
b2b_in_lenr   r   r   Útest_blake2b´  ó   þzHashLibTestCase.test_blake2bc                 C   râ   )Nr7   r‰   Z€786a02f742015903c6c6fd852552d272912f4740e15847618a86e217f71f5419d25e1031afee585313896444934eb04b903a685b1448b755d56f701afe9be2cerÓ   rX   r   r   r   Útest_case_blake2b_0½  ó   ÿz#HashLibTestCase.test_case_blake2b_0c                 C   râ   )Nr7   rÖ   Z€ba80a53f981c4d0d6a2797b69f12f6e94c212f14685ac4b74b12bb6fdbffa2d17d87c5392aab792dc252d5de4533cc9518d38aa8dbf1925ab92386edd4009923rÓ   rX   r   r   r   Útest_case_blake2b_1Ã  r!  z#HashLibTestCase.test_case_blake2b_1c                 C   ó*   | j ddddddddd	d
ddddd d S )Nr7   ó   fooZ 920568b0c5873b2f0ab67bedb6cf1b2brx   ó   baró   bazó   bingrª   r”   r   rÙ   é   r  T©r¬   r  r  r  r  r  r  r  r	  r
  r  rÓ   rX   r   r   r   Ú test_case_blake2b_all_parametersÉ  ó   
ôz0HashLibTestCase.test_case_blake2b_all_parametersc                 C   ó4   t dƒD ]\}}}t |¡}| jd|||d qd S )Nr7   r  ©r1   r+   r,   r¯   ©rG   Úmsgr  Úmdr   r   r   Útest_blake2b_vectorsÛ  ó   
þz$HashLibTestCase.test_blake2b_vectorsc                 C   r  )Né   r¾   l   ÿÿÿ )rx   r¼   r½   r¾   )r   r”   r»   éA   r  rÍ   Z@6a411f08ce25adcdfb02aba641451cec53c598b24f4fc787fbdc88797f4c1dfe)r  r   r8   rƒ   r  )rG   Z
b2s_md_lenZ
b2s_in_lenr   r   r   Útest_blake2sá  r  zHashLibTestCase.test_blake2sc                 C   râ   )Nr8   r‰   Z@69217a3079908094e11121d042354a7c1f55b6482ca1a51e1b250dfd1ed0eef9rÓ   rX   r   r   r   Útest_case_blake2s_0ê  r!  z#HashLibTestCase.test_case_blake2s_0c                 C   râ   )Nr8   rÖ   Z@508c5e8c327c14e2e1a72ba34eeb452f37458b209ed63a294d999b4c86675982rÓ   rX   r   r   r   Útest_case_blake2s_1ï  r!  z#HashLibTestCase.test_case_blake2s_1c                 C   r#  )Nr8   r$  Z bf2a8f7fe3c555012a6f8046e646bc75rx   r%  r&  r'  rª   r”   r   rÙ   r(  r  Tr)  rÓ   rX   r   r   r   Ú test_case_blake2s_all_parametersô  r+  z0HashLibTestCase.test_case_blake2s_all_parametersc                 C   r,  )Nr8   r  r-  r.  r   r   r   Útest_blake2s_vectors  r2  z$HashLibTestCase.test_blake2s_vectorsc                 C   râ   )Nr9   r‰   Z86b4e03423667dbb73b6e15454f0eb1abd4597f9a1b078e3f5b5a6bc7rÓ   rX   r   r   r   Útest_case_sha3_224_0  rä   z$HashLibTestCase.test_case_sha3_224_0c                 C   ó$   t dƒD ]\}}|  d||¡ qd S )Nr9   ©r1   r¯   ©rG   r/  r0  r   r   r   Útest_case_sha3_224_vector  ó   ÿz)HashLibTestCase.test_case_sha3_224_vectorc                 C   râ   )Nr:   r‰   Z@a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434arÓ   rX   r   r   r   Útest_case_sha3_256_0  rä   z$HashLibTestCase.test_case_sha3_256_0c                 C   r;  )Nr:   r<  r=  r   r   r   Útest_case_sha3_256_vector  r?  z)HashLibTestCase.test_case_sha3_256_vectorc                 C   râ   )Nr;   r‰   Z`0c63a75b845e4f7d01107d852e4c2485c51a50aaaa94fc61995e71bbee983a2ac3713831264adb47fb6bd1e058d5f004rÓ   rX   r   r   r   Útest_case_sha3_384_0  rä   z$HashLibTestCase.test_case_sha3_384_0c                 C   r;  )Nr;   r<  r=  r   r   r   Útest_case_sha3_384_vector!  r?  z)HashLibTestCase.test_case_sha3_384_vectorc                 C   râ   )Nr<   r‰   Z€a69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26rÓ   rX   r   r   r   Útest_case_sha3_512_0%  rä   z$HashLibTestCase.test_case_sha3_512_0c                 C   r;  )Nr<   r<  r=  r   r   r   Útest_case_sha3_512_vector*  r?  z)HashLibTestCase.test_case_sha3_512_vectorc                 C   ó$   |   dddd¡ |   dddd¡ d S )Nr=   r‰   Z@7f9c2ba4e88f827d616045507605853ed73b8093f6efbc88eb1a6eacfa66ef26TZ7f9crÓ   rX   r   r   r   Útest_case_shake_128_0.  ó
   þz%HashLibTestCase.test_case_shake_128_0c                 C   ó&   t dƒD ]\}}|  d||d¡ qd S )Nr=   Tr<  r=  r   r   r   Útest_case_shake128_vector4  ó   ÿz)HashLibTestCase.test_case_shake128_vectorc                 C   rF  )Nr>   r‰   Z@46b9dd2b0ba88d13233b3feb743eeb243fcd52ea62b81b82b50c27646ed5762fTZ46b9rÓ   rX   r   r   r   Útest_case_shake_256_08  rH  z%HashLibTestCase.test_case_shake_256_0c                 C   rI  )Nr>   Tr<  r=  r   r   r   Útest_case_shake256_vector>  rK  z)HashLibTestCase.test_case_shake256_vectorc                 C   sº   d}| j D ]%}|dd}| d¡ | d| ¡ | d¡ |d| dd}| d¡ qt ¡ }| d¡ | d| ¡ | d¡ |  | ¡ d¡ t dd|  d ¡}|  | ¡ d¡ d S )Ni   Frw   ó   1ó   #ó   xZ@1cfceca95989f51f658e3f3ffe7f1cd43726c9e088c13ee10b46f57cef135b94)rr   rb   r   r
   rƒ   r|   )rG   Zgil_minsizer~   r   r   r   r   Útest_gilB  s*   





þþzHashLibTestCase.test_gilc           	         sÌ   t  ¡ ‰d}d}|d ‰ t  ˆ | ¡ ¡ }‡ ‡fdd„}g }t|ƒD ]'}tˆ ƒd|  }|  |d¡ |  |t|ƒ d¡ tj||fd}| 	|¡ q"|D ]}| 
¡  qL|D ]}| ¡  qU|  |ˆ ¡ ¡ d S )	NrÙ   s   swineflui@ c                    sB   d}|t ˆ ƒk rˆ ˆ |||  … ¡ || 7 }|t ˆ ƒk sd S d S )Nr   )r«   rb   )Ú
chunk_sizeÚindex©rN   Zhasherr   r   Úhash_in_chunksm  s
   þz=HashLibTestCase.test_threaded_hashing.<locals>.hash_in_chunksrv   r   )Útargetri   )r   r   r|   rz   r«   ZassertGreaterrƒ   Ú	threadingÚThreadÚappendÚstartÚjoin)	rG   Znum_threadsZsmallest_dataZexpected_hashrU  ÚthreadsZ	threadnumrR  Úthreadr   rT  r   Útest_threaded_hashing_  s(   ÿ

z%HashLibTestCase.test_threaded_hashingc                 C   s"   | j }|d ur|  |t¡ d S d S rL   )rt   rœ   Úint)rG   Z	fips_moder   r   r   Útest_get_fips_modeƒ  s   ÿz"HashLibTestCase.test_get_fips_modec              
   C   sˆ   | j  ¡ D ]<\}}| d¡rq|D ]/}z|ƒ }W n	 ty!   Y qw | j|d t | t|ƒ¡ W d   ƒ q1 s;w   Y  qqd S )N)Zsha3_r­   Zblake)rW   )rT   rc   r)   rf   ÚsubTestr   Úcheck_disallow_instantiationÚtype)rG   rj   rk   rW   r   r   r   r   Útest_disallow_instantiationˆ  s   

ÿÿúûz+HashLibTestCase.test_disallow_instantiationzneed _hashlibc                 C   s   t  | t¡ t  | t¡ d S rL   )r   rb  r   r   rX   r   r   r   Ú test_hash_disallow_instantiation˜  s   z0HashLibTestCase.test_hash_disallow_instantiationc                 C   s¢   | j  ¡ D ]I\}}|D ]B}zt|ƒ ƒ}W n	 ty   Y qw | j|d! |  td¡ d|_W d   ƒ n1 s9w   Y  W d   ƒ q1 sHw   Y  qqd S )N)Ú	hash_typezimmutable typeF)rT   rc   rc  rf   ra  ÚassertRaisesRegexr   Úvalue)rG   rj   rk   rW   rf  r   r   r   Útest_readonly_typesž  s   ÿÿ€ÿúþz#HashLibTestCase.test_readonly_types)F)r   r   N)jÚ__name__Ú
__module__Ú__qualname__r`   r{   ÚosrV   ÚCOMPILED_WITH_PYDEBUGrC   rJ   rh   Úpropertyrr   rt   r€   r…   rˆ   rŒ   r   r‘   r’   r›   rŸ   r£   r§   r©   r¯   r°   r³   Úrequires_blake2rµ   r¶   rº   rÂ   rÈ   rÊ   rÐ   rÑ   rÔ   r×   rØ   r(   ÚskipIfr–   Úmaxsizer   r   rß   rá   rã   rå   rç   rì   rî   rï   rð   rñ   rò   ró   rô   rõ   rö   r÷   rù   rû   rü   rý   rþ   rÿ   r  r  r  r   r"  r*  r1  r5  r6  r7  r8  r9  r:  r>  r@  rA  rB  rC  rD  rE  rG  rJ  rL  rM  rQ  r   Zreap_threadsr^  r`  r   Zcpython_onlyrd  Ú
skipUnlessr   re  ri  Ú__classcell__r   r   rl   r   r2   \   sÚ    	J

	

 

ÿ
	O










#

r2   c                	   @   sj  e Zd Zg d¢Zdddddedƒfdddd	ded
ƒfdddd	dedƒfgZe d¡dfe d¡dfe d¡dfe d¡dfe d¡dfge d¡dfe d¡dfe d¡dfe d¡dfe d¡dfge d¡dfe d¡dfe d¡dfe d¡d fe d!¡dfgd"œZd#d$„ Z	e
 edu d%¡d&d'„ ƒZe
 eed(ƒd)¡d*d+„ ƒZe
 eed,ƒd-¡d.d/„ ƒZd0d1„ ZdS )2ÚKDFTests))ó   passwordó   saltrŽ   N)rv  rw  rª   N)rv  rw  é   N)s   passwordPASSWORDpasswords$   saltSALTsaltSALTsaltSALTsaltSALTsaltrx  r  )s	   pass words   sa ltrx  rx   r‰   rx   rŽ   Z€77d6576238657b203b19ca42c18a0497f16b4844e3074ae8dfdffa3fede21442fcd0069ded0948f8326a753a0fc81f17e8d3e0fb2e0d3628cf35e20c38d18906rv  s   NaClrÍ   r3  Z€fdbabe1c9d3472007856e7190d01e9fe7c6ad7cbc8237830e77376634b3731622eaf30d92e22a3886ff109279d9830dac727afb94a83ee6d8360cbdfa2cc0640s   pleaseletmeins   SodiumChloridei @  Z€7023bdcb3afd7348461c06cd81fd38ebfda8fbba904f8e3ea9b543f6545da1f2d5432955613f0fcf62d49705242a9af9e61e85dc0d651e40dfcf017b45575887Z(0c60c80f961f0e71f3a9b524af6012062fe037a6NZ(ea6c014dc72d6f8ccd1ed92ace1d41f0d8de8957Z(4b007901b765489abead49d926f721d065a429c1Z23d2eec4fe41c849b80c8d83662c0e44a8b291a964cf2f07038é   Z 56fa6aa75548099dcc37d7f03425e0c3Z@120fb6cffcf8b32c43e7225256c4f837a86548c92ccc35480805987cb70be17bZ@ae4d0c95af6b46d32d0adff928f06dd02a303f8ef3c251dfd6e2d85a95474c43Z@c5e478d59288c841aa530db6845c4c8d962893a001ce4e11a4963873aa98134aZP348c89dbcbd32b2f32d814b8116e84cf2b17347ebc1800181c4e2a1fb8dd53e1c635518c7dac47e9é(   Z 89b69d0516f829893c696226650a8687Z€867f70cf1ade02cff3752599a3a53dc4af34c7a669815ae5d513554e1c8cf252c02d470a285a0501bad999bfe943c08f050235d7d68b1da55e63f73b60a57fceZ€e1d9c16aa681708a45f5c7c4e215ceb66e011a2e9f0040713f18aefdb866d53cf76cab2868a39b9f7840edce4fef5a82be67335c77a6068e04112754f27ccf4eZ€d197b1b33db0143e018b12f3d1d1479e6cdebdcc97c5c0f87f6902e072f457b5143f30602641b3d55cd335988cb36b84376060ecd532e039b742a239434af2d5Z€8c0511f4c6e597c6ac6315d8f0362e225f3c501495ba23b868c005174dc4ee71115b59f9e60cd9532fa33e0f75aefe30225c583a186cd82bd4daea9724a3d3b8r»   Z 9d9e9c4cd21fe4be24d5b8244c759665)r   r
   r   c                 C   sà  | j  ¡ D ]q\}}||vrqt| jƒD ]b\}}|\}}}	}
|| \}}|r'|}
|||||	|
ƒ}|  ||||||	|
f¡ ||t|ƒt|ƒ|	|
ƒ}|  ||¡ ||t|ƒt|ƒ|	|
ƒ}|  ||¡ |
d u ru|||||	ƒ}|  ||||||	f¡ qq|  td¡ |ddddƒ W d   ƒ n1 sw   Y  d|v rî|  	t
|dddd¡ |  	t
|ddd	d¡ |  	t|dddd
¡ |  	t|dddd¡ |  	t|ddddd
¡ |  	t|ddddd¡ |ddddd d}|  || j d d
 d
 ¡ d S d S )Nzunsupported hash typeÚunknowns   passrw  rŽ   r   s   sha1Úpassr  r   r  rv  )r-   Úpasswordr  Z
iterationsÚdklen)Úpbkdf2_resultsrc   Ú	enumerateÚpbkdf2_test_vectorsrƒ   Ú
memoryviewr  rg  rf   r   r   )rG   Zpbkdf2Z	supportedZdigest_nameÚresultsr!   Zvectorr}  r  Úroundsr~  ÚexpectedZoverwrite_dklenr  r   r   r   Ú_test_pbkdf2_hmacå  sl   ÿ

ÿ

ÿ
ÿ€ðÿÿÿÿÿÿÿÿëzKDFTests._test_pbkdf2_hmacztest requires builtin_hashlibc                 C   s<   t  ¡  |  tjt¡ W d   ƒ d S 1 sw   Y  d S rL   )r   Zcheck_warningsr†  Úbuiltin_hashlibÚpbkdf2_hmacrD   rX   r   r   r   Útest_pbkdf2_hmac_py  s
   
ÿ"ÿzKDFTests.test_pbkdf2_hmac_pyrˆ  z   test requires OpenSSL > 1.0c                 C   s   |   tjt¡ d S rL   )r†  Úopenssl_hashlibrˆ  r   rX   r   r   r   Útest_pbkdf2_hmac_c  s   zKDFTests.test_pbkdf2_hmac_cÚscryptz   test requires OpenSSL > 1.1c           
   
   C   s  | j D ]\}}}}}}tj|||||d}|  ||¡ qtjdddddd |  t¡ tjdddddd W d   ƒ n1 s@w   Y  |  t¡ tjdddddd W d   ƒ n1 s_w   Y  |  t¡ t d¡ W d   ƒ n1 syw   Y  |  t¡ t dd¡ W d   ƒ n1 s”w   Y  |  t¡ tjdddddd	 W d   ƒ n1 s³w   Y  d
D ]$}|  tttf¡ tjdd|ddd W d   ƒ qº1 sÙw   Y  qºdD ]%}|  tttf¡ tjddd|dd W d   ƒ qá1 sw   Y  qádD ]'}|  tttf¡ tjdddd|d W d   ƒ q	1 s*w   Y  q	dD ](}|  tttf¡ tjddddd|d W d   ƒ q31 sUw   Y  q3dD ](}	|  tttf¡ tjddddd|	d W d   ƒ q^1 s€w   Y  q^d S )N)r  Únr    Úprv  rw  rª   r3  rŽ   r}  r  r   )r  r   rŽ   N)r  r   N)r  N)r  r  r    rŽ  Úmaxmem)r  r  r    rŽ  r~  )Úscrypt_test_vectorsr   rŒ  rƒ   r   r   rf   r¡   )
rG   r}  r  r  r    rŽ  r…  Úresultr  r~  r   r   r   Útest_scrypt"  sX   ÿÿÿÿÿÿ ÿ$ÿÿ$ÿÿ$ÿÿzKDFTests.test_scryptc                 C   s    |   dtj¡ |   dtj¡ d S )NZ
blake2b512zsha3-512)r¦   r   r‡   rX   r   r   r   Útest_normalized_nameI  s   zKDFTests.test_normalized_name)rj  rk  rl  r  r   r  r+   r,   r  r†  r(   rq  r‡  r‰  rs  re   rŠ  r‹  r   r’  r“  r   r   r   r   ru  ¬  sn    ý	ÿø
ÿÿÿÿõþþþþóê&1
ÿ
ÿ
%ru  Ú__main__)2ry   Zbinasciir   r   r@   ro   rm  r–   Z	sysconfigrW  r(   rE   r“   r   Ztest.supportr   r   Ztest.support.import_helperr   r   r   Zhttp.clientr	   re   rn  Zdefault_builtin_hashesZget_config_varrD   r   ra   r*   rŠ  r‡  r   r   r   r   r•   Ú	frozensetrK   rs  rp  r"   r%   r1   ZTestCaser2   ru  rj  Úmainr   r   r   r   Ú<module>   sr   

ÿ
ýÿ	      V #ÿ