HEX
Server: Apache
System: Linux opal14.opalstack.com 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 25 16:17:31 UTC 2024 x86_64
User: curbgloabal_opal (1234)
PHP: 8.1.29
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //lib64/python3.6/test/__pycache__/test_hashlib.cpython-36.pyc
3

ai���@s�ddlZddlmZddlZddlZddlZddlZddlZddlZyddl	Z	Wne
k
rhdZ	YnXddlZddlZddl
mZddlmZmZmZddlmZddlmZddlmZeed�Zed	d
gd�Zed	d
gd�Zdd
lmZe��rddddddddhZddhe�Zne �Ze �Zyddl!Z!Wne
k
�rLdZ!YnXej"e!�o^e�d�Z#yddl$Z$Wne
k
�r�dZ$YnXej"e$�o�e�d�Z%dd�Z&dZ'dd�Z(dd �Z)Gd!d"�d"ej*�Z+Gd#d$�d$ej*�Z,e-d%k�r�ej.�dS)&�N)�	unhexlify)�support)�_4G�
bigmemtest�import_fresh_module)�requires_hashdigest)�
HTTPException)�partial�gettotalrefcount�hashlib�_hashlib)Zfresh)Zblocked)�
get_fips_mode�blake2b�blake2s�sha3_224�sha3_256�sha3_384�sha3_512�	shake_128�	shake_256�md5�MD5zrequires _blake2zrequires _sha3cCsPt|t�stt|���d}d}x,|D]$}|||d?d@||d@7}q$W|S)NZ0123456789abcdef���)�
isinstance�bytes�AssertionError�repr)�s�h�r�i�r#�$/usr/lib64/python3.6/test_hashlib.py�hexstr;s
$r%z(http://www.pythontest.net/hashlib/{}.txtccs�tj|�}ytj|�}Wn(ttfk
r@tjdj|���YnX|�PxH|D]@}|j�}|j	d�sN|rlqN|j
d�}tj|d�|d<|VqNWWdQRXdS)NzCould not retrieve {}�#�,r)
�URL�formatrZopen_urlresource�OSErrorr�unittestZSkipTest�strip�
startswith�splitr�fromhex)�	hash_nameZurlZtestdata�line�partsr#r#r$�read_vectorsFs


r3cCs6t|dd�jd�rdSt|t�r2|jjjd�r2dSdS)N�__name__r�openssl_TF)�getattrr-rr	�funcr4)�constructorr#r#r$�_is_openssl_constructorVs
r9cseZdZd�ZddhZejdkp eZe	�r.e
�Zdd�Zdd�Z�fdd�Z
edd��Zejejedkd�d d!���Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zeje	�d*�d+d,��Zeje	�d-�d.d/��Zd0d1�Zd2d3�Zd4d5�Zd6d7�Z d�d9d:�Z!d;d<�Z"d=d>�Z#e$d?d@��Z%e&dAdB��Z'd�dDdE�Z(dFdG�Z)e&dHdI��Z*dJdK�Z+e&dLdM��Z,e$eje	�d-�dNdO���Z-dPdQ�Z.dRdS�Z/dTdU�Z0eje1j2e3dVkdW�e4e3dVdXd8dY�dZd[���Z5eje1j2e3dXkdW�e4e3dXdXd8dY�d\d]���Z6d^d_�Z7d`da�Z8dbdc�Z9ddde�Z:dfdg�Z;dhdi�Z<djdk�Z=dldm�Z>dndo�Z?dpdq�Z@drds�ZAdtdu�ZBdvdw�ZCdxdy�ZDdzd{�ZEd|d}�ZFd~d�ZGd�d��ZHd�d��ZId�d��ZJd�d��ZKd�d��ZLe$eje	�d-�d�d����ZMe$d�d���ZNe$d�d���ZOe$d�d���ZPe$eje	�d-�d�d����ZQe$eje	�d-�d�d����ZRe$d�d���ZSe$d�d���ZTe$d�d���ZUe$eje	�d-�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_e&d�d���Z`e&d�d���Zae&d�d���Zbd�d��Zcejedd��ejed�d����Zfeje	�d��d�d���Zg�ZhS)��HashLibTestCaserr�sha1�SHA1�sha224�SHA224�sha256�SHA256�sha384�SHA384�sha512�SHA512rrrrrrrr�posixcCsny
tj|�Stk
r@}z|jr0tjd|�WYdd}~Xn*tk
rh}zt�sX�WYdd}~XnXdS)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�ImportError�_get_fips_mode)�selfZmodule_name�errorr#r#r$�_conditional_import_moduleos
z*HashLibTestCase._conditional_import_modulecCs2|j|jkrdS|jd�}|r.t||j�r.dSdS)zAReturn true if the hasher should have "shake" API (digest length)FrT)�name�shakesrPrZHASH)rN�hasherrr#r#r$�_has_shake_extras{s
z!HashLibTestCase._has_shake_extrascst�}x$�jD]}|tkr|j|j��qW�jd�}|rH|jddh�i�_x|D]}t��j|<qTW�fdd�}x>�jj�D]0\}�||t	t
|��d|fdd�}|||�q�W�jd�}|�_|�r �jt
|d	���jt
|d
��x4�jj�D]&\}�t	|d|d�}	|	r�|||	�q�W�fdd
�}
�jd�}|�rD|
d��jd�}|�r\|
d��jd�}
|
�r||
d�|
d��jd�}|�r�|
d�|
d�t��s�|�r�|
d�|
d��jd�}|�r�|
d�|
d�|
d�|
d�|
d�|
d�tt��j||�dS)N�_blake2rrcs:�jt|dd��|tkr6�j|��jt|dd��dS)NF)�usedforsecurityT)�addr	�
FIPS_DISABLED)�	algorithmr8)�constructorsr#r$�_add_constructor�s
z2HashLibTestCase.__init__.<locals>._add_constructorc[s&|dkrtj|f|�Stj||f|�S)N)r�new)�dataZ_alg�kwargsr#r#r$�_test_algorithm_via_hashlib_new�szAHashLibTestCase.__init__.<locals>._test_algorithm_via_hashlib_newrZopenssl_md5Zopenssl_sha1r5cs"ttd�|�}�j|j|�dS)N�__get_builtin_constructor)r6r�constructors_to_testrW)rQr8)rNr#r$�add_builtin_constructor�sz9HashLibTestCase.__init__.<locals>.add_builtin_constructor�_md5r�_sha1r;�_sha256r=r?�_sha512rArC�_sha3rrrrrr)�set�supported_hash_names�FIPS_UNAVAILABLErW�lowerrP�updatera�itemsr6rr�
assertTrue�hasattrrM�superr:�__init__)rN�argsr^Z
algorithmsrYrUr[r_rr8rbrcrdrerfrg)�	__class__)rZrNr$rq�sh







zHashLibTestCase.__init__cCs|jj�}tjj|�S)N)ra�values�	itertools�chain�
from_iterable)rNrZr#r#r$�hash_constructors�s
z!HashLibTestCase.hash_constructorsNzRequire _hashlib modulecCsRtjtd�}tjd�}|�}xtd�D]}|jd�q&W|j|�|ddd�dS)Nr
r;�dr�
)Zdelta)rZ
get_attribute�sys�	c_hashlibr\�rangerqZassertAlmostEqual)rNr
Z	sha1_hashZrefs_beforer"r#r#r$�test_refleaks_in_hash___init__�s
z.HashLibTestCase.test_refleaks_in_hash___init__cCsdtjdtd��}y:x4|jD]*}||�}|j|�r<|jd�q|j�qWWntk
r^YnXdS)N�brz�)�arrayr}rxrT�	hexdigest�
ValueError)rN�a�cons�cr#r#r$�test_hash_array�s
zHashLibTestCase.test_hash_arraycCs"|jtjtdd�|jD���dS)Ncss|]}|j�r|VqdS)N)�islower)�.0Z_algor#r#r$�	<genexpr>�sz=HashLibTestCase.test_algorithms_guaranteed.<locals>.<genexpr>)�assertEqualr�algorithms_guaranteedrhri)rNr#r#r$�test_algorithms_guaranteed�sz*HashLibTestCase.test_algorithms_guaranteedcCs|jttj�jtj��dS)N)rnrhrr��issubsetZalgorithms_available)rNr#r#r$�test_algorithms_available�sz)HashLibTestCase.test_algorithms_availablecCs$|jttjd�|jttjd�dS)Nzspam spam spam spam spam�)�assertRaisesr�rr\�	TypeError)rNr#r#r$�test_unknown_hash�sz!HashLibTestCase.test_unknown_hashz1Builtin constructor only unavailable in FIPS modec	Cs |jt��tjWdQRXdS)N)r��AttributeErrorrZ)_HashLibTestCase__get_builtin_constructor)rNr#r#r$�!test_get_builtin_constructor_fips�sz1HashLibTestCase.test_get_builtin_constructor_fipsz$No builtin constructors in FIPS modecCs�ttd�}ttd�}|jt|d�yddl}Wntk
rL|jd�YnXdtjd<|j	�z|jt|d�Wddt
�kr�|tjd<ntjd=X|jt|d�|d�}|j||j
�|jt|�d	dg�dS)
Nr`Z__builtin_constructor_cache�testrz_md5 module not availablercr�r)r6rr�r�rcrLZskipTestr{�modules�clear�localsr�ZassertIsrr��sorted)rNZget_builtin_constructorZbuiltin_constructor_cachercr8r#r#r$�test_get_builtin_constructor�s(


z,HashLibTestCase.test_get_builtin_constructorcCs�y|xv|jD]l}|�}|j|�rN|j|jd�t�|jt|jd��|jd��q
|j|j�t�|jt|j��|j��q
WWntk
r�YnXdS)Nr�)	rxrT�assertIsInstance�digestrr�r%r�r�)rNr�r r#r#r$�test_hexdigests
 zHashLibTestCase.test_hexdigestcCs�y�d}x�|jD]~}|�}|j|�s$qxf|j|jfD]V}|jttf��|d�WdQRXx.|D]&}|jttf��||�WdQRXq^Wq2WqWWntk
r�YnXdS)N��� rz�=�@� l���l�
�l�����l�
)r�r�r�r�r�r�i����)rxrTr�r�r�r��
OverflowError)rNZlarge_sizesr�r r��lengthr#r#r$�test_digest_length_overflow%s

"z+HashLibTestCase.test_digest_length_overflowc
Cs�y�x�|jD]�}|�}|j|jt�|j|jkr@|j|j|j�n|j|j|j�|jtkrr|j|jt	j
|j�j�|j|jt	j
|jdd�j�q
WWntk
r�YnXdS)NF)rV)rxr�rQ�strri�assertInZassertNotInrXr�rr\r�)rNr�r r#r#r$�test_name_attribute6s
$z#HashLibTestCase.test_name_attributec
CsLdd}dd}dd}dd}�y�x|jD]�}|�}|j|�|j|�|j|�|j|�|j|�rpd
}nf}|�}|j||||�|j|j|�|j|��|||||�}	|j|j|�|	j|��||||�}
|
j|�}|
j�}|j|�|j|j|�|j|��|j|
j|�|�q.WWntk
�rFYnXdS)N�a��b��c�~�dir�)r�)rxrlrTr�r��copyr�)
rNZaasZbeesZceesZdeesr��m1rr�m2Zm3Zm4Z	m4_digestZm4_copyr#r#r$�test_large_updateEs6






z!HashLibTestCase.test_large_updateFc
Ks>t|�d}|j�}|j|}|jt|�d��x|D�]�}|j�dhrVt|�rVdS||f|�}	|r�t|�r�||	jkr|dS|	j�d|d�}
|d|d�}q�|	j|�}
n|	j�}
|j|
|d|||
t|�|f�|�rt|�r�|	j	�d|�}
n
|	j	|�}
n|	j	�}
t
j|�}|j|
|�|s6|jt|�|	j�q6WdS)Nr�rVzrHash algorithm %s constructed using %s returned hexdigest %r for %d byte input data that should have hashed to %r.)�lenrkraZassertGreaterEqual�keysr9�digest_sizer�r�r�rr/)rNrQr]r�Zshaker^r�rZ�hash_object_constructor�mZcomputedr�r#r#r$�checkhs>


zHashLibTestCase.checkcCs*|j|}x|D]}|jt|d�qWdS)NZspam)rar�r�)rNZalgorithm_namerZr�r#r#r$�check_no_unicode�s

z HashLibTestCase.check_no_unicodecCs@|jd�|jd�|jd�|jd�|jd�|jd�dS)Nrr;r=r?rArC)r�)rNr#r#r$�test_no_unicode�s




zHashLibTestCase.test_no_unicodecCs|jd�|jd�dS)Nrr)r�)rNr#r#r$�test_no_unicode_blake2�s
z&HashLibTestCase.test_no_unicode_blake2cCs@|jd�|jd�|jd�|jd�|jd�|jd�dS)Nrrrrrr)r�)rNr#r#r$�test_no_unicode_sha3�s




z$HashLibTestCase.test_no_unicode_sha3rcCs�|j|}x�|D]�}|�}|j|j|�t|�s>|j|j|�|r|t|�s�|jt|j|��|�|jt|j|��d|�n,|jt|j��|�|jt|j��d|�|j|j|�|j	|j
d�dt|��qWdS)Nr��_r)rar��
block_sizer9r�r�r�r�rQr�r.r)rNrQr�r�Z
digest_lengthrZr�r�r#r#r$�check_blocksize_name�s 

z$HashLibTestCase.check_blocksize_namecCs^t�s|jddd�|jddd�|jddd�|jddd	�|jd
dd�|jd
dd�dS)Nrr�r�r;�r=�r?r�rAr��0rC)rMr�)rNr#r#r$�test_blocksize_name�sz#HashLibTestCase.test_blocksize_namecCs\|jddd�|jddd�|jddd	�|jd
dd�|jd
ddd�|jdddd�dS)Nr�r�r�r�r�hr�r�Hr�r�rr)r�)rNr#r#r$�test_blocksize_name_sha3�sz(HashLibTestCase.test_blocksize_name_sha3cCsd|j|}xT|D]L}|�}|j||d�t|�s|j|j|�|j|j|�|j|j|�qWdS)Ni@)rar�r9Z_capacity_bitsZ
_rate_bitsZ_suffix)rNrQZcapacityZrate�suffixrZr�r�r#r#r$�
check_sha3�s

zHashLibTestCase.check_sha3cCsd|jdddd�|jdddd�|jdd	d
d�|jddd
d�|jdddd�|jdddd�dS)Nri�i��rii@rii@rii@r�i@�r)r�)rNr#r#r$�test_extra_sha3�szHashLibTestCase.test_extra_sha3cCs |jddd�|jddd�dS)Nrr�r�rr�)r�)rNr#r#r$�test_blocksize_name_blake2�sz*HashLibTestCase.test_blocksize_name_blake2cCs|jddddd�dS)Nr�� d41d8cd98f00b204e9800998ecf8427eF)rV)r�)rNr#r#r$�test_case_md5_0�szHashLibTestCase.test_case_md5_0cCs|jddddd�dS)NrsabcZ 900150983cd24fb0d6963f7d28e17f72F)rV)r�)rNr#r#r$�test_case_md5_1�szHashLibTestCase.test_case_md5_1cCs|jddddd�dS)Nrs>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789Z d174ab98d277d9f5a5611c2c9f419d9fF)rV)r�)rNr#r#r$�test_case_md5_2�szHashLibTestCase.test_case_md5_2�z!test cannot run on 32-bit systemsr�)�sizeZmemuseZdry_runcCs|jdd|ddd�dS)Nr�AZ c9af2dff37468ce5dfee8f2cfc0a9c6dF)rV)r�)rNr�r#r#r$�test_case_md5_huge�sz"HashLibTestCase.test_case_md5_hugecCs|jdd|ddd�dS)Nrr�Z 28138d306ff1b8281f1a9067e1a1a2b3F)rV)r�)rNr�r#r#r$�test_case_md5_uintmaxsz%HashLibTestCase.test_case_md5_uintmaxcCs|jddd�dS)Nr;r�Z(da39a3ee5e6b4b0d3255bfef95601890afd80709)r�)rNr#r#r$�test_case_sha1_0
sz HashLibTestCase.test_case_sha1_0cCs|jddd�dS)Nr;sabcZ(a9993e364706816aba3e25717850c26c9cd0d89d)r�)rNr#r#r$�test_case_sha1_1sz HashLibTestCase.test_case_sha1_1cCs|jddd�dS)Nr;s8abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopqZ(84983e441c3bd26ebaae4aa1f95129e5e54670f1)r�)rNr#r#r$�test_case_sha1_2sz HashLibTestCase.test_case_sha1_2cCs|jdddd�dS)Nr;r�i@BZ(34aa973cd4c4daa4f61eeb2bdbad27316534016f)r�)rNr#r#r$�test_case_sha1_3sz HashLibTestCase.test_case_sha1_3cCs|jddd�dS)Nr=r�Z8d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f)r�)rNr#r#r$�test_case_sha224_0 sz"HashLibTestCase.test_case_sha224_0cCs|jddd�dS)Nr=sabcZ823097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7)r�)rNr#r#r$�test_case_sha224_1$sz"HashLibTestCase.test_case_sha224_1cCs|jddd�dS)Nr=s8abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopqZ875388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525)r�)rNr#r#r$�test_case_sha224_2(sz"HashLibTestCase.test_case_sha224_2cCs|jdddd�dS)Nr=r�i@BZ820794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67)r�)rNr#r#r$�test_case_sha224_3-sz"HashLibTestCase.test_case_sha224_3cCs|jddd�dS)Nr?r�Z@e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855)r�)rNr#r#r$�test_case_sha256_02sz"HashLibTestCase.test_case_sha256_0cCs|jddd�dS)Nr?sabcZ@ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad)r�)rNr#r#r$�test_case_sha256_16sz"HashLibTestCase.test_case_sha256_1cCs|jddd�dS)Nr?s8abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopqZ@248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1)r�)rNr#r#r$�test_case_sha256_2:sz"HashLibTestCase.test_case_sha256_2cCs|jdddd�dS)Nr?r�i@BZ@cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0)r�)rNr#r#r$�test_case_sha256_3?sz"HashLibTestCase.test_case_sha256_3cCs|jddd�dS)NrAr�Z@38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1daZ 274edebfe76f65fbd51ad2f14898b95bZ`38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b)r�)rNr#r#r$�test_case_sha384_0Dsz"HashLibTestCase.test_case_sha384_0cCs|jddd�dS)NrAsabcZ@cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bedZ 8086072ba1e7cc2358baeca134c825a7Z`cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7)r�)rNr#r#r$�test_case_sha384_1Isz"HashLibTestCase.test_case_sha384_1cCs|jddd�dS)NrAs8abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmns8hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstuZ@09330c33f71147e83d192fc782cd1b4753111b173b3b05d22fa08086e3b0f712Z fcc7c71a557e2db966c3e9fa91746039spabcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstuZ`09330c33f71147e83d192fc782cd1b4753111b173b3b05d22fa08086e3b0f712fcc7c71a557e2db966c3e9fa91746039)r�)rNr#r#r$�test_case_sha384_2Ns
z"HashLibTestCase.test_case_sha384_2cCs|jdddd�dS)NrAr�i@BZ@9d0e1809716474cb086e834e310a4a1ced149e9c00f248527972cec5704c2a5bZ 07b8b3dc38ecc4ebae97ddd87f3d8985Z`9d0e1809716474cb086e834e310a4a1ced149e9c00f248527972cec5704c2a5b07b8b3dc38ecc4ebae97ddd87f3d8985)r�)rNr#r#r$�test_case_sha384_3Usz"HashLibTestCase.test_case_sha384_3cCs|jddd�dS)NrCr�Z@cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ceZ@47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3eZ�cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e)r�)rNr#r#r$�test_case_sha512_0[sz"HashLibTestCase.test_case_sha512_0cCs|jddd�dS)NrCsabcZ@ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39aZ@2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49fZ�ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f)r�)rNr#r#r$�test_case_sha512_1`sz"HashLibTestCase.test_case_sha512_1cCs|jddd�dS)NrCs8abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmns8hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstuZ@8e959b75dae313da8cf4f72814fc143f8f7779c6eb9f7fa17299aeadb6889018Z@501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909spabcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstuZ�8e959b75dae313da8cf4f72814fc143f8f7779c6eb9f7fa17299aeadb6889018501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909)r�)rNr#r#r$�test_case_sha512_2es
z"HashLibTestCase.test_case_sha512_2cCs|jdddd�dS)NrCr�i@BZ@e718483d0ce769644e2e42c7bc15b4638e1f98b13b2044285632a803afa973ebZ@de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09bZ�e718483d0ce769644e2e42c7bc15b4638e1f98b13b2044285632a803afa973ebde0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b)r�)rNr#r#r$�test_case_sha512_3lsz"HashLibTestCase.test_case_sha512_3cCsB|j|j|�x"t|d�D]}|d|d�qWd|d}|jt||d�|j|j|�x"t|d�D]}|d|d�qjWd|d}	|jt||	d�|j|j|�x td|d�D]}||d�q�W|jt|dd�|jt|dd�|jt||dd�|j|j|�x$t|d�D]}|d|d��qWd|d}
|jt||
d�|j|�j�|dd�j��xtdd	�D]}||d
��qxW|jt|dd
�|jt|d	d
�xtdd	�D]}||d��q�W|jt|dd�|jt|dd�|jt|d	d�xtdd	�D]}||d��qW|jt|dd�|jt|d	d�x"td|d�D]}||d
��qLW|jt|dd
�|jt||dd
�|dd�|dd�|jt	|d d�|jt	|d!d�|dd�||d�|jt	|d"d�|jt	||dd�|jt
|dd�|jt
|dd�|jt
|d�|dddddddd	ddddd�dS)#Nr�r�)�salt)�person)r�r)�keyr�r�)�fanout)�depth)�
node_depth)�
inner_size)�	leaf_sizer�)�node_offset)r])�stringr�i�T)r�r�r�r�r�r�r�rr�r��	last_node���rrrrll��rlr)r�Z	SALT_SIZEr}r�r�ZPERSON_SIZEZMAX_DIGEST_SIZEZMAX_KEY_SIZEr�r�r�)rNr8Z	salt_sizeZperson_sizeZkey_sizer�Z
max_offsetr"r�r�r�r#r#r$�check_blake2qs�



zHashLibTestCase.check_blake2cCs�dd�}|dd�}xd|D]\}xV|D]N}|||�}|||�}	|||d�}
|j|
j��|||	|d�}|j|j��q"WqW|j�S)NcSsXd}d||@}d}t|�}x6t|�D]*}|||@}||}}|d?d@||<q&W|S)Nr�r�l�KZ=��ll��)�	bytearrayr})r�Zseed�maskr�r�outr"�tr#r#r$�selftest_seq�s
z4HashLibTestCase.blake2_rfc7693.<locals>.selftest_seqr�)r�)r�r�)rlr�r�)rNr8Zmd_lenZin_lenr
ZouterZoutlenZinlenZindatar�ZunkeyedZkeyedr#r#r$�blake2_rfc7693�s





zHashLibTestCase.blake2_rfc7693cCsN|jtjddddd�ddddg}ddd	d
ddg}|j|jtj||�d
�dS)Nr�r�r�r�r�r�rr�r��riZ@c23a7800d98123bd10f506c61e29da5603d763b8bbad2e737f5e765a7bccd475ll����)rrrr�r)rNZ
b2b_md_lenZ
b2b_in_lenr#r#r$�test_blake2b�szHashLibTestCase.test_blake2bcCs|jddd�dS)Nrr�Z@786a02f742015903c6c6fd852552d272912f4740e15847618a86e217f71f5419Z@d25e1031afee585313896444934eb04b903a685b1448b755d56f701afe9be2ceZ�786a02f742015903c6c6fd852552d272912f4740e15847618a86e217f71f5419d25e1031afee585313896444934eb04b903a685b1448b755d56f701afe9be2ce)r�)rNr#r#r$�test_case_blake2b_0�sz#HashLibTestCase.test_case_blake2b_0cCs|jddd�dS)NrsabcZ@ba80a53f981c4d0d6a2797b69f12f6e94c212f14685ac4b74b12bb6fdbffa2d1Z@7d87c5392aab792dc252d5de4533cc9518d38aa8dbf1925ab92386edd4009923Z�ba80a53f981c4d0d6a2797b69f12f6e94c212f14685ac4b74b12bb6fdbffa2d17d87c5392aab792dc252d5de4533cc9518d38aa8dbf1925ab92386edd4009923)r�)rNr#r#r$�test_case_blake2b_1�sz#HashLibTestCase.test_case_blake2b_1cCs*|jddddddddd	d
ddd
dd�dS)NrsfooZ 920568b0c5873b2f0ab67bedb6cf1b2br�sbarsbazsbingr�r�rr��rT)r�r�r�r�r�r�r�rr�r�r)r�)rNr#r#r$� test_case_blake2b_all_parameters�sz0HashLibTestCase.test_case_blake2b_all_parameterscCs8x2td�D]&\}}}tj|�}|jd|||d�q
WdS)Nr)r�)r3rr/r�)rN�msgr��mdr#r#r$�test_blake2b_vectors�s
z$HashLibTestCase.test_blake2b_vectorscCsN|jtjddddd�ddddg}dd	d
ddd
g}|j|jtj||�d�dS)N�r�r�r�r�r�r�rr�r��AriZ@6a411f08ce25adcdfb02aba641451cec53c598b24f4fc787fbdc88797f4c1dfell���)rrrr�r)rNZ
b2s_md_lenZ
b2s_in_lenr#r#r$�test_blake2sszHashLibTestCase.test_blake2scCs|jddd�dS)Nrr�Z@69217a3079908094e11121d042354a7c1f55b6482ca1a51e1b250dfd1ed0eef9)r�)rNr#r#r$�test_case_blake2s_0sz#HashLibTestCase.test_case_blake2s_0cCs|jddd�dS)NrsabcZ@508c5e8c327c14e2e1a72ba34eeb452f37458b209ed63a294d999b4c86675982)r�)rNr#r#r$�test_case_blake2s_1sz#HashLibTestCase.test_case_blake2s_1cCs*|jddddddddd	d
ddd
dd�dS)NrsfooZ bf2a8f7fe3c555012a6f8046e646bc75r�sbarsbazsbingr�r�rr�rrT)r�r�r�r�r�r�r�rr�r�r)r�)rNr#r#r$� test_case_blake2s_all_parameterssz0HashLibTestCase.test_case_blake2s_all_parameterscCs8x2td�D]&\}}}tj|�}|jd|||d�q
WdS)Nr)r�)r3rr/r�)rNrr�rr#r#r$�test_blake2s_vectors+s
z$HashLibTestCase.test_blake2s_vectorscCs|jddd�dS)Nrr�Z86b4e03423667dbb73b6e15454f0eb1abd4597f9a1b078e3f5b5a6bc7)r�)rNr#r#r$�test_case_sha3_224_02sz$HashLibTestCase.test_case_sha3_224_0cCs(x"td�D]\}}|jd||�q
WdS)Nr)r3r�)rNrrr#r#r$�test_case_sha3_224_vector7sz)HashLibTestCase.test_case_sha3_224_vectorcCs|jddd�dS)Nrr�Z@a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a)r�)rNr#r#r$�test_case_sha3_256_0<sz$HashLibTestCase.test_case_sha3_256_0cCs(x"td�D]\}}|jd||�q
WdS)Nr)r3r�)rNrrr#r#r$�test_case_sha3_256_vectorAsz)HashLibTestCase.test_case_sha3_256_vectorcCs|jddd�dS)Nrr�Z@0c63a75b845e4f7d01107d852e4c2485c51a50aaaa94fc61995e71bbee983a2aZ c3713831264adb47fb6bd1e058d5f004Z`0c63a75b845e4f7d01107d852e4c2485c51a50aaaa94fc61995e71bbee983a2ac3713831264adb47fb6bd1e058d5f004)r�)rNr#r#r$�test_case_sha3_384_0Fsz$HashLibTestCase.test_case_sha3_384_0cCs(x"td�D]\}}|jd||�q
WdS)Nr)r3r�)rNrrr#r#r$�test_case_sha3_384_vectorLsz)HashLibTestCase.test_case_sha3_384_vectorcCs|jddd�dS)Nrr�Z@a69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a6Z@15b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26Z�a69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26)r�)rNr#r#r$�test_case_sha3_512_0Qsz$HashLibTestCase.test_case_sha3_512_0cCs(x"td�D]\}}|jd||�q
WdS)Nr)r3r�)rNrrr#r#r$�test_case_sha3_512_vectorWsz)HashLibTestCase.test_case_sha3_512_vectorcCs$|jdddd�|jdddd�dS)Nrr�Z@7f9c2ba4e88f827d616045507605853ed73b8093f6efbc88eb1a6eacfa66ef26TZ7f9c)r�)rNr#r#r$�test_case_shake_128_0\sz%HashLibTestCase.test_case_shake_128_0cCs*x$td�D]\}}|jd||d�q
WdS)NrT)r3r�)rNrrr#r#r$�test_case_shake128_vectorcsz)HashLibTestCase.test_case_shake128_vectorcCs$|jdddd�|jdddd�dS)Nrr�Z@46b9dd2b0ba88d13233b3feb743eeb243fcd52ea62b81b82b50c27646ed5762fTZ46b9)r�)rNr#r#r$�test_case_shake_256_0hsz%HashLibTestCase.test_case_shake_256_0cCs*x$td�D]\}}|jd||d�q
WdS)NrT)r3r�)rNrrr#r#r$�test_case_shake256_vectorosz)HashLibTestCase.test_case_shake256_vectorcCs�d}y�xL|jD]B}|�}|jd�|jd|�|jd�|d|�}|jd�qWtj�}|jd�|jd|�|jd�|j|j�d�tjd|�}|j|j�d�Wntk
r�YnXdS)Ni�1�#�xZ(c45f7445ca0ea087d7a1758fbea07935f267c46aZ(63fda1efde982ba1ffe9d53035bff5c9ce4758fb)rxrlrr;r�r�r�)rNZgil_minsizer�r�r#r#r$�test_gilts(






zHashLibTestCase.test_gilz!Threading required for this test.c	s�tj��d}d}|d�tj�|�j�}��fdd�}g}xZt|�D]N}t��d|}|j|d�|j|t|�d�tj||fd�}|j	|�qFWx|D]}|j
�q�Wx|D]}|j�q�W|j|�j��dS)	Nr�sswineflui@
cs8d}x.|t��kr2�j�|||��||7}qWdS)Nr)r�rl)�
chunk_size�index)r]rSr#r$�hash_in_chunks�sz=HashLibTestCase.test_threaded_hashing.<locals>.hash_in_chunksrzr)�targetrr)rr;r�r}r�Z
assertGreaterr��	threadingZThread�append�start�join)	rNZnum_threadsZ
smallest_dataZ
expected_hashr1ZthreadsZ	threadnumr/Zthreadr#)r]rSr$�test_threaded_hashing�s&	


z%HashLibTestCase.test_threaded_hashingzNeeds FIPS mode.cCshxbtd�D]V}xPtjttjd�fD]:}|jt|�|jtt|dd��|j|dd�j�d�q"Wq
WdS)z=Make sure usedforsecurity flag isn't copied to other contextsr�rT)rVFr�N)	r}rrr	r\r�r�r�r�)rNr"r�r#r#r$�test_usedforsecurity_repeat�sz+HashLibTestCase.test_usedforsecurity_repeat)rrr;r<r=r>r?r@rArBrCrDrrrrrrrr)F)rrN)ir4�
__module__�__qualname__rirR�osrQ�COMPILED_WITH_PYDEBUGrIrMrhrPrTrq�propertyrxrZ
refcount_testr+ZskipIfr|r~r�r�r�r��
skipUnlessr�r�r�r�r�r�r�r�r��requires_blake2r��
requires_sha3r�r�r�r�r�r�r�r�r�r�r{�maxsizerrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*r.r3Zreap_threadsr7r8�
__classcell__r#r#)rsr$r:_s�	L	
#
,	
		
		O		
$r:c	@sbeZdZd6d7d8d:d;gZddddded
�fddddded�fddddded�fgZejd�dfejd�dfejd�dfejd�dfejd�dfgejd�dfejd�dfejd�dfejd�d fejd!�dfgejd"�dfejd#�dfejd$�dfejd%�d&fejd'�dfgd(�Zd)d*�Z	e
jd+�d,d-��Ze
j
eed.�d/�d0d1��Ze
j
eed2�d3�d4d5��ZdS)<�KDFTests�password�saltr�Nr���passwordPASSWORDpassword�$saltSALTsaltSALTsaltSALTsaltSALTsalt�	password�saltr�r�Z�77d6576238657b203b19ca42c18a0497f16b4844e3074ae8dfdffa3fede21442fcd0069ded0948f8326a753a0fc81f17e8d3e0fb2e0d3628cf35e20c38d18906sNaClirZ�fdbabe1c9d3472007856e7190d01e9fe7c6ad7cbc8237830e77376634b3731622eaf30d92e22a3886ff109279d9830dac727afb94a83ee6d8360cbdfa2cc0640s
pleaseletmeinsSodiumChloridei@Z�7023bdcb3afd7348461c06cd81fd38ebfda8fbba904f8e3ea9b543f6545da1f2d5432955613f0fcf62d49705242a9af9e61e85dc0d651e40dfcf017b45575887Z(0c60c80f961f0e71f3a9b524af6012062fe037a6Z(ea6c014dc72d6f8ccd1ed92ace1d41f0d8de8957Z(4b007901b765489abead49d926f721d065a429c1Z23d2eec4fe41c849b80c8d83662c0e44a8b291a964cf2f07038�Z 56fa6aa75548099dcc37d7f03425e0c3Z@120fb6cffcf8b32c43e7225256c4f837a86548c92ccc35480805987cb70be17bZ@ae4d0c95af6b46d32d0adff928f06dd02a303f8ef3c251dfd6e2d85a95474c43Z@c5e478d59288c841aa530db6845c4c8d962893a001ce4e11a4963873aa98134aZP348c89dbcbd32b2f32d814b8116e84cf2b17347ebc1800181c4e2a1fb8dd53e1c635518c7dac47e9�(Z 89b69d0516f829893c696226650a8687Z�867f70cf1ade02cff3752599a3a53dc4af34c7a669815ae5d513554e1c8cf252c02d470a285a0501bad999bfe943c08f050235d7d68b1da55e63f73b60a57fceZ�e1d9c16aa681708a45f5c7c4e215ceb66e011a2e9f0040713f18aefdb866d53cf76cab2868a39b9f7840edce4fef5a82be67335c77a6068e04112754f27ccf4eZ�d197b1b33db0143e018b12f3d1d1479e6cdebdcc97c5c0f87f6902e072f457b5143f30602641b3d55cd335988cb36b84376060ecd532e039b742a239434af2d5Z�8c0511f4c6e597c6ac6315d8f0362e225f3c501495ba23b868c005174dc4ee71115b59f9e60cd9532fa33e0f75aefe30225c583a186cd82bd4daea9724a3d3b8r�Z 9d9e9c4cd21fe4be24d5b8244c759665)r;r?rCc
Cs�x�|jj�D]�\}}x�t|j�D]�\}}|\}}}}	||\}
}|rH|}	||||||	�}|j||
|||||	f�||t|�t|�||	�}||t|�t|�||	�}|j||
�|	dkr |||||�}|j||
||||f�q WqW|jt|dddd�|jt|dddd�|jt	|dddd�|jt	|dddd
�|jt	|ddddd�|jt	|ddddd�|j
t	d	��|d
ddd�WdQRX|dddddd�}|j||jddd�dS)Nssha1spassssaltr�r;�passr�rzunsupported hash type�unknownspassword)r0�passwordr�Z
iterations�dklenrr)�pbkdf2_resultsrm�	enumerate�pbkdf2_test_vectorsr��
memoryviewr	r�r�r�ZassertRaisesRegex)
rNZpbkdf2Zdigest_name�resultsr"ZvectorrOr��roundsrP�expectedZoverwrite_dklenrr#r#r$�_test_pbkdf2_hmac�s:


zKDFTests._test_pbkdf2_hmacz9The python implementation of pbkdf2_hmac has been removedcCs|jtj�dS)N)rX�
py_hashlib�pbkdf2_hmac)rNr#r#r$�test_pbkdf2_hmac_pyszKDFTests.test_pbkdf2_hmac_pyrZz   test requires OpenSSL > 1.0cCs|jtj�dS)N)rXr|rZ)rNr#r#r$�test_pbkdf2_hmac_cszKDFTests.test_pbkdf2_hmac_c�scryptz   test requires OpenSSL > 1.1c
3CsXx:|jD]0\}}}}}}tj|||||d�}|j||�qWtjdddddd�|jt��tjdddddd�WdQRX|jt��tjdddddd�WdQRX|jt��tjd�WdQRX|jt��tjdd�WdQRX|jt��tjdddddd	�WdQRXx>dD]6}|jtttf��tjdd|ddd�WdQRX�qWx>dD]6}|jtttf��tjddd|dd�WdQRX�qVWx>dD]6}|jtttf��tjdddd|d�WdQRX�q�Wx@dD]8}|jtttf��tjddddd|d�WdQRX�q�Wx@dD]8}	|jtttf��tjddddd|	d�WdQRX�qWdS)N)r��nr!�pspasswordssaltr�rr�rOr�)r�r)r�r^r!r_�maxmem)r�r^r!r_rPr)rrr�Nr)rrNr)rrNr)rNr)rN)�scrypt_test_vectorsrr]r�r�r�r�r�)
rNrOr�r^r!r_rW�resultr`rPr#r#r$�test_scrypt#s>
$
$
$

zKDFTests.test_scrypt)rDrEr�N)rDrEr�N)rDrErFNr)rGrHrFr)rIrJrFr�)r4r9r:rSrrarr/rQrXr+�skipr[r>ror|r\rcr#r#r#r$rC�sN rC�__main__)/r�Zbinasciir�	functoolsrrFrur;r{r3rLr+rJr�rZtest.supportrrrrZhttp.clientrr	ror<r|rYrr
rMrjrXrhrUr>r?rgr@r%r(r3r9ZTestCaser:rCr4�mainr#r#r#r$�<module>	sh



		g