Server : LiteSpeed
System : Linux server51.dnsbootclub.com 4.18.0-553.62.1.lve.el8.x86_64 #1 SMP Mon Jul 21 17:50:35 UTC 2025 x86_64
User : nandedex ( 1060)
PHP Version : 8.1.33
Disable Function : NONE
Directory :  /opt/cppython/lib/python3.8/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]


Current File : //opt/cppython/lib/python3.8/test/__pycache__/test_hashlib.cpython-38.pyc
U

>��gm��@s�ddlZddlmZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
ddlmZmZmZddlmZddlmZeed�Zedd	gd
�Zedd	gd�ZzddlmZWnek
r�dZYnXzddlZWnek
�r
dZYnXe
�ed
�ZzddlZWnek
�r>dZYnXe
�ed�Z dd�Z!dZ"dd�Z#Gdd�de
j$�Z%Gdd�de
j$�Z&e'dk�r�e
�(�dS)�N)�	unhexlify)�support)�_4G�
bigmemtest�import_fresh_module)�requires_hashdigest)�
HTTPException�gettotalrefcount�hashlib�_hashlib)Zfresh)Zblocked)�HASHzrequires _blake2zrequires _sha3cCsLt|t�stt|���d}d}|D]$}|||d?d@||d@7}q"|S)NZ0123456789abcdef���)�
isinstance�bytes�AssertionError�repr)�s�h�r�i�r�0/opt/cppython/lib/python3.8/test/test_hashlib.py�hexstr3s"rz(http://www.pythontest.net/hashlib/{}.txtc	cs�t�|�}zt�|�}Wn(ttfk
r@t�d�|���YnX|�J|D]>}|��}|�	d�sL|shqL|�
d�}t�|d�|d<|VqLW5QRXdS)NzCould not retrieve {}�#�,r)
�URL�formatrZopen_urlresource�OSErrorr�unittestZSkipTest�strip�
startswith�splitr�fromhex)�	hash_nameZurlZtestdata�line�partsrrr�read_vectors>s

r(cs�eZdZdZddhZejdkp eZdd�Z	�fdd�Z
ed	d
��Ze
je�edkd�d
d���Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd�d$d%�Zd&d'�Zd(d)�Ze d*d+��Z!e"d,d-��Z#d�d/d0�Z$d1d2�Z%e"d3d4��Z&d5d6�Z'e"d7d8��Z(e d9d:��Z)d;d<�Z*d=d>�Z+d?d@�Z,e�e-j.e/dAkdB�e0e/dAdCd#dD�dEdF���Z1e�e-j.e/dCkdB�e0e/dCdCd#dD�dGdH���Z2e�e-j.e/dCkdB�e0e/dCdCd#dD�dIdJ���Z3dKdL�Z4dMdN�Z5dOdP�Z6dQdR�Z7dSdT�Z8dUdV�Z9dWdX�Z:dYdZ�Z;d[d\�Z<d]d^�Z=d_d`�Z>dadb�Z?dcdd�Z@dedf�ZAdgdh�ZBdidj�ZCdkdl�ZDdmdn�ZEdodp�ZFdqdr�ZGdsdt�ZHdudv�ZIe dwdx��ZJe dydz��ZKe d{d|��ZLe d}d~��ZMe dd���ZNe d�d���ZOe d�d���ZPe d�d���ZQe d�d���ZRe d�d���ZSe"d�d���ZTe"d�d���ZUe"d�d���ZVe"d�d���ZWe"d�d���ZXe"d�d���ZYe"d�d���ZZe"d�d���Z[e"d�d���Z\e"d�d���Z]e"d�d���Z^e"d�d���Z_d�d��Z`e
jad�d���Zb�ZcS)��HashLibTestCase)�md5�MD5�sha1ZSHA1�sha224ZSHA224�sha256�SHA256�sha384ZSHA384�sha512ZSHA512�blake2b�blake2s�sha3_224�sha3_256�sha3_384�sha3_512�	shake_128�	shake_256r8r9�posixc
CsHzt�|�WStk
rB}z|jr2t�d|�W5d}~XYnXdS)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�warnings�warn)�self�module_name�errorrrr�_conditional_import_module[s z*HashLibTestCase._conditional_import_modulec	st�}�jD]}|�|���q��d�}|r<|�ddh�i�_|D]}t��j|<qF�j��D]0\}}|�tt	|��d|fdd�}|�|�qb��d�}|�_
|�r��t|d����t|d���j��D]H\}}t|d	|d�}	|	r�z
|	�Wnt
k
�rYq�X|�|	�qԇfd
d�}
��d�}|�rB|
d
���d�}|�rZ|
d���d�}
|
�rz|
d�|
d���d�}|�r�|
d�|
d�|�r�|
d�|
d���d�}|�r�|
d�|
d�|
d�|
d�|
d�|
d�tt��j||�dS)N�_blake2r2r3c[s&|dkrtj|f|�Stj||f|�S�N)r
�new)�dataZ_alg�kwargsrrr�_test_algorithm_via_hashlib_newuszAHashLibTestCase.__init__.<locals>._test_algorithm_via_hashlib_newrZopenssl_md5Zopenssl_sha1Zopenssl_cs"ttd�|�}�j|�|�dS)N�__get_builtin_constructor)�getattrr
�constructors_to_test�add)�name�constructor�rArr�add_builtin_constructor�sz9HashLibTestCase.__init__.<locals>.add_builtin_constructor�_md5r*�_sha1r,�_sha256r-r.�_sha512r0r1�_sha3r4r5r6r7r8r9)�set�supported_hash_namesrN�lowerrD�updaterM�itemsrLr
r�
assertTrue�hasattr�
ValueError�superr)�__init__)rA�argsrIZ
algorithms�	algorithmrE�constructorsrJrrPrRrSrTrUrVrW��	__class__rQrradsj








zHashLibTestCase.__init__cCs|j��}tj�|�SrF)rM�values�	itertools�chain�
from_iterable)rArdrrr�hash_constructors�s
z!HashLibTestCase.hash_constructorsNzRequire _hashlib modulecCsNt�td�}t�d�}|�}td�D]}|�d�q$|j|�|ddd�dS)Nr	r,�dr�
)Zdelta)rZ
get_attribute�sys�	c_hashlibrG�rangeraZassertAlmostEqual)rAr	Z	sha1_hashZrefs_beforerrrr�test_refleaks_in_hash___init__�s
z.HashLibTestCase.test_refleaks_in_hash___init__cCsHt�dtd��}|jD],}||�}|j|jkr:|�d�q|��qdS)N�brm�)�arrayrprkrO�shakes�	hexdigest)rA�a�cons�crrr�test_hash_array�s
zHashLibTestCase.test_hash_arraycCs"|�tjtdd�|jD���dS)Ncss|]}|��r|VqdSrF)�islower)�.0Z_algorrr�	<genexpr>�s�z=HashLibTestCase.test_algorithms_guaranteed.<locals>.<genexpr>)�assertEqualr
�algorithms_guaranteedrXrYrQrrr�test_algorithms_guaranteed�s�z*HashLibTestCase.test_algorithms_guaranteedcCs|�ttj��tj��dSrF)r]rXr
r�issubset�algorithms_availablerQrrr�test_algorithms_available�s�z)HashLibTestCase.test_algorithms_availablecCs$|�ttjd�|�ttjd�dS)Nzspam spam spam spam spam�)�assertRaisesr_r
rG�	TypeErrorrQrrr�test_unknown_hash�sz!HashLibTestCase.test_unknown_hashcCs|�t�d�jd�dS)Nr/r.)r~r
rGrOrQrrr�test_new_upper_to_lower�sz'HashLibTestCase.test_new_upper_to_lowerc	Cs�ttd�}ttd�}|�t|d�zddl}Wntk
rL|�d�YnXdtjd<|�	�z|�t|d�W5dt
�kr�|tjd<ntjd=X|�t|d�|d�}|�||j
�|�t|�d	dg�dS)
NrKZ__builtin_constructor_cache�testrz_md5 module not availablerSr*�r+)rLr
r�r_rS�ImportErrorZskipTestrn�modules�clear�localsr�ZassertIsr*r~�sorted)rAZget_builtin_constructorZbuiltin_constructor_cacherSrPrrr�test_get_builtin_constructor�s,��


z,HashLibTestCase.test_get_builtin_constructorcCsz|jD]n}|�}|j|jkrL|�|�d�t�|�t|�d��|�d��q|�|��t�|�t|���|���qdS)Nrs)	rkrOru�assertIsInstance�digestrr~rrv�rArxrrrr�test_hexdigest�s
zHashLibTestCase.test_hexdigestcCstd}|jD]d}|�}|j|jkr"q
|j|jfD]>}|�t|d�|D]&}|�ttf��||�W5QRXqDq.q
dS)N)i l��l
ll����l
i����)rkrOrur�rvr�r_�
OverflowError)rAZlarge_sizesrxrr��lengthrrr�test_digest_length_overflow�s
z+HashLibTestCase.test_digest_length_overflowcCsj|jD]^}|�}|�|jt�|j|jkr<|�|j|j�n|�|j|j�|�|jt�	|j�j�qdSrF)
rkr�rO�strrY�assertIn�assertNotInr~r
rGr�rrr�test_name_attributes
z#HashLibTestCase.test_name_attributec
Csd}d}d}d}|jD]�}|�}|�|�|�|�|�|�|�|�|j|jkrZd}nd}|�}|�||||�|�|j|�|j|��|||||�}	|�|j|�|	j|��||||�}
|
j|�}|
��}|�|�|�|j|�|j|��|�|
j|�|�qdS)Ns�aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbs~ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccsdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd)rsr)rkr[rOrur~r��copy)
rAZaasZbeesZceesZdeesrxZm1rbZm2Zm3Zm4Z	m4_digestZm4_copyrrr�test_large_updates0






z!HashLibTestCase.test_large_updateFcKs�t|�d}|��}|j|}|�t|�d�|D]�}||f|�}	|sN|	��n|	�|�}
|�|
|d|||
t|�|f�|s�|	��n|	�|�}
t�|�}|�|
|�|s2|�t|�|	j	�q2dS)N�zrHash algorithm %s constructed using %s returned hexdigest %r for %d byte input data that should have hashed to %r.)
�lenrZrMZassertGreaterEqualrvr~r�rr$�digest_size)rArOrHrvZshakerIr�rd�hash_object_constructor�mZcomputedr�rrr�check1s.
���
zHashLibTestCase.checkcCs&|j|}|D]}|�t|d�qdS)NZspam)rMr�r�)rAZalgorithm_namerdr�rrr�check_no_unicodeFs
z HashLibTestCase.check_no_unicodecCs@|�d�|�d�|�d�|�d�|�d�|�d�dS)Nr*r,r-r.r0r1�r�rQrrr�test_no_unicodeLs




zHashLibTestCase.test_no_unicodecCs|�d�|�d�dS)Nr2r3r�rQrrr�test_no_unicode_blake2Ts
z&HashLibTestCase.test_no_unicode_blake2cCs@|�d�|�d�|�d�|�d�|�d�|�d�dS)Nr4r5r6r7r8r9r�rQrrr�test_no_unicode_sha3Ys




z$HashLibTestCase.test_no_unicode_sha3rcCs�|j|}|D]�}|�}|�|j|�|�|j|�|rj|�t|�|��|�|�t|�|��d|�n,|�t|���|�|�t|���d|�|�|j|�|�|�	d�dt
|��qdS)Nr��_r)rMr~�
block_sizer�r�r�rvrOr�r#r)rArOr�r�Z
digest_lengthrdr�r�rrr�check_blocksize_namebs 
��z$HashLibTestCase.check_blocksize_namecCsX|�ddd�|�ddd�|�ddd�|�ddd	�|�d
dd�|�d
dd�dS)Nr*�@rsr,�r-�r.� r0��0r1�r�rQrrr�test_blocksize_nameusz#HashLibTestCase.test_blocksize_namecCs\|�ddd�|�ddd�|�ddd	�|�d
dd�|�d
ddd�|�dddd�dS)Nr4�r�r5�r�r6�hr�r7�Hr�r8�rr9r�rQrrr�test_blocksize_name_sha3}sz(HashLibTestCase.test_blocksize_name_sha3cCsl|j|}|D]X}|�}tdk	r,t|t�r,q|�||d�|�|j|�|�|j|�|�|j|�qdS)Ni@)rMrrr~Z_capacity_bitsZ
_rate_bitsZ_suffix)rArOZcapacityZrate�suffixrdr�r�rrr�
check_sha3�s
zHashLibTestCase.check_sha3cCsd|�dddd�|�dddd�|�dd	d
d�|�ddd
d�|�dddd�|�dddd�dS)Nr4i�i��r5�i@r6ii@r7�i@r8�i@�r9)r�rQrrr�test_extra_sha3�szHashLibTestCase.test_extra_sha3cCs |�ddd�|�ddd�dS)Nr2r�r�r3r�r�rQrrr�test_blocksize_name_blake2�sz*HashLibTestCase.test_blocksize_name_blake2cCs|�ddd�dS)Nr*�Z d41d8cd98f00b204e9800998ecf8427e�r�rQrrr�test_case_md5_0�szHashLibTestCase.test_case_md5_0cCs|�ddd�dS)Nr*�abcZ 900150983cd24fb0d6963f7d28e17f72r�rQrrr�test_case_md5_1�szHashLibTestCase.test_case_md5_1cCs|�ddd�dS)Nr*s>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789Z d174ab98d277d9f5a5611c2c9f419d9fr�rQrrr�test_case_md5_2�s�zHashLibTestCase.test_case_md5_2�z!test cannot run on 32-bit systemsr�)�sizeZmemuse�dry_runcCs|�dd|d�dS)Nr*�AZ c9af2dff37468ce5dfee8f2cfc0a9c6dr��rAr�rrr�test_case_md5_huge�sz"HashLibTestCase.test_case_md5_hugecCs|�dd|d�dS)Nr*r�Z 28138d306ff1b8281f1a9067e1a1a2b3r�r�rrr�test_case_md5_uintmax�sz%HashLibTestCase.test_case_md5_uintmaxcCs4t��}|�d�|�dd�|�|��d�dS)z,Regression test for gh-98517 CVE-2022-37454.����Z880762e8ce6700f114fec0f621fd97c4b9c00147fa052215294cceeedN)r
r4r[r~rv)rAr�rrrr�test_sha3_update_overflow�s
z)HashLibTestCase.test_sha3_update_overflowcCs|�ddd�dS)Nr,r�Z(da39a3ee5e6b4b0d3255bfef95601890afd80709r�rQrrr�test_case_sha1_0�s�z HashLibTestCase.test_case_sha1_0cCs|�ddd�dS)Nr,r�Z(a9993e364706816aba3e25717850c26c9cd0d89dr�rQrrr�test_case_sha1_1�s�z HashLibTestCase.test_case_sha1_1cCs|�ddd�dS)Nr,�8abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopqZ(84983e441c3bd26ebaae4aa1f95129e5e54670f1r�rQrrr�test_case_sha1_2�s�z HashLibTestCase.test_case_sha1_2cCs|�dddd�dS)Nr,�a�@BZ(34aa973cd4c4daa4f61eeb2bdbad27316534016fr�rQrrr�test_case_sha1_3�s�z HashLibTestCase.test_case_sha1_3cCs|�ddd�dS)Nr-r�Z8d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42fr�rQrrr�test_case_sha224_0�s�z"HashLibTestCase.test_case_sha224_0cCs|�ddd�dS)Nr-r�Z823097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7r�rQrrr�test_case_sha224_1�s�z"HashLibTestCase.test_case_sha224_1cCs|�ddd�dS)Nr-r�Z875388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525r�rQrrr�test_case_sha224_2�s�z"HashLibTestCase.test_case_sha224_2cCs|�dddd�dS)Nr-r�r�Z820794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67r�rQrrr�test_case_sha224_3�s�z"HashLibTestCase.test_case_sha224_3cCs|�ddd�dS)Nr.r�Z@e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855r�rQrrr�test_case_sha256_0�s�z"HashLibTestCase.test_case_sha256_0cCs|�ddd�dS)Nr.r�Z@ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015adr�rQrrr�test_case_sha256_1�s�z"HashLibTestCase.test_case_sha256_1cCs|�ddd�dS)Nr.r�Z@248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1r�rQrrr�test_case_sha256_2�s�z"HashLibTestCase.test_case_sha256_2cCs|�dddd�dS)Nr.r�r�Z@cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0r�rQrrr�test_case_sha256_3�s�z"HashLibTestCase.test_case_sha256_3cCs|�ddd�dS)Nr0r�Z`38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95br�rQrrr�test_case_sha384_0�s�z"HashLibTestCase.test_case_sha384_0cCs|�ddd�dS)Nr0r�Z`cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7r�rQrrr�test_case_sha384_1s�z"HashLibTestCase.test_case_sha384_1cCs|�ddd�dS)Nr0�pabcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstuZ`09330c33f71147e83d192fc782cd1b4753111b173b3b05d22fa08086e3b0f712fcc7c71a557e2db966c3e9fa91746039r�rQrrr�test_case_sha384_2s�z"HashLibTestCase.test_case_sha384_2cCs|�dddd�dS)Nr0r�r�Z`9d0e1809716474cb086e834e310a4a1ced149e9c00f248527972cec5704c2a5b07b8b3dc38ecc4ebae97ddd87f3d8985r�rQrrr�test_case_sha384_3
s�z"HashLibTestCase.test_case_sha384_3cCs|�ddd�dS)Nr1r�Z�cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3er�rQrrr�test_case_sha512_0s�z"HashLibTestCase.test_case_sha512_0cCs|�ddd�dS)Nr1r�Z�ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49fr�rQrrr�test_case_sha512_1s�z"HashLibTestCase.test_case_sha512_1cCs|�ddd�dS)Nr1r�Z�8e959b75dae313da8cf4f72814fc143f8f7779c6eb9f7fa17299aeadb6889018501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909r�rQrrr�test_case_sha512_2s�z"HashLibTestCase.test_case_sha512_2cCs|�dddd�dS)Nr1r�r�Z�e718483d0ce769644e2e42c7bc15b4638e1f98b13b2044285632a803afa973ebde0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09br�rQrrr�test_case_sha512_3$s�z"HashLibTestCase.test_case_sha512_3cCs"|�|j|�t|d�D]}|d|d�qd|d}|jt||d�|�|j|�t|d�D]}|d|d�qdd|d}	|jt||	d�|�|j|�td|d�D]}||d�q�|jt|dd�|jt|dd�|jt||dd�|�|j|�t|d�D]}|d|d��qd|d}
|jt||
d�|�|���|d	d����tdd
�D]}||d��qf|jt|dd�|jt|d
d�tdd
�D]}||d��q�|jt|dd�|jt|dd�|jt|d
d�tdd
�D]}||d
��q�|jt|dd
�|jt|d
d
�td|d�D]}||d��q.|jt|dd�|jt||dd�|dd�|dd�|jt|dd�|jt	|dd�|dd�||d�|jt|dd�|jt	||dd�|jt
|d	d�|jt
|d	d�|�t
|d�|d	d	d	d	dddd
ddddd�dS)Nr�r���salt)�person�r����r��keyr�r�)�fanout)�depth)�
node_depth)�
inner_size)�	leaf_sizer�l)�node_offset)rH)�stringr
�r��T)r�r�r�r�r�r�r�r�r�r��	last_node)r~Z	SALT_SIZErpr�r_ZPERSON_SIZEZMAX_DIGEST_SIZEZMAX_KEY_SIZErvr�r�)rArPZ	salt_sizeZperson_sizeZkey_sizer�Z
max_offsetrr�r�r�rrr�check_blake2)s��



�zHashLibTestCase.check_blake2cCsxdd�}|dd�}|D]X}|D]N}|||�}|||�}	|||d�}
|�|
���|||	|d�}|�|���qq|��S)NcSsTd}d||@}d}t|�}t|�D]*}|||@}||}}|d?d@||<q$|S)Nr�l�KZ=r���)�	bytearrayrp)r��seed�maskrwrr�outr�trrr�selftest_seqys
z4HashLibTestCase.blake2_rfc7693.<locals>.selftest_seqr�r�)r�r�)r[r�rv)rArPZmd_lenZin_lenrZouterZoutlenZinlenZindatar�ZunkeyedZkeyedrrr�blake2_rfc7693xs



zHashLibTestCase.blake2_rfc7693cCsN|�tjddddd�ddddg}ddd	d
ddg}|�|�tj||�d
�dS)Nrsr�l����r�r�r�rr�r��r�r�Z@c23a7800d98123bd10f506c61e29da5603d763b8bbad2e737f5e765a7bccd475)r�r
r2r~r)rAZ
b2b_md_lenZ
b2b_in_lenrrr�test_blake2b�s�zHashLibTestCase.test_blake2bcCs|�ddd�dS)Nr2r�Z�786a02f742015903c6c6fd852552d272912f4740e15847618a86e217f71f5419d25e1031afee585313896444934eb04b903a685b1448b755d56f701afe9be2cer�rQrrr�test_case_blake2b_0�s�z#HashLibTestCase.test_case_blake2b_0cCs|�ddd�dS)Nr2r�Z�ba80a53f981c4d0d6a2797b69f12f6e94c212f14685ac4b74b12bb6fdbffa2d17d87c5392aab792dc252d5de4533cc9518d38aa8dbf1925ab92386edd4009923r�rQrrr�test_case_blake2b_1�s�z#HashLibTestCase.test_case_blake2b_1cCs*|jddddddddd	d
ddd
dd�dS)Nr2�fooZ 920568b0c5873b2f0ab67bedb6cf1b2brs�bar�baz�bingr�r�rr��r�T�r�r�r�r�r�r�r�r�r�r�r�r�rQrrr� test_case_blake2b_all_parameters�s�z0HashLibTestCase.test_case_blake2b_all_parameterscCs4td�D]&\}}}t�|�}|jd|||d�qdS)Nr2r��r(rr$r��rA�msgr��mdrrr�test_blake2b_vectors�s
z$HashLibTestCase.test_blake2b_vectorscCsN|�tjddddd�ddddg}ddd	d
ddg}|�|�tj||�d
�dS)N�r�l���rsr�r�rr�r��Ar�r�Z@6a411f08ce25adcdfb02aba641451cec53c598b24f4fc787fbdc88797f4c1dfe)r�r
r3r~r)rAZ
b2s_md_lenZ
b2s_in_lenrrr�test_blake2s�s�zHashLibTestCase.test_blake2scCs|�ddd�dS)Nr3r�Z@69217a3079908094e11121d042354a7c1f55b6482ca1a51e1b250dfd1ed0eef9r�rQrrr�test_case_blake2s_0�s�z#HashLibTestCase.test_case_blake2s_0cCs|�ddd�dS)Nr3r�Z@508c5e8c327c14e2e1a72ba34eeb452f37458b209ed63a294d999b4c86675982r�rQrrr�test_case_blake2s_1�s�z#HashLibTestCase.test_case_blake2s_1cCs*|jddddddddd	d
ddd
dd�dS)Nr3r
Z bf2a8f7fe3c555012a6f8046e646bc75rsrrr
r�r�rr�rr�Trr�rQrrr� test_case_blake2s_all_parameters�s�z0HashLibTestCase.test_case_blake2s_all_parameterscCs4td�D]&\}}}t�|�}|jd|||d�qdS)Nr3r�rrrrr�test_blake2s_vectors�s
z$HashLibTestCase.test_blake2s_vectorscCs|�ddd�dS)Nr4r�Z86b4e03423667dbb73b6e15454f0eb1abd4597f9a1b078e3f5b5a6bc7r�rQrrr�test_case_sha3_224_0�s�z$HashLibTestCase.test_case_sha3_224_0cCs$td�D]\}}|�d||�qdS)Nr4�r(r��rArrrrr�test_case_sha3_224_vector�sz)HashLibTestCase.test_case_sha3_224_vectorcCs|�ddd�dS)Nr5r�Z@a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434ar�rQrrr�test_case_sha3_256_0�s�z$HashLibTestCase.test_case_sha3_256_0cCs$td�D]\}}|�d||�qdS)Nr5rrrrr�test_case_sha3_256_vector�sz)HashLibTestCase.test_case_sha3_256_vectorcCs|�ddd�dS)Nr6r�Z`0c63a75b845e4f7d01107d852e4c2485c51a50aaaa94fc61995e71bbee983a2ac3713831264adb47fb6bd1e058d5f004r�rQrrr�test_case_sha3_384_0�s�z$HashLibTestCase.test_case_sha3_384_0cCs$td�D]\}}|�d||�qdS)Nr6rrrrr�test_case_sha3_384_vectorsz)HashLibTestCase.test_case_sha3_384_vectorcCs|�ddd�dS)Nr7r�Z�a69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26r�rQrrr�test_case_sha3_512_0s�z$HashLibTestCase.test_case_sha3_512_0cCs$td�D]\}}|�d||�qdS)Nr7rrrrr�test_case_sha3_512_vectorsz)HashLibTestCase.test_case_sha3_512_vectorcCs$|�dddd�|�dddd�dS)Nr8r�Z@7f9c2ba4e88f827d616045507605853ed73b8093f6efbc88eb1a6eacfa66ef26TZ7f9cr�rQrrr�test_case_shake_128_0s
�z%HashLibTestCase.test_case_shake_128_0cCs&td�D]\}}|�d||d�qdS)Nr8Trrrrr�test_case_shake128_vectorsz)HashLibTestCase.test_case_shake128_vectorcCs$|�dddd�|�dddd�dS)Nr9r�Z@46b9dd2b0ba88d13233b3feb743eeb243fcd52ea62b81b82b50c27646ed5762fTZ46b9r�rQrrr�test_case_shake_256_0s
�z%HashLibTestCase.test_case_shake_256_0cCs&td�D]\}}|�d||d�qdS)Nr9Trrrrr�test_case_shake256_vector#sz)HashLibTestCase.test_case_shake256_vectorcCs�d}|jD]B}|�}|�d�|�d|�|�d�|d|�}|�d�q
t��}|�d�|�d|�|�d�|�|��d�t�d|�}|�|��d�dS)Ni�1�#�xZ cb1e1a2cbc80be75e19935d621fb9b21Z cfb767f225d58469c5de3632a8803958)rkr[r
r*r~rv)rAZgil_minsizerxr�rrr�test_gil(s




zHashLibTestCase.test_gilc	s�t���d}d}|d�t��|���}��fdd�}g}t|�D]N}t��d|}|�|d�|�|t|�d�tj||fd�}|�	|�qD|D]}|�
�q�|D]}|��q�|�|����dS)	Nr�sswineflui@
cs4d}|t��kr0���|||��||7}qdS)Nr)r�r[)�
chunk_size�index�rHZhasherrr�hash_in_chunksMsz=HashLibTestCase.test_threaded_hashing.<locals>.hash_in_chunksrmr)�targetrb)r
r,rvrpr�Z
assertGreaterr~�	threading�Thread�append�start�join)	rAZnum_threadsZ
smallest_dataZ
expected_hashr2�threadsZ	threadnumr/�threadrr1r�test_threaded_hashing?s(�

z%HashLibTestCase.test_threaded_hashing)F)rrN)d�__name__�
__module__�__qualname__rYru�osrO�COMPILED_WITH_PYDEBUGr>rDra�propertyrkrZ
refcount_testr ZskipIfrorqrzr�r�r�r�r�r�r�r�r�r�r�r��requires_blake2r��
requires_sha3r�r�r�r�r�r�r�r�r�r�rn�maxsizerrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr	rrrrrrrrr r!r"r#r$r%r&r'r(r)r*r.Zreap_threadsr;�
__classcell__rrrerr)Ns�	J
	


 


�



	O





















r)c	@s`eZdZdddddgZddddded	�fd
ddd
ded�fdddd
ded�fgZe�d�dfe�d�dfe�d�dfe�d�dfe�d�dfge�d�dfe�d�dfe�d�dfe�d�dfe�d�dfge�d �dfe�d!�dfe�d"�dfe�d#�d$fe�d%�dfgd&�Zd'd(�Z	d)d*�Z
e�e
ed+�d,�d-d.��Ze�e
ed/�d0�d1d2��Zd3d4�ZdS)5�KDFTests)�password�saltr�N)rGrHr�N)rGrH�N)spasswordPASSWORDpasswords$saltSALTsaltSALTsaltSALTsaltSALTsaltrIr�)s	passwordssaltrIrsr�rsr�Z�77d6576238657b203b19ca42c18a0497f16b4844e3074ae8dfdffa3fede21442fcd0069ded0948f8326a753a0fc81f17e8d3e0fb2e0d3628cf35e20c38d18906rGsNaClr�rZ�fdbabe1c9d3472007856e7190d01e9fe7c6ad7cbc8237830e77376634b3731622eaf30d92e22a3886ff109279d9830dac727afb94a83ee6d8360cbdfa2cc0640s
pleaseletmeinsSodiumChloridei@Z�7023bdcb3afd7348461c06cd81fd38ebfda8fbba904f8e3ea9b543f6545da1f2d5432955613f0fcf62d49705242a9af9e61e85dc0d651e40dfcf017b45575887Z(0c60c80f961f0e71f3a9b524af6012062fe037a6NZ(ea6c014dc72d6f8ccd1ed92ace1d41f0d8de8957Z(4b007901b765489abead49d926f721d065a429c1Z23d2eec4fe41c849b80c8d83662c0e44a8b291a964cf2f07038�Z 56fa6aa75548099dcc37d7f03425e0c3Z@120fb6cffcf8b32c43e7225256c4f837a86548c92ccc35480805987cb70be17bZ@ae4d0c95af6b46d32d0adff928f06dd02a303f8ef3c251dfd6e2d85a95474c43Z@c5e478d59288c841aa530db6845c4c8d962893a001ce4e11a4963873aa98134aZP348c89dbcbd32b2f32d814b8116e84cf2b17347ebc1800181c4e2a1fb8dd53e1c635518c7dac47e9�(Z 89b69d0516f829893c696226650a8687Z�867f70cf1ade02cff3752599a3a53dc4af34c7a669815ae5d513554e1c8cf252c02d470a285a0501bad999bfe943c08f050235d7d68b1da55e63f73b60a57fceZ�e1d9c16aa681708a45f5c7c4e215ceb66e011a2e9f0040713f18aefdb866d53cf76cab2868a39b9f7840edce4fef5a82be67335c77a6068e04112754f27ccf4eZ�d197b1b33db0143e018b12f3d1d1479e6cdebdcc97c5c0f87f6902e072f457b5143f30602641b3d55cd335988cb36b84376060ecd532e039b742a239434af2d5Z�8c0511f4c6e597c6ac6315d8f0362e225f3c501495ba23b868c005174dc4ee71115b59f9e60cd9532fa33e0f75aefe30225c583a186cd82bd4daea9724a3d3b8r�Z 9d9e9c4cd21fe4be24d5b8244c759665)r,r.r1c
Cs�|j��D]�\}}t|j�D]�\}}|\}}}}	||\}
}|rD|}	||||||	�}|�||
|||||	f�||t|�t|�||	�}||t|�t|�||	�}|�||
�|	dkr|||||�}|�||
||||f�qq
|�t|dddd�|�t|dddd�|�t	|dddd�|�t	|dddd	�|�t	|ddddd�|�t	|ddddd	�|�
t	d
��|dddd�W5QRX|dddddd
�}|�||jddd�dS)Nssha1spassrHr�r,�passr�rr�zunsupported hash type�unknownrG)r%�passwordr�Z
iterations�dklen)�pbkdf2_resultsr\�	enumerate�pbkdf2_test_vectorsr~�
memoryviewr�r�r�r_ZassertRaisesRegex)
rAZpbkdf2Zdigest_name�resultsrZvectorrNr��roundsrO�expectedZoverwrite_dklenrrrr�_test_pbkdf2_hmac�sN�
�
�
��zKDFTests._test_pbkdf2_hmaccCs|�tj�dSrF)rW�
py_hashlib�pbkdf2_hmacrQrrr�test_pbkdf2_hmac_py�szKDFTests.test_pbkdf2_hmac_pyrYz   test requires OpenSSL > 1.0cCs|�tj�dSrF)rWrorYrQrrr�test_pbkdf2_hmac_c�szKDFTests.test_pbkdf2_hmac_c�scryptz   test requires OpenSSL > 1.1c

Cs@|jD]0\}}}}}}tj|||||d�}|�||�qtjdddddd�|�t��tjdddddd�W5QRX|�t��tjdddddd�W5QRX|�t��t�d�W5QRX|�t��t�dd�W5QRX|�t��tjdddddd	�W5QRXd
D]6}|�tttf��tjdd|ddd�W5QRX�qdD]6}|�tttf��tjddd|dd�W5QRX�qLdD]6}|�tttf��tjdddd|d�W5QRX�q�dD]8}|�tttf��tjddddd|d
�W5QRX�q�dD]8}	|�tttf��tjddddd|	d�W5QRX�qdS)N)r��nr�prGrHr�rr�rNr�r�)r�rr�N)r�rN)r�N)r�r]rr^�maxmem)r�r]rr^rO)�scrypt_test_vectorsr
r\r~r�r�r_r�)
rArNr�r]rr^rV�resultr_rOrrr�test_scrypt�sB"""��zKDFTests.test_scryptcCs |�dtj�|�dtj�dS)NZ
blake2b512zsha3-512)r�r
r�rQrrr�test_normalized_name�szKDFTests.test_normalized_name)r<r=r>rRrr`rr$rPrWrZr �
skipUnlessr^ror[rbrcrrrrrFdst��	��
�����
������& �
�
%rF�__main__))rtZbinasciir�	functoolsr
r;rhr?rnr4r r?r�rZtest.supportrrrrZhttp.clientrr^r@rorXrrr�rErdrBrWrCrrr(ZTestCaser)rFr<�mainrrrr�<module>	sZ



	


F1le Man4ger