Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_hashlib.cpython-311.opt-1.pyc
�

�Ke���J�ddlZddlmZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
mZddlmZmZddlmZddlmZddlmZddlmZdd	lmZeed
��Zhd�Ze	jd��Ze�eZnDd
�e�d������ d��D��Zeddg���Z!eekreddg���Z"ndZ"	ddl#m$Z$m%Z%m&Z&m'Z'n#e($rdZ$dZ%e)��Z&d�Z'YnwxYw	ddl*Z*n
#e($rdZ*YnwxYwej+e*d��Z,ej-d���Z.ej+e.d��Z/d�Z0dZ1d�Z2Gd�dej3��Z4Gd�d ej3��Z5e6d!krej7��dSdS)"�N)�	unhexlify)�support)�_4G�
bigmemtest)�import_fresh_module)�	os_helper)�threading_helper)�warnings_helper)�
HTTPException�gettotalrefcount>�md5�sha1�sha3�blake2�sha256�sha512�PY_BUILTIN_HASHLIB_HASHESc�6�h|]}|�����S�)�strip)�.0�ms  �;/usr/local/apps/python3/lib/python3.11/test/test_hashlib.py�	<setcomp>r's-���������	�	�����"�,�hashlib�_hashlib)�fresh)�blocked)�HASH�HASHXOF�openssl_md_meth_names�
get_fips_modec��dS�Nrrrrrr%r%;s���qrzrequires _blake2T)�ubzrequires _sha3c�R�d}d}|D]}|||dz	dz||dzzz
}� |S)N�0123456789abcdef���r)�s�h�r�is    r�hexstrr2JsF���A�
�A�
�,�,��	�Q��Q��#�~�
��1�s�7��
+�+����Hrz(http://www.pythontest.net/hashlib/{}.txtc#�K�t�|��}	tj|d���}n<#tt
f$r(t
jd�|�����wxYw|5|D]j}|���}|�	d��s|s�.|�
d��}t�|d��|d<|V��k	ddd��dS#1swxYwYdS)Nzutf-8)�encodingzCould not retrieve {}�#rr)
�URL�formatr�open_urlresource�OSErrorr�unittest�SkipTestr�
startswith�split�bytes�fromhex)�	hash_name�url�testdata�line�partss     r�read_vectorsrEUsT����

�*�*�Y�
�
�C�E��+�C�'�B�B�B�����]�#�E�E�E��� 7� >� >�s� C� C�D�D�D�E����	����	�	�D��:�:�<�<�D����s�#�#�
�4�
���J�J�s�O�O�E��}�}�U�1�X�.�.�E�!�H��K�K�K�K�
	���������������������s�5�9A.�3A.C/�/C3�6C3c�@��eZdZdZddhZejdkpeZd�Z	�fd�Z
ed���Zed���Z
d	�Zd
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd`d�Zd�Zd�Zd�Zed���Ze d���Z!		dad�Z"d�Z#e d ���Z$d!�Z%e d"���Z&ed#���Z'd$�Z(d%�Z)d&�Z*e+j,e-j.e/d'zkd(��e0e/d'zd)d�*��d+�����Z1e+j,e-j.e/d)z
kd(��e0e/d)z
d)d�*��d,�����Z2d-�Z3d.�Z4d/�Z5d0�Z6d1�Z7d2�Z8d3�Z9d4�Z:d5�Z;d6�Z<d7�Z=d8�Z>d9�Z?d:�Z@d;�ZAd<�ZBd=�ZCd>�ZDd?�ZEd@�ZFdA�ZGdB�ZHedC���ZIedD���ZJedE���ZKedF���ZLedG���ZMedH���ZNedI���ZOedJ���ZPedK���ZQedL���ZRe dM���ZSe dN���ZTe dO���ZUe dP���ZVe dQ���ZWe dR���ZXe dS���ZYe dT���ZZdU�Z[dV�Z\dW�Z]dX�Z^dY�Z_e`jae`jb��dZ�����Zcd[�Zdeejfd\���Zge+jheidud]��d^���Zjd_�Zk�xZlS)b�HashLibTestCase)r
�MD5r�SHA1�sha224�SHA224r�SHA256�sha384�SHA384r�SHA512�blake2b�blake2s�sha3_224�sha3_256�sha3_384�sha3_512�	shake_128�	shake_256rVrW�posixc��	tj|��S#t$r1}|jr |tvrtjd|z��Yd}~nd}~wwxYwdS)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�errors   r�_conditional_import_modulez*HashLibTestCase._conditional_import_modulerst��	O��*�;�7�7�7��"�	O�	O�	O��-�
O�+��2O�2O��
�E��M�N�N�N����������	O�����ts��
A�'A�Ac�0���t��}�jD])}|�|������*��d��}|r|�ddh��i�_|D]5}tr|�d��r�t���j|<�6�j�	��D]H\}}|�tt|����d|fd�}|�|���I��d��}|�_|r���
t|d������
t|d�����j�	��D]L\}}t|d	|zd��}	|	r1	|	��|�|	���<#t$rY�HwxYw�M�fd
�}
��d��}|r|
d����d
��}|r|
d����d��}
|
r|
d��|
d����d��}|r|
d��|
d��|r|
d��|
d��tsY��d��}|rB|
d��|
d��|
d��|
d��|
d��|
d��t!t"���j|i|��dS)N�_blake2rPrQ�sha3_c�P�|�tj|fi|��Stj||fi|��S�N)r�new)�data�_alg�kwargss   r�_test_algorithm_via_hashlib_newzAHashLibTestCase.__init__.<locals>._test_algorithm_via_hashlib_new�s9���<�"�;�t�6�6�v�6�6�6��{�4��8�8��8�8�8rr�openssl_md5�openssl_sha1�openssl_c���ttd��|��}�j|�|��dS)N�__get_builtin_constructor)�getattrr�constructors_to_test�add)�name�constructorras  �r�add_builtin_constructorz9HashLibTestCase.__init__.<locals>.add_builtin_constructor�s?���G�'�'�+F�G�G��M�M�K��%�d�+�/�/��<�<�<�<�<r�_md5r
�_sha1r�_sha256rJr�_sha512rMr�_sha3rRrSrTrUrVrW)�set�supported_hash_namesrv�lowerrd�updateru�	SKIP_SHA3r<�itemsrtrr�
assertTrue�hasattr�
ValueError�superrG�__init__)ra�argsrm�
algorithms�	algorithmrf�constructorsrnrrxryrzr{r|r}r~�	__class__s`               �rr�zHashLibTestCase.__init__{s������U�U�
��2�	.�	.�I��N�N�9�?�?�,�,�-�-�-�-��1�1�)�<�<���	6����y�)�4�5�5�5�$&��!�#�	9�	9�I��
�Y�1�1�'�:�:�
��36�5�5�D�%�i�0�0�(,�'@�'F�'F�'H�'H�	>�	>�#�I�|����W�W�i�8�8�9�9�9�59�	�
9�
9�
9�
9�
���<�=�=�=�=��2�2�:�>�>�� ��
��	6�
�O�O�G�H�m�<�<�=�=�=��O�O�G�H�n�=�=�>�>�>�+/�+D�+J�+J�+L�+L�	
6�	
6�'�	�<�%�h�
�9�0D�d�K�K���6�6�#��
�
�
�
%�(�(��5�5�5�5��	&����������6�	=�	=�	=�	=�	=��.�.�v�6�6���	+�#�#�E�*�*�*��/�/��8�8���	,�#�#�F�+�+�+��1�1�)�<�<���	.�#�#�H�-�-�-�#�#�H�-�-�-��1�1�)�<�<���	.�#�#�H�-�-�-�#�#�H�-�-�-��	/�#�#�I�.�.�.�#�#�I�.�.�.��	5��3�3�G�<�<�E��
5�'�'�
�3�3�3�'�'�
�3�3�3�'�'�
�3�3�3�'�'�
�3�3�3�'�'��4�4�4�'�'��4�4�4�-��o�t�$�$�-�t�>�v�>�>�>�>�>s�*
G
�

G�Gc�r�|j���}tj�|��Sri)ru�values�	itertools�chain�
from_iterable)rar�s  r�hash_constructorsz!HashLibTestCase.hash_constructors�s,���0�7�7�9�9����,�,�\�:�:�:rc��t��Sri)r%�ras r�is_fips_modezHashLibTestCase.is_fips_mode�s�����rc���tjdtd����}|jD]G}||d���}|j|jvr|�d���3|����HdS)N�b�
F��usedforsecurity�)�array�ranger�rw�shakes�	hexdigest)ra�a�cons�cs    r�test_hash_arrayzHashLibTestCase.test_hash_array�sx���K��U�2�Y�Y�'�'���*�	�	�D���Q��.�.�.�A��v���$�$����B��������
�
�
�
�	�	rc�~�|�tjtd�|jD������dS)Nc3�BK�|]}|����|V��dSri)�islower)r�_algos  r�	<genexpr>z=HashLibTestCase.test_algorithms_guaranteed.<locals>.<genexpr>�sB����&�&�%��]�]�_�_�&��&�&�&�&�&�&r)�assertEqualr�algorithms_guaranteedrr�r�s r�test_algorithms_guaranteedz*HashLibTestCase.test_algorithms_guaranteed�sT������6��&�&�4�#<�&�&�&�
&�
&�	'�	'�	'�	'�	'rc�"�|�ttj���tj����|�dtj��tjD]}tj|d���}�dS)N�	undefinedFr�)r�rrr��issubset�algorithms_available�assertNotInrj)rarw�digests   r�test_algorithms_availablez)HashLibTestCase.test_algorithms_available�s�������G�9�:�:�$�H�W�%A�B�B�	D�	D�	D�	
����g�&B�C�C�C��0�	>�	>�D��[��u�=�=�=�F�F�	>�	>rc��tjdd���|jr|�d��|jD]}|d���|dd����tjdd���tjd���|j�9|j�dd���|j�d���dSdS)NrTr�zskip in FIPS moderr
)rrjr��skipTestr�r
rro�rar�s  r�test_usedforsecurity_truez)HashLibTestCase.test_usedforsecurity_true�s�����H�d�3�3�3�3���	/��M�M�-�.�.�.��*�	,�	,�D��D��&�&�&�&��D��d�+�+�+�+�+���E�4�0�0�0�0���D�)�)�)�)��=�$��M���e�T��:�:�:��M�%�%�d�%�;�;�;�;�;�%�$rc�N�tjdd���|jD]}|d���|dd����tjdd���tjd���|j�9|j�dd���|j�d���dSdS)NrFr�rr
)rrjr�r
rror�s  r�test_usedforsecurity_falsez*HashLibTestCase.test_usedforsecurity_false�s�����H�e�4�4�4�4��*�	-�	-�D��D��'�'�'�'��D��e�,�,�,�,�,���E�5�1�1�1�1���E�*�*�*�*��=�$��M���e�U��;�;�;��M�%�%�e�%�<�<�<�<�<�%�$rc��|�ttjd��|�ttjd��dS)Nzspam spam spam spam spam�)�assertRaisesr�rrj�	TypeErrorr�s r�test_unknown_hashz!HashLibTestCase.test_unknown_hash�s=�����*�g�k�3M�N�N�N����)�W�[�!�4�4�4�4�4rc�`�|�tjd��jd��dS)NrLr)r�rrjrwr�s r�test_new_upper_to_lowerz'HashLibTestCase.test_new_upper_to_lowers+�������X�.�.�3�X�>�>�>�>�>rc��ttd��}ttd��}|�t|d��	ddl}n%#t
$r|�d��YnwxYwdtjd<|�	��	|�t|d��dt��vr|tjd<n@tjd=n2#dt��vr|tjd<n
tjd=wxYw|�t|d��|d��}|�||j
��|�t|��d	dg��dS)
Nrs�__builtin_constructor_cache�testrz_md5 module not availablerzr
�rH)rtrr�r�rz�ImportErrorr��sys�modules�clear�localsr��assertIsr
r��sorted)ra�get_builtin_constructor�builtin_constructor_cacherzrxs     r�test_get_builtin_constructorz,HashLibTestCase.test_get_builtin_constructors���")�'�*E�#G�#G��$+�G�,I�%K�%K�!����*�&=�v�F�F�F�	7��K�K�K�K���	7�	7�	7��M�M�5�6�6�6�6�6�	7����#���F��!�'�'�)�)�)�	(����j�*A�5�I�I�I�����!�!�&*���F�#�#��K��'�'������!�!�&*���F�#�#��K��'�'�'�'�'����)�%<�a�@�@�@�-�-�e�4�4���
�
�k�4�8�,�,�,����� 9�:�:�U�E�N�K�K�K�K�Ks�A
�
A/�.A/�C � /Dc�*�|jD�]	}|d���}|j|jvrx|�|�d��t
��|�t|�d����|�d������|�|���t
��|�t|�����|�������dS)NFr�r�)	r�rwr��assertIsInstancer�r>r�r2r��rar�r/s   r�test_hexdigestzHashLibTestCase.test_hexdigest s����*�	D�	D�D���U�+�+�+�A��v���$�$��%�%�a�h�h�r�l�l�E�:�:�:�� � ��������!5�!5�q�{�{�2���G�G�G�G��%�%�a�h�h�j�j�%�8�8�8�� � �����
�
�!3�!3�Q�[�[�]�]�C�C�C�C�	D�	Drc	�z�d}|jD]�}|d���}|j|jvr�t�t	|t��r�:|j|jfD]g}|�t|d��|D]F}|�ttf��5||��ddd��n#1swxYwY�G�h��dS)N)i l��l
ll����l
Fr�i����)
r�rwr�r"�
isinstancer�r�r�r��
OverflowError)ra�large_sizesr�r/r��lengths      r�test_digest_length_overflowz+HashLibTestCase.test_digest_length_overflow*s$��L���*�	'�	'�D���U�+�+�+�A��v�T�[�(�(����J�q�$�$7�$7����(�A�K�/�
'�
'���!�!�*�f�c�:�:�:�)�'�'�F��*�*�J�
�+F�G�G�'�'���v����'�'�'�'�'�'�'�'�'�'�'����'�'�'�'��'�
'�	'�	's�B-	�-B1
�4B1
c��|jD]�}|d���}|�|jt��|j|jvr!|�|j|j��n |�|j|j��|�|jtj	|jd���j����dS)NFr�)
r�r�rw�strr��assertInr�r�rrjr�s   r�test_name_attributez#HashLibTestCase.test_name_attribute:s����*�
	�
	�D���U�+�+�+�A��!�!�!�&�#�.�.�.��v��2�2�2��
�
�a�f�d�&?�@�@�@�@�� � ����)B�C�C�C��������A�F�E�:�:�:�?�
�
�
�
�
	�
	rc�@�d}d}d}d}|jD�]�}|d���}|�|��|�|��|�|��|�|��|j|jvrd}nd}|d���}|�||z|z|z��|�|j|�|j|���|||z|z|zd���}	|�|j|�|	j|���|||z|zd���}
|
j|�}|
���}|�|��|�|j|�|j|���|�|
j|�|�����dS)	Ns�aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbs~ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccsddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddFr�)r�r)r�r�rwr�r�r��copy)
ra�aas�bees�cees�deesr��m1r��m2�m3�m4�	m4_digest�m4_copys
             r�test_large_updatez!HashLibTestCase.test_large_updateGs������������*�	:�	:�D���e�,�,�,�B��I�I�c�N�N�N��I�I�d�O�O�O��I�I�d�O�O�O��I�I�d�O�O�O��w�$�+�%�%��������e�,�,�,�B��I�I�c�D�j�4�'�$�.�/�/�/����Y�R�Y��-�y�r�y�$�/?�@�@�@���c�D�j�4�'�$�.��F�F�F�B����Y�R�Y��-�y�r�y�$�/?�@�@�@���c�D�j�4�'��?�?�?�B�!��	�4�(�I��g�g�i�i�G��N�N�4� � � ����Y�R�Y��-�~�w�~�t�/D�E�E�E����Y�R�Y��-�y�9�9�9�9�1	:�	:rFc���t|��dz}|���}|j|}|�t|��d��|D]�}||fi|��}	|s|	���n|	�|��}
|�|
|d|||
t|��|fz��|s|	���n|	�|��}
t�|��}|�|
|��|s(|�t|��|	j	����|s.|�
d���|�|||��dSdSdS)N�zrHash algorithm %s constructed using %s returned hexdigest %r for %d byte input data that should have hashed to %r.�key)�lenr�ru�assertGreaterEqualr�r�r�r>r?�digest_size�get�check_file_digest)rarwrkr��shakermr�r��hash_object_constructorr�computedr�s            r�checkzHashLibTestCase.checkgs����Y����"���O�O�%�%�	��0��6������L� 1� 1�1�5�5�5�'3�
	=�
	=�#�'�'��7�7��7�7�A�,1�J�q�{�{�}�}�}�q�{�{�6�7J�7J�H�����i�P��4���T���I�7�7�
8�
8�
8�*/�D�q�x�x�z�z�z�A�H�H�V�4D�4D�H��]�]�9�-�-�F����X�v�.�.�.��
=�� � ��V���a�m�<�<�<���	:����E�*�*�2��"�"�4��y�9�9�9�9�9�	:�	:�2�2rc��|���}	tj|��n#t$rYdSwxYw|g}|�|j|��t
tjd��5}|�	|��ddd��n#1swxYwY	|D]�}tj|��}|�d��|�
tj||�����|��t
tjd��5}tj||��}ddd��n#1swxYwY|�
|���|����	t!jtj��dS#t!jtj��wxYw)N�wbr�rb)r�rrjr��extendru�openr�TESTFN�write�io�BytesIO�seekr��file_digestr��os�unlink)	rarwrkr��digests�fr��buf�	digestobjs	         rr�z!HashLibTestCase.check_file_digest�s$���O�O�%�%�	�	��K��������	�	�	��F�F�	�����&�����t�0��6�7�7�7�
�)�"�D�
)�
)�	�Q�
�G�G�D�M�M�M�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	(�!�
C�
C���j��&�&���������� � ��'��V�4�4�>�>�@�@�)�����)�*�D�1�1�?�Q� '� 3�A�v� >� >�I�?�?�?�?�?�?�?�?�?�?�?����?�?�?�?�� � ��!4�!4�!6�!6�	�B�B�B�B�
C�
�I�i�&�'�'�'�'�'��B�I�i�&�'�'�'�'���sO�+�
9�9�9B�B�"B�'BF �)E�?F �E	�F �E	�,F �  Gc�b�|j|}|D]}|�t|d���dS)N�spam)rur�r�)ra�algorithm_namer�r�s    r�check_no_unicodez HashLibTestCase.check_no_unicode�sI���0��@��'3�	J�	J�#����i�)@�&�I�I�I�I�	J�	Jrc��|�d��|�d��|�d��|�d��|�d��|�d��dS)Nr
rrJrrMr�rr�s r�test_no_unicodezHashLibTestCase.test_no_unicode�s������e�$�$�$����f�%�%�%����h�'�'�'����h�'�'�'����h�'�'�'����h�'�'�'�'�'rc�Z�|�d��|�d��dS)NrPrQr
r�s r�test_no_unicode_blake2z&HashLibTestCase.test_no_unicode_blake2�s0�����i�(�(�(����i�(�(�(�(�(rc��|�d��|�d��|�d��|�d��|�d��|�d��dS)NrRrSrTrUrVrWr
r�s r�test_no_unicode_sha3z$HashLibTestCase.test_no_unicode_sha3�s������j�)�)�)����j�)�)�)����j�)�)�)����j�)�)�)����k�*�*�*����k�*�*�*�*�*rrNc��|j|}|D�]{}|d���}|�|j|��|�|j|��|rp|�t	|�|����|��|�t	|�|����d|z��nm|�t	|�����|��|�t	|�����d|z��|�|j|��|�|�	d��dt|������}dS)NFr�r��_r)rur��
block_sizer�r�r�r�rwr�r=�repr)rarwrr��
digest_lengthr�r�rs        r�check_blocksize_namez$HashLibTestCase.check_blocksize_name�st���0��6��'3�	7�	7�#�'�'��>�>�>�A����Q�\�:�6�6�6����Q�]�K�8�8�8��
D�� � ��Q�X�X�m�%<�%<�!=�!=�!.�0�0�0�� � ��Q�[�[��%?�%?�!@�!@�!"�=��2�2�2�2�� � ��Q�X�X�Z�Z���+�>�>�>�� � ��Q�[�[�]�]�!3�!3�Q�{�]�C�C�C����Q�V�T�*�*�*��M�M�$�*�*�S�/�/�!�,�d�1�g�g�6�6�6�6�	7�	7rc��|�ddd��|�ddd��|�ddd��|�ddd	��|�d
dd��|�d
dd��dS)Nr
�@r�r�rJ�r� rM��0r�rr�s r�test_blocksize_namez#HashLibTestCase.test_blocksize_name�s����!�!�%��R�0�0�0��!�!�&�"�b�1�1�1��!�!�(�B��3�3�3��!�!�(�B��3�3�3��!�!�(�C��4�4�4��!�!�(�C��4�4�4�4�4rc��|�ddd��|�ddd��|�ddd	��|�d
dd��|�d
ddd��|�dddd��dS)NrR�rrS�rrT�hrrU�HrrV�rrWr r�s r�test_blocksize_name_sha3z(HashLibTestCase.test_blocksize_name_sha3�s����!�!�*�c�2�6�6�6��!�!�*�c�2�6�6�6��!�!�*�c�2�6�6�6��!�!�*�b�"�5�5�5��!�!�+�s�A�r�:�:�:��!�!�+�s�A�r�:�:�:�:�:rc�L�|j|}|D]�}|��}t�t|t��r�)|�||zd��|�|j|��|�|j|��|�|j|����dS)Ni@)rur"r�r��_capacity_bits�
_rate_bits�_suffix)rarw�capacity�rate�suffixr�r�rs        r�
check_sha3zHashLibTestCase.check_sha3�s����0��6��'3�	0�	0�#�'�'�)�)�A���J�q�$�$7�$7������X��_�d�3�3�3����Q�-�x�8�8�8����Q�\�4�0�0�0����Q�Y��/�/�/�/�	0�	0rc�&�|�dddd��|�dddd��|�dd	d
d��|�ddd
d��|�dddd��|�dddd��dS)NrRi�i��rS�i@rTii@rU�i@rV�i@�rW)r0r�s r�test_extra_sha3zHashLibTestCase.test_extra_sha3�s������
�C��w�7�7�7����
�C��w�7�7�7����
�C��g�6�6�6����
�D�#�w�7�7�7�����S�$��8�8�8�����S�$��8�8�8�8�8rc�b�|�ddd��|�ddd��dS)NrPrrrQrr r�s r�test_blocksize_name_blake2z*HashLibTestCase.test_blocksize_name_blake2�s8���!�!�)�S�"�5�5�5��!�!�)�R��4�4�4�4�4rc�8�|�dddd���dS)Nr
r� d41d8cd98f00b204e9800998ecf8427eFr��r�r�s r�test_case_md5_0zHashLibTestCase.test_case_md5_0�s2���
�
��3�:�!�	�	
�	
�	
�	
�	
rc�8�|�dddd���dS)Nr
�abc� 900150983cd24fb0d6963f7d28e17f72Fr�r<r�s r�test_case_md5_1zHashLibTestCase.test_case_md5_1�s2���
�
��6�=�!�	�	
�	
�	
�	
�	
rc�8�|�dddd���dS)Nr
s>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789� d174ab98d277d9f5a5611c2c9f419d9fFr�r<r�s r�test_case_md5_2zHashLibTestCase.test_case_md5_2s3���
�
��M�.�!�		�	
�	
�	
�	
�	
r�z!test cannot run on 32-bit systemsr�)�size�memuse�dry_runc�:�|�dd|zd��dS)Nr
�A� c9af2dff37468ce5dfee8f2cfc0a9c6dr<�rarFs  r�test_case_md5_hugez"HashLibTestCase.test_case_md5_huge�%��	
�
�
�5�$�t�)�%G�H�H�H�H�Hrc�:�|�dd|zd��dS)Nr
rJ� 28138d306ff1b8281f1a9067e1a1a2b3r<rLs  r�test_case_md5_uintmaxz%HashLibTestCase.test_case_md5_uintmax
rNrc�4�|�ddd��dS)Nrr�(da39a3ee5e6b4b0d3255bfef95601890afd80709r<r�s r�test_case_sha1_0z HashLibTestCase.test_case_sha1_0s)���
�
�6�3�=�	?�	?�	?�	?�	?rc�4�|�ddd��dS)Nrr?�(a9993e364706816aba3e25717850c26c9cd0d89dr<r�s r�test_case_sha1_1z HashLibTestCase.test_case_sha1_1s)���
�
�6�6�=�	?�	?�	?�	?�	?rc�4�|�ddd��dS)Nr�8abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq�(84983e441c3bd26ebaae4aa1f95129e5e54670f1r<r�s r�test_case_sha1_2z HashLibTestCase.test_case_sha1_2s*���
�
�6�N�=�	?�	?�	?�	?�	?rc�:�|�dddzd��dS)Nr�a�@B�(34aa973cd4c4daa4f61eeb2bdbad27316534016fr<r�s r�test_case_sha1_3z HashLibTestCase.test_case_sha1_3#s-���
�
�6�4�'�>�=�	?�	?�	?�	?�	?rc�4�|�ddd��dS)NrJr�8d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42fr<r�s r�test_case_sha224_0z"HashLibTestCase.test_case_sha224_0,s.���
�
�8�S�
D�	F�	F�	F�	F�	Frc�4�|�ddd��dS)NrJr?�823097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7r<r�s r�test_case_sha224_1z"HashLibTestCase.test_case_sha224_10s.���
�
�8�V�
D�	F�	F�	F�	F�	Frc�4�|�ddd��dS)NrJrY�875388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525r<r�s r�test_case_sha224_2z"HashLibTestCase.test_case_sha224_24s/���
�
�8�
E�
D�	F�	F�	F�	F�	Frc�:�|�dddzd��dS)NrJr]r^�820794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67r<r�s r�test_case_sha224_3z"HashLibTestCase.test_case_sha224_39s2���
�
�8�T�G�^�
D�	F�	F�	F�	F�	Frc�4�|�ddd��dS)Nrr�@e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855r<r�s r�test_case_sha256_0z"HashLibTestCase.test_case_sha256_0>s.���
�
�8�S�
L�	N�	N�	N�	N�	Nrc�4�|�ddd��dS)Nrr?�@ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015adr<r�s r�test_case_sha256_1z"HashLibTestCase.test_case_sha256_1Bs.���
�
�8�V�
L�	N�	N�	N�	N�	Nrc�4�|�ddd��dS)NrrY�@248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1r<r�s r�test_case_sha256_2z"HashLibTestCase.test_case_sha256_2Fs/���
�
�8�
E�
L�	N�	N�	N�	N�	Nrc�:�|�dddzd��dS)Nrr]r^�@cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0r<r�s r�test_case_sha256_3z"HashLibTestCase.test_case_sha256_3Ks2���
�
�8�T�G�^�
L�	N�	N�	N�	N�	Nrc�4�|�ddd��dS)NrMr�`38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95br<r�s r�test_case_sha384_0z"HashLibTestCase.test_case_sha384_0Ps+���
�
�8�S�-�	.�	.�	.�	.�	.rc�4�|�ddd��dS)NrMr?�`cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7r<r�s r�test_case_sha384_1z"HashLibTestCase.test_case_sha384_1Us+���
�
�8�V�-�	.�	.�	.�	.�	.rc�4�|�ddd��dS)NrM�pabcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu�`09330c33f71147e83d192fc782cd1b4753111b173b3b05d22fa08086e3b0f712fcc7c71a557e2db966c3e9fa91746039r<r�s r�test_case_sha384_2z"HashLibTestCase.test_case_sha384_2Zs/���
�
�8�O�-�	.�	.�	.�	.�	.rc�:�|�dddzd��dS)NrMr]r^�`9d0e1809716474cb086e834e310a4a1ced149e9c00f248527972cec5704c2a5b07b8b3dc38ecc4ebae97ddd87f3d8985r<r�s r�test_case_sha384_3z"HashLibTestCase.test_case_sha384_3as/���
�
�8�T�G�^�-�	.�	.�	.�	.�	.rc�4�|�ddd��dS)Nrrڀcf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3er<r�s r�test_case_sha512_0z"HashLibTestCase.test_case_sha512_0gs1���
�
�8�S�M�	N�	N�	N�	N�	Nrc�4�|�ddd��dS)Nrr?ڀddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49fr<r�s r�test_case_sha512_1z"HashLibTestCase.test_case_sha512_1ls1���
�
�8�V�M�	N�	N�	N�	N�	Nrc�4�|�ddd��dS)Nrr�ڀ8e959b75dae313da8cf4f72814fc143f8f7779c6eb9f7fa17299aeadb6889018501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909r<r�s r�test_case_sha512_2z"HashLibTestCase.test_case_sha512_2qs5���
�
�8�O�M�	N�	N�	N�	N�	Nrc�:�|�dddzd��dS)Nrr]r^ڀe718483d0ce769644e2e42c7bc15b4638e1f98b13b2044285632a803afa973ebde0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09br<r�s r�test_case_sha512_3z"HashLibTestCase.test_case_sha512_3xs5���
�
�8�T�G�^�M�	N�	N�	N�	N�	Nrc�Z	�|�|j|��t|dz��D]}|d|z����d|dzz}|�t||���|�|j|��t|dz��D]}|d|z����d|dzz}	|�t||	���|�|j|��td|dz��D]}||����|�t|d���|�t|d���|�t||dz���|�|j|��t|dz��D]}|d|z����d|dzz}
|�t||
���|�|�����|d	��������tdd
��D]}||����|�t|d���|�t|d
���tdd
��D]}||����|�t|d���|�t|d���|�t|d
���tdd
��D]}||�
���|�t|d�
��|�t|d
�
��td|dz��D]}||����|�t|d���|�t||dz���|d���|d���|�t|d���|�t|d���|d���||���|�t|d���|�t||dz���|�t|d	���|�t|d	���|�t|d��|d	d	d	d	dddd
dddd���dS)Nr�r]��salt)�person�r����r�r�rr5)�fanout)�depth)�
node_depth)�
inner_size)�	leaf_size���l)�node_offset)rk)�stringr+�r3�T)r�r�r�r�r�r�r�r�r�r��	last_node)r��	SALT_SIZEr�r�r��PERSON_SIZE�MAX_DIGEST_SIZE�MAX_KEY_SIZEr�r�r�)rarx�	salt_size�person_size�key_sizer��
max_offsetr1r�r�r�s           r�check_blake2zHashLibTestCase.check_blake2}sT������.�	�:�:�:��y�1�}�%�%�	'�	'�A��K�T�A�X�&�&�&�&�&��y�1�}�%�����*�k���=�=�=�����0�+�>�>�>��{�1�}�%�%�	)�	)�A��K�t�a�x�(�(�(�(�(���q��)�����*�k�&��A�A�A�����4�k�B�B�B��q�+��/�*�*�	'�	'�A��K�A�&�&�&�&�&����*�k�r��B�B�B����*�k�q��A�A�A����*�k�{�1�}��M�M�M�����1�8�<�<�<��x��z�"�"�	&�	&�A��K�D�1�H�%�%�%�%�%��h��l�#�����*�k�s��;�;�;��������0�0�2�2�$���-�-�-�7�7�9�9�	;�	;�	;��q�#���	"�	"�A��K�q�!�!�!�!�!����*�k�"��=�=�=����*�k�#��>�>�>��q�#���	!�	!�A��K�a� � � � � ����*�k���<�<�<����*�k���;�;�;����*�k���=�=�=��q�#���	&�	&�A��K�1�%�%�%�%�%����*�k�b��A�A�A����*�k�c��B�B�B��q�+��/�*�*�	&�	&�A��K�1�%�%�%�%�%����*�k�b��A�A�A����*�k�k�!�m��L�L�L���a� � � � ���i�(�(�(�(����*�k�R��@�@�@����-����F�F�F����"�"�"�"���
�+�+�+�+����*�k�r��B�B�B����-��*�Q�,��O�O�O����)�[�s��;�;�;����)�[���=�=�=����)�[�"�5�5�5���������������
	
�
	
�
	
�
	
�
	
�
	
rc�^�d�}|d���}|D]�}|D]�}|||��}|||��}	|||���}
|�|
�����|||	|���}|�|���������|���S)Nc��d}d|z|z}d}t|��}t|��D]}||z|z}||}}|dz	dz||<�|S)Nr�l�KZ=r���)�	bytearrayr�)r��seed�maskr�r��outr1�ts        r�selftest_seqz4HashLibTestCase.blake2_rfc7693.<locals>.selftest_seq�sl���D��d�"�d�*�A��A��F�#�#�C��6�]�]�
*�
*����U�d�N���!�1���r�'�T�)��A����Jrrr�)r�r�)r�r�r�)rarx�md_len�in_lenr��outer�outlen�inlen�indatar��unkeyed�keyeds            r�blake2_rfc7693zHashLibTestCase.blake2_rfc7693�s���		�		�		����+�+�+���	-�	-�F��
-�
-��%��e�U�3�3��"�l�6�6�2�2��%�+�f�&�A�A�A�����W�^�^�-�-�.�.�.�#��F���H�H�H�����U�\�\�^�^�,�,�,�,�

-���� � � rc���|�tjddddd��gd�}gd�}|�|�tj||��d��dS)Nr�rl����)rrrr)rr�r�r�r4�@c23a7800d98123bd10f506c61e29da5603d763b8bbad2e737f5e765a7bccd475)r�rrPr�r�)ra�
b2b_md_len�
b2b_in_lens   r�test_blake2bzHashLibTestCase.test_blake2b�sy�����'�/�2�r�2�r�9�E�E�E�%�%�%�
�0�0�0�
����������Z�H�H�N�	P�	P�	P�	P�	Prc�4�|�ddd��dS)NrPrڀ786a02f742015903c6c6fd852552d272912f4740e15847618a86e217f71f5419d25e1031afee585313896444934eb04b903a685b1448b755d56f701afe9be2cer<r�s r�test_case_blake2b_0z#HashLibTestCase.test_case_blake2b_0�s1���
�
�9�c�M�	N�	N�	N�	N�	Nrc�4�|�ddd��dS)NrPr?ڀba80a53f981c4d0d6a2797b69f12f6e94c212f14685ac4b74b12bb6fdbffa2d17d87c5392aab792dc252d5de4533cc9518d38aa8dbf1925ab92386edd4009923r<r�s r�test_case_blake2b_1z#HashLibTestCase.test_case_blake2b_1�s1���
�
�9�f�M�	N�	N�	N�	N�	Nrc�L�|�ddddddddd	d
ddd
d���dS)NrP�foo� 920568b0c5873b2f0ab67bedb6cf1b2br��bar�baz�bingr�r�r,rE�r�T�r�r�r�r�r�r�r�r�r�r�r�r<r�s r� test_case_blake2b_all_parametersz0HashLibTestCase.test_case_blake2b_all_parameters��Q��	
�
�
�9�f�
,������������	�	�	�	�	�	rc��td��D]9\}}}t�|��}|�d|||����:dS)NrPr��rEr>r?r��ra�msgr��mds    r�test_blake2b_vectorsz$HashLibTestCase.test_blake2b_vectors	�W��(��3�3�	4�	4�L�C��b��-�-��$�$�C��J�J�y�#�r�s�J�3�3�3�3�	4�	4rc���|�tjddddd��gd�}gd�}|�|�tj||��d��dS)N�rl���)r�rrr)rr�r�Ar�r4�@6a411f08ce25adcdfb02aba641451cec53c598b24f4fc787fbdc88797f4c1dfe)r�rrQr�r�)ra�
b2s_md_len�
b2s_in_lens   r�test_blake2szHashLibTestCase.test_blake2ssy�����'�/�1�a��R��C�C�C�%�%�%�
�.�.�.�
����������Z�H�H�N�	P�	P�	P�	P�	Prc�4�|�ddd��dS)NrQr�@69217a3079908094e11121d042354a7c1f55b6482ca1a51e1b250dfd1ed0eef9r<r�s r�test_case_blake2s_0z#HashLibTestCase.test_case_blake2s_0s.���
�
�9�c�
L�	N�	N�	N�	N�	Nrc�4�|�ddd��dS)NrQr?�@508c5e8c327c14e2e1a72ba34eeb452f37458b209ed63a294d999b4c86675982r<r�s r�test_case_blake2s_1z#HashLibTestCase.test_case_blake2s_1s.���
�
�9�f�
L�	N�	N�	N�	N�	Nrc�L�|�ddddddddd	d
ddd
d���dS)NrQr�� bf2a8f7fe3c555012a6f8046e646bc75r�r�r�r�r�r�r,rEr�r�Tr�r<r�s r� test_case_blake2s_all_parametersz0HashLibTestCase.test_case_blake2s_all_parameters"r�rc��td��D]9\}}}t�|��}|�d|||����:dS)NrQr�r�r�s    r�test_blake2s_vectorsz$HashLibTestCase.test_blake2s_vectors4r�rc�4�|�ddd��dS)NrRr�86b4e03423667dbb73b6e15454f0eb1abd4597f9a1b078e3f5b5a6bc7r<r�s r�test_case_sha3_224_0z$HashLibTestCase.test_case_sha3_224_0:s.���
�
�:�s�
D�	F�	F�	F�	F�	Frc�^�td��D]\}}|�d||���dS)NrR�rEr��rar�r�s   r�test_case_sha3_224_vectorz)HashLibTestCase.test_case_sha3_224_vector?�@��#�J�/�/�	,�	,�G�C���J�J�z�3��+�+�+�+�	,�	,rc�4�|�ddd��dS)NrSr�@a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434ar<r�s r�test_case_sha3_256_0z$HashLibTestCase.test_case_sha3_256_0Ds.���
�
�:�s�
L�	N�	N�	N�	N�	Nrc�^�td��D]\}}|�d||���dS)NrSr�r�s   r�test_case_sha3_256_vectorz)HashLibTestCase.test_case_sha3_256_vectorIr�rc�4�|�ddd��dS)NrTr�`0c63a75b845e4f7d01107d852e4c2485c51a50aaaa94fc61995e71bbee983a2ac3713831264adb47fb6bd1e058d5f004r<r�s r�test_case_sha3_384_0z$HashLibTestCase.test_case_sha3_384_0Ns+���
�
�:�s�-�	.�	.�	.�	.�	.rc�^�td��D]\}}|�d||���dS)NrTr�r�s   r�test_case_sha3_384_vectorz)HashLibTestCase.test_case_sha3_384_vectorTr�rc�4�|�ddd��dS)NrUrڀa69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26r<r�s r�test_case_sha3_512_0z$HashLibTestCase.test_case_sha3_512_0Ys1���
�
�:�s�M�	N�	N�	N�	N�	Nrc�^�td��D]\}}|�d||���dS)NrUr�r�s   r�test_case_sha3_512_vectorz)HashLibTestCase.test_case_sha3_512_vector_r�rc�f�|�dddd��|�dddd��dS)NrVr�@7f9c2ba4e88f827d616045507605853ed73b8093f6efbc88eb1a6eacfa66ef26T�7f9cr<r�s r�test_case_shake_128_0z%HashLibTestCase.test_case_shake_128_0d�B���
�
�;��
L�
�	�	�	�	
�
�
�;��V�T�2�2�2�2�2rc�`�td��D]\}}|�d||d���dS)NrVTr�r�s   r�test_case_shake128_vectorz)HashLibTestCase.test_case_shake128_vectorj�B��#�K�0�0�	3�	3�G�C���J�J�{�C��T�2�2�2�2�	3�	3rc�f�|�dddd��|�dddd��dS)NrWr�@46b9dd2b0ba88d13233b3feb743eeb243fcd52ea62b81b82b50c27646ed5762fT�46b9r<r�s r�test_case_shake_256_0z%HashLibTestCase.test_case_shake_256_0nr
rc�`�td��D]\}}|�d||d���dS)NrWTr�r�s   r�test_case_shake256_vectorz)HashLibTestCase.test_case_shake256_vectortr
rc��d}|jD]u}|d���}|�d��|�d|z��|�d��|d|zd���}|�d���vtj��}|�d��|�d|z��|�d��|�|���d��tjdd|zzdz��}|�|���d��dS)NiFr��1�#�x�@1cfceca95989f51f658e3f3ffe7f1cd43726c9e088c13ee10b46f57cef135b94)r�r�rrr�r�)ra�gil_minsizer�rs    r�test_gilzHashLibTestCase.test_gilxsD�����*�	�	�D���U�+�+�+�A�
�H�H�T�N�N�N�
�H�H�T�K�'�(�(�(�
�H�H�T�N�N�N���T�K�'��?�?�?�A�
�H�H�T�N�N�N�N��N����	�������	�����#�$�$�$�	����������
�K�K�M�M�N�	
�	
�	
�

�N�4�$��"4�4�t�;�<�<�����
�K�K�M�M�N�	
�	
�	
�	
�	
rc�v�	�
�tj���
d}d}|dz�	tj�	|z�����}�	�
fd�}g}t|��D]}t	�	��d|zz}|�|d��|�|t	|��zd��tj||f���}|�	|����|D]}|�
���|D]}|����|�|�
�����dS)NrEsswineflui@
c���d}|t���kr:���|||z���||z
}|t���k�8dSdSr')r�r�)�
chunk_size�indexrk�hashers  ��r�hash_in_chunksz=HashLibTestCase.test_threaded_hashing.<locals>.hash_in_chunks�sc����E��#�d�)�)�#�#��
�
�d�5���);�#;�<�=�=�=���#���#�d�)�)�#�#�#�#�#�#rr�r)�targetr�)rrr�r�r��
assertGreaterr��	threading�Thread�append�start�join)ra�num_threads�
smallest_data�
expected_hashr �threads�	threadnumr�threadrkrs         @@r�test_threaded_hashingz%HashLibTestCase.test_threaded_hashing�se�����������#�
��v�%����T�+�%5�6�6�@�@�B�B�
�	$�	$�	$�	$�	$�	$����{�+�+�	#�	#�I��T���r�Y��7�J����z�1�-�-�-����Z�#�m�*<�*<�<�a�@�@�@��%�^�,6�=�:�:�:�F��N�N�6�"�"�"�"��	�	�F��L�L�N�N�N�N��	�	�F��K�K�M�M�M�M������(8�(8�(:�(:�;�;�;�;�;rc�R�|j}|�|�|t��dSdSri)r�r��int)ra�	fips_modes  r�test_get_fips_modez"HashLibTestCase.test_get_fips_mode�s4���%�	�� ��!�!�)�S�1�1�1�1�1�!� rc	�R�|j���D]�\}}|�d��r�|D]n}	|��}n#t$rY�wxYw|�|���5tj|t|����ddd��n#1swxYwY�o��dS)N)rgr��blake)rx)rur�r<r��subTestr�check_disallow_instantiation�type)rar�r�rxr/s     r�test_disallow_instantiationz+HashLibTestCase.test_disallow_instantiation�s*��'+�'@�'F�'F�'H�'H�	H�	H�#�I�|��#�#�$?�@�@�
��+�
H�
H���#��
�
�A�A��!�����H������\�\�k�\�:�:�H�H��8��t�A�w�w�G�G�G�H�H�H�H�H�H�H�H�H�H�H����H�H�H�H��

H�	H�	Hs#�
A�
A�A�+#B�B�!Bz
need _hashlibc�n�tj|t��tj|t��dSri)rr6r"r#r�s r� test_hash_disallow_instantiationz0HashLibTestCase.test_hash_disallow_instantiation�s0��	�,�T�4�8�8�8��,�T�7�;�;�;�;�;rc	�p�|j���D]�\}}|D]�}	t|����}n#t$rY�'wxYw|�|���5|�td��5d|_ddd��n#1swxYwYddd��n#1swxYwY����dS)N)�	hash_typezimmutable typeF)rur�r7r�r5�assertRaisesRegexr��value)rar�r�rxr<s     r�test_readonly_typesz#HashLibTestCase.test_readonly_types�sZ��'+�'@�'F�'F�'H�'H�
	0�
	0�#�I�|�+�
0�
0��� $�[�[�]�]� 3� 3�I�I��!�����H������\�\�I�\�6�6�0�0��/�/�	�;K�L�L�0�0�*/�	��0�0�0�0�0�0�0�0�0�0�0����0�0�0�0�0�0�0�0�0�0�0�0�0�0�0����0�0�0�0��

0�
	0�
	0sE�<�
A	�A	�"B)�>B	�B)�B
�B)�B
�B)�)B-�0B-)F)rrN)m�__name__�
__module__�__qualname__r�r�rrw�COMPILED_WITH_PYDEBUGr]rdr��propertyr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr�requires_blake2r�
requires_sha3rrr!r(r0r7r9r=rArDr:�skipIfr��maxsizerrrMrQrTrWr[r`rcrfrirlrorrrurxr{r~r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr	rrrrr	�reap_threads�requires_working_threadingr.r2r�cpython_onlyr8�
skipUnlessr"r:r?�
__classcell__)r�s@rrGrGes��������7���;�
'�F�!#��7� 2� K�6K�����K?�K?�K?�K?�K?�Z�;�;��X�;�����X�����'�'�'�
>�>�>�<�<�<�	=�	=�	=�5�5�5�?�?�?�L�L�L�4D�D�D�'�'�'� ���:�:�:�@:�:�:�:�2(�(�(�4J�J�J�(�(�(��)�)��_�)��+�+��]�+�DE�+/�7�7�7�7�&5�5�5��;�;��]�;�
0�
0�
0��9�9��]�9��5�5��_�5�
�
�
�
�
�
�
�
�
��X�_�S�[�3��7�*�,O�P�P��Z�S�1�W�Q��6�6�6�I�I�7�6�Q�P�I��X�_�S�[�3��7�*�,O�P�P��Z�S�1�W�Q��6�6�6�I�I�7�6�Q�P�I�?�?�?�?�?�?�?�?�?�
?�?�?�F�F�F�F�F�F�F�F�F�
F�F�F�
N�N�N�N�N�N�N�N�N�
N�N�N�
.�.�.�
.�.�.�
.�.�.�.�.�.�N�N�N�
N�N�N�
N�N�N�N�N�N�
M
�M
�M
�^!�!�!�,�P�P��_�P��N�N��_�N�
�N�N��_�N�
����_��"�4�4��_�4�
�P�P��_�P��N�N��_�N��N�N��_�N�����_��"�4�4��_�4�
�F�F��]�F��,�,��]�,��N�N��]�N��,�,��]�,��.�.��]�.�
�,�,��]�,��N�N��]�N�
�,�,��]�,�3�3�3�3�3�3�3�3�3�3�3�3�
�
�
�:�"�0��0�2�2�!<�!<�3�2�#�"�!<�F2�2�2�

��
H�
H���
H��X���T�)�?�;�;�<�<�<�;�<�
0�0�0�0�0�0�0rrGc
�4�eZdZgd�Zddddded��fdddd	ded
��fddd
d	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#�Z	e
jedud$��d%���Z
e
jeed&��d'��d(���Ze
jeed)��d*��e
je��d+�,��d-�����Zd.�Zd/�ZdS)0�KDFTests))�password�saltr�N)rPrQr�N)rPrQ�N)spasswordPASSWORDpasswords$saltSALTsaltSALTsaltSALTsaltSALTsaltrRr�)s	passwordssaltrRr�rr�r�ڀ77d6576238657b203b19ca42c18a0497f16b4844e3074ae8dfdffa3fede21442fcd0069ded0948f8326a753a0fc81f17e8d3e0fb2e0d3628cf35e20c38d18906rPsNaClr4r�ڀfdbabe1c9d3472007856e7190d01e9fe7c6ad7cbc8237830e77376634b3731622eaf30d92e22a3886ff109279d9830dac727afb94a83ee6d8360cbdfa2cc0640s
pleaseletmeinsSodiumChloridei@ڀ7023bdcb3afd7348461c06cd81fd38ebfda8fbba904f8e3ea9b543f6545da1f2d5432955613f0fcf62d49705242a9af9e61e85dc0d651e40dfcf017b45575887�(0c60c80f961f0e71f3a9b524af6012062fe037a6N�(ea6c014dc72d6f8ccd1ed92ace1d41f0d8de8957�(4b007901b765489abead49d926f721d065a429c1�23d2eec4fe41c849b80c8d83662c0e44a8b291a964cf2f07038�� 56fa6aa75548099dcc37d7f03425e0c3�@120fb6cffcf8b32c43e7225256c4f837a86548c92ccc35480805987cb70be17b�@ae4d0c95af6b46d32d0adff928f06dd02a303f8ef3c251dfd6e2d85a95474c43�@c5e478d59288c841aa530db6845c4c8d962893a001ce4e11a4963873aa98134a�P348c89dbcbd32b2f32d814b8116e84cf2b17347ebc1800181c4e2a1fb8dd53e1c635518c7dac47e9�(� 89b69d0516f829893c696226650a8687ڀ867f70cf1ade02cff3752599a3a53dc4af34c7a669815ae5d513554e1c8cf252c02d470a285a0501bad999bfe943c08f050235d7d68b1da55e63f73b60a57fceڀe1d9c16aa681708a45f5c7c4e215ceb66e011a2e9f0040713f18aefdb866d53cf76cab2868a39b9f7840edce4fef5a82be67335c77a6068e04112754f27ccf4eڀd197b1b33db0143e018b12f3d1d1479e6cdebdcc97c5c0f87f6902e072f457b5143f30602641b3d55cd335988cb36b84376060ecd532e039b742a239434af2d5ڀ8c0511f4c6e597c6ac6315d8f0362e225f3c501495ba23b868c005174dc4ee71115b59f9e60cd9532fa33e0f75aefe30225c583a186cd82bd4daea9724a3d3b8r� 9d9e9c4cd21fe4be24d5b8244c759665)rrrc���|j���D�]\}}||vr�t|j��D]�\}}|\}}}	}
||\}}|r|}
|||||	|
��}
|�|
|||||	|
f��||t|��t|��|	|
��}
|�|
|��||t
|��t
|��|	|
��}
|�|
|��|
�)|||||	��}
|�|
|||||	f�����|�td��5|dddd��ddd��n#1swxYwYd|vr�|�	t|dddd��|�	t|ddd	d��|�	t|dddd
��|�	t|dddd��|�	t|ddddd
��|�	t|ddddd��|ddddd�
��}
|�|
|jdd
d
��dSdS)Nz.*unsupported.*�unknownspassrQr�rssha1�passr�rr�rP)r@�passwordr��
iterations�dklen)�pbkdf2_resultsr��	enumerate�pbkdf2_test_vectorsr��
memoryviewr�r=r�r�r�)ra�pbkdf2�	supported�digest_name�resultsr1�vectorrjr��roundsrl�expected�overwrite_dklenr�s              r�_test_pbkdf2_hmaczKDFTests._test_pbkdf2_hmacsf��$(�$7�$=�$=�$?�$?�	L�	L� �K���)�+�+��&�t�'?�@�@�
L�
L�	��6�06�-��$���,3�A�J�)��/�"�,�+�E��f�[�(�D�&�%�H�H��� � ��h�"-�x��v�u�!M�O�O�O��f�[�*�X�*>�*>�'��-�-�v�u�>�>��� � ��h�/�/�/��f�[�)�H�*=�*=�&�t�_�_�f�e�=�=��� � ��h�/�/�/��=� �&��h��f�E�E�C��$�$�S�(�&1�8�T�6�%J�L�L�L��!
L�&�
#�
#�J�0A�
B�
B�	3�	3��F�9�g�w��2�2�2�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3��Y�������6�7�G�W�a�
�
�
�
����6�6�6�6�1�
�
�
�
����F�F�G�W�a�
�
�
�
����F�F�G�W�b�
�
�
�
����F�F�G�W�a��
�
�
�
����F�F�G�W�a��
�
�
��&�6�K�g��D�*�*�*�C����S�$�"5�f�"=�a�"@��"C�D�D�D�D�D�+�s�E!�!E%�(E%ztest requires builtin_hashlibc��tj��5|�tjt
��ddd��dS#1swxYwYdSri)r
�check_warningsry�builtin_hashlib�pbkdf2_hmacr^r�s r�test_pbkdf2_hmac_pyzKDFTests.test_pbkdf2_hmac_pyMs���
�
+�
-�
-�	�	��"�"��+�^�
�
�
�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�&A�A�Ar}z   test requires OpenSSL > 1.0c�P�|�tjt��dSri)ry�openssl_hashlibr}r$r�s r�test_pbkdf2_hmac_czKDFTests.test_pbkdf2_hmac_cTs$��	
����:�<Q�R�R�R�R�Rr�scryptz   test requires OpenSSL > 1.1zscrypt is blocked in FIPS mode)�reasonc
�:�|jD]8\}}}}}}tj|||||���}|�||���9tjddddd���|�t
��5tjddddd���ddd��n#1swxYwY|�t
��5tjddddd���ddd��n#1swxYwY|�t
��5tjd��ddd��n#1swxYwY|�t
��5tjdd��ddd��n#1swxYwY|�t
��5tjddddd�	��ddd��n#1swxYwYd
D]Z}|�ttt
f��5tjdd|dd���ddd��n#1swxYwY�[dD]Z}|�ttt
f��5tjddd|d���ddd��n#1swxYwY�[dD]Z}|�ttt
f��5tjdddd|���ddd��n#1swxYwY�[dD][}|�ttt
f��5tjddddd|�
��ddd��n#1swxYwY�\dD][}	|�ttt
f��5tjddddd|	���ddd��n#1swxYwY�\dS)N)r��nr0�prPrQr�r�r�rjr�r�)r�rr�N)r�rN)r�N)r�r�r0r��maxmem)r�r�r0r�rl)�scrypt_test_vectorsrr�r�r�r�r�r�)
rarjr�r�r0r�rw�resultr�rls
          r�test_scryptzKDFTests.test_scryptYsy��26�1I�	/�	/�-�H�d�A�q�!�X��^�H�4�1��Q�G�G�G�F����V�X�.�.�.�.�	��{��A��a�@�@�@�@�
�
�
�y�
)�
)�	D�	D��N�:�G�q�A��C�C�C�C�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D�
�
�
�y�
)�
)�	D�	D��N�;�V�q�A��C�C�C�C�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D��
�
�y�
)�
)�	(�	(��N�;�'�'�'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�
�
�
�y�
)�
)�	1�	1��N�;��0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�
�
�
�y�
)�
)�	?�	?��N�;��1�a�g�>�>�>�>�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�!�	I�	I�A��"�"�J�
�y�#I�J�J�
I�
I���{��A��a�H�H�H�H�
I�
I�
I�
I�
I�
I�
I�
I�
I�
I�
I����
I�
I�
I�
I���	I�	I�A��"�"�J�
�y�#I�J�J�
I�
I���{��A��a�H�H�H�H�
I�
I�
I�
I�
I�
I�
I�
I�
I�
I�
I����
I�
I�
I�
I���	I�	I�A��"�"�J�
�y�#I�J�J�
I�
I���{��A��a�H�H�H�H�
I�
I�
I�
I�
I�
I�
I�
I�
I�
I�
I����
I�
I�
I�
I�� �	.�	.�F��"�"�J�
�y�#I�J�J�
.�
.���{��A��a�&,�.�.�.�.�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.����
.�
.�
.�
.�� �	,�	,�E��"�"�J�
�y�#I�J�J�
,�
,���{��A��a�%*�,�,�,�,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,����
,�
,�
,�
,��	,�	,s��4B�B�!B�?C%�%C)�,C)�
D+�+D/�2D/�E2�2E6�9E6�F=�=G�G�3H�H	� H	�I6�6I:	�=I:	�-K�K	�K	�
L1�1L5	�8L5	�(N�N	�N	c��|�dtj��|�dtj��dS)N�
blake2b512zsha3-512)r�rr�r�s r�test_normalized_namezKDFTests.test_normalized_name�s:������w�'C�D�D�D�����W�%A�B�B�B�B�Brc��ddz}tj��}|�tjt
j��tt
jd��5}td��D],}|�	|��|�
|���-	ddd��n#1swxYwYtt
jd��5}tj|tj��}ddd��n#1swxYwY|�|�
��|�
����|�|j|j��|�t!|��t!|����|�t$��5tjdd��ddd��n#1swxYwY|�t$��5tt
jd��5}tj|d��ddd��n#1swxYwYddd��n#1swxYwY|�t$��5tt
jd��5}tj|d��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nr]ir�r�r�rr0)rr�
addCleanuprrrr�r�r�r�r�rr�r�rwr�r7r�r�)rark�d1rr�d2s      r�test_file_digestzKDFTests.test_file_digest�s����e�|��
�^�
�
������	�9�#3�4�4�4�
�)�"�D�
)�
)�	�Q��2�Y�Y�
�
���	�	�$��������
�
�
�
�
�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�)�"�D�
)�
)�	8�Q��$�Q���7�7�B�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8�	
�������������8�8�8������"�'�*�*�*��
�
�d�2�h�h��R���)�)�)�
�
�
�z�
*�
*�	0�	0����h�/�/�/�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0��
�
�z�
*�
*�	1�	1��i�&��,�,�
1���#�A�x�0�0�0�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1����
1�
1�
1�
1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1��
�
�z�
*�
*�	1�	1��i�&��-�-�
1���#�A�x�0�0�0�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1����
1�
1�
1�
1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1s��=B'�'B+�.B+� C8�8C<�?C<�'G	�	G
�G
�.I�	H+�I�+H/	�/I�2H/	�3I�I�	I�'J<�J$�J<�$J(	�(J<�+J(	�,J<�<K�K)r@rArBrorr�r>r?rmryr:rGr|r~rLr�r�r�rr%r�r�r�rrrrOrO�sv������	�	�	��

�c�2�q�!�Y�Y�(j�k�k�	l�	�g�t�Q��I�I�7y�-z�-z�	{�	�,�e�Q��9�9�FH�<I�<I�	J����]�]�E�
F�
F��M�
�]�]�E�
F�
F��M�
�]�]�E�
F�
F��M�
�]�]�&�'�'�(*�
,�
�]�]�=�
>�
>��E�H��]�]�>�?�?�@D�
F�
�]�]�>�?�?�@D�
F�
�]�]�>�?�?�@D�
F��]�]�J�K�K�LN�
P�
�]�]�=�
>�
>��E�H��]�]�>�?�?�@D�
F��]�]�>�?�?�@D�
F��]�]�>�?�?�@D�
F��]�]�>�?�?�@B�
D��]�]�=�
>�
>��E�
H�-$�$�N�L/E�/E�/E�b�X�_�_��,�.M�N�N���O�N���X�����-�@�@�5�7�7�S�S�7�7�S��X�����(�3�3�5�7�7��X�_�]�]�_�_�-M�N�N�N�#,�#,�O�N�7�7�#,�JC�C�C�1�1�1�1�1rrO�__main__)8r��binasciirrrZr�r�rr��	sysconfigr#r:r_r�r�test.supportrr�test.support.import_helperrrr	r
�http.clientrr�rC�default_builtin_hashes�get_config_varr^rr�r=r�r|rr"r#r$r%r��	frozensetrfrLrE�check_sanitizerr�rFr2r6rE�TestCaserGrOr@�mainrrr�<module>r�s��
������������������	�	�	�	�����	�	�	�	�
�
�
�
�����������������������(�(�(�(�(�(�(�(�:�:�:�:�:�:�"�"�"�"�"�"�)�)�)�)�)�)�(�(�(�(�(�(�%�%�%�%�%�%� ���%7�8�8��O�N�N��)��)�*E�F�F����+�N�N���)�/�/��4�4�:�:�<�<�B�B�3�G�G����N�&�%�i�
�|�D�D�D���+�+�+�)�)�)�j�\�J�J�J�O�O��O��L�L�L�L�L�L�L�L�L�L�L�L�L�������D��G�%�I�K�K�������������N�N�N�N�������G�G�G�����&�(�%�g�/A�B�B��
$�G�#�t�,�,�,�	�#��#�	�M�3C�D�D�
�
�
�
�1��
�
�
� {
0�{
0�{
0�{
0�{
0�h�'�{
0�{
0�{
0�|{1�{1�{1�{1�{1�x� �{1�{1�{1�|�z����H�M�O�O�O�O�O��s$�.C;�;D�D�D�D'�&D'