
    <e                     J   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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 d d	lmZ  eed
          Zh dZ e	j        d          ZeeZnDd e                    d                                                               d          D             Z eddg          Z!eek    r eddg          Z"ndZ"	 d dl#m$Z$m%Z%m&Z&m'Z' n# e($ r dZ$dZ% e)            Z&d Z'Y nw xY w	 d dl*Z*n# e($ r dZ*Y nw xY w ej+        e*d          Z, ej-        d          Z. ej+        e. d          Z/d Z0dZ1d Z2 G d dej3                  Z4 G d d ej3                  Z5e6d!k    r ej7                     dS dS )"    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/lib/python3.11/test/test_hashlib.py	<setcomp>r   '   s-       		      ",hashlib_hashlib)fresh)blocked)HASHHASHXOFopenssl_md_meth_namesget_fips_modec                      dS Nr   r   r   r   r   r%   r%   ;   s    qr   zrequires _blake2T)ubzrequires _sha3c                     t          | t                    sJ t          |                       d}d}| D ]}|||dz	  dz           ||dz           z   z  } |S )N0123456789abcdef       )
isinstancebytesrepr)shris       r   hexstrr5   J   sj    a((a(((A
A , ,	QQ#~1s7++Hr   z(http://www.pythontest.net/hashlib/{}.txtc              #     K   t                               |           }	 t          j        |d          }n<# t          t
          f$ r( t          j        d                    |                    w xY w|5  |D ]j}|                                }|	                    d          s|s.|
                    d          }t                              |d                   |d<   |V  k	 d d d            d S # 1 swxY w Y   d S )Nzutf-8)encodingzCould not retrieve {}#r   r   )URLformatr   open_urlresourceOSErrorr   unittestSkipTestr   
startswithsplitr/   fromhex)	hash_nameurltestdatalinepartss        r   read_vectorsrG   U   sT     
**Y

CE+C'BBB]# E E E 7 > >s C CDDDE	   	 	D::<<Ds## 4 JJsOOE}}U1X..E!HKKKK	                 s   5 9A.3A.C//C36C3c                   @    e Zd ZdZddhZej        dk    peZd Z	 fdZ
ed             Zed             Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd`dZd Zd Zd Zed             Ze d             Z!	 	 dadZ"d Z#e d              Z$d! Z%e d"             Z&ed#             Z'd$ Z(d% Z)d& Z* e+j,        e-j.        e/d'z   k     d(           e0e/d'z   d)d*          d+                         Z1 e+j,        e-j.        e/d)z
  k     d(           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 ZHedC             ZIedD             ZJedE             ZKedF             ZLedG             ZMedH             ZNedI             ZOedJ             ZPedK             ZQedL             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`ja         e`jb                    dZ                         Zcd[ Zdeejf        d\             Zg e+jh        eidud]          d^             Zjd_ Zk xZlS )bHashLibTestCase)r   MD5r   SHA1sha224SHA224r   SHA256sha384SHA384r   SHA512blake2bblake2ssha3_224sha3_256sha3_384sha3_512	shake_128	shake_256rX   rY   posixc                     	 t          j        |          S # t          $ r1}| j        r |t          v rt          j        d|z             Y d}~nd}~ww xY wdS )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_moduler   st    	O*;777" 	O 	O 	O- O+2O2OEMNNN	O ts    
A'AAc                 0    t                      } j        D ])}|                    |                                           *                     d          }|r|                    ddh           i  _        |D ]5}t          r|                    d          rt                       j        |<   6 j        	                                D ]H\  }}|                    t          t          |                     d |fd}|                    |           I                     d          }| _        |r                     t          |d                                          t          |d                      j        	                                D ]L\  }}t          |d	|z   d           }	|	r1	  |	             |                    |	           <# t          $ r Y Hw xY wM fd
}
                     d          }|r |
d                                d          }|r |
d                                d          }|r |
d            |
d                                d          }|r |
d            |
d           |r |
d            |
d           t          sY                     d          }|rB |
d            |
d            |
d            |
d            |
d            |
d            t!          t"                     j        |i | d S )N_blake2rR   rS   sha3_c                 P    | t          j        |fi |S t          j        || fi |S N)r   new)data_algkwargss      r   _test_algorithm_via_hashlib_newzAHashLibTestCase.__init__.<locals>._test_algorithm_via_hashlib_new   s9    <";t66v666{488888r   r   openssl_md5openssl_sha1openssl_c                      t          t          d          |           }j        |                              |           d S )N__get_builtin_constructor)getattrr   constructors_to_testadd)nameconstructorrc   s     r   add_builtin_constructorz9HashLibTestCase.__init__.<locals>.add_builtin_constructor   s?    G''+FGGMMK%d+//<<<<<r   _md5r   _sha1r   _sha256rL   r   _sha512rO   r   _sha3rT   rU   rV   rW   rX   rY   )setsupported_hash_namesrx   lowerrf   updaterw   	SKIP_SHA3r?   itemsrv   r   r   
assertTruehasattr
ValueErrorsuperrI   __init__)rc   argsro   
algorithms	algorithmrh   constructorsrp   r   rz   r{   r|   r}   r~   r   r   	__class__s   `               r   r   zHashLibTestCase.__init__{   s   UU
2 	. 	.INN9??,,----11)<< 	6y)4555$&!# 	9 	9I Y11':: 3655D%i00 (,'@'F'F'H'H 	> 	>#I|WWi8899959	 9 9 9 9 <====22:>>  	6 OOGHm<<===OOGHn==>>>+/+D+J+J+L+L 	6 	6'	<%h
90Dd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3G<<E 5''
333''
333''
333''
333''444''444-ot$$-t>v>>>>>s   *
G


GGc                 r    | j                                         }t          j                            |          S rk   )rw   values	itertoolschainfrom_iterable)rc   r   s     r   hash_constructorsz!HashLibTestCase.hash_constructors   s,    07799,,\:::r   c                     t                      S rk   )r%   rc   s    r   is_fips_modezHashLibTestCase.is_fips_mode   s    r   c                     t          j         dt          d                    }| j        D ]G} ||d          }|j        | j        v r|                    d           3|                                 Hd S )Nb
   Fusedforsecurity   )arrayranger   ry   shakes	hexdigest)rc   aconscs       r   test_hash_arrayzHashLibTestCase.test_hash_array   sx    KU2YY''* 	 	DQ...Av$$B	 	r   c                 ~    |                      t          j        t          d | j        D                                  d S )Nc              3   B   K   | ]}|                                 |V  d S rk   )islower)r   _algos     r   	<genexpr>z=HashLibTestCase.test_algorithms_guaranteed.<locals>.<genexpr>   sB       & &%]]__& & & & & & &r   )assertEqualr   algorithms_guaranteedr   r   r   s    r   test_algorithms_guaranteedz*HashLibTestCase.test_algorithms_guaranteed   sT    6 & &4#< & & & & &	' 	' 	' 	' 	'r   c                 "   |                      t          t          j                                      t          j                             |                     dt          j                   t          j        D ]}t          j        |d          }d S )N	undefinedFr   )r   r   r   r   issubsetalgorithms_availableassertNotInrl   )rc   ry   digests      r   test_algorithms_availablez)HashLibTestCase.test_algorithms_available   s    G9::$HW%ABB	D 	D 	D 	g&BCCC0 	> 	>D[u===FF	> 	>r   c                    t          j        dd           | j        r|                     d           | j        D ]} |d            |dd           t          j        dd           t          j        d           | j        9| j                            dd           | j                            d           d S d S )Nr   Tr   zskip in FIPS moder   r   )r   rl   r   skipTestr   r   r   rq   rc   r   s     r   test_usedforsecurity_truez)HashLibTestCase.test_usedforsecurity_true   s    Hd3333 	/MM-...* 	, 	,DD&&&&Dd+++++E40000D))))=$MeT:::M%%d%;;;;; %$r   c                 N   t          j        dd           | j        D ]} |d            |dd           t          j        dd           t          j        d           | j        9| j                            dd           | j                            d           d S d S )Nr   Fr   r   r   )r   rl   r   r   r   rq   r   s     r   test_usedforsecurity_falsez*HashLibTestCase.test_usedforsecurity_false   s    He4444* 	- 	-DD''''De,,,,,E51111E****=$MeU;;;M%%e%<<<<< %$r   c                     |                      t          t          j        d           |                      t          t          j        d           d S )Nzspam spam spam spam spam   )assertRaisesr   r   rl   	TypeErrorr   s    r   test_unknown_hashz!HashLibTestCase.test_unknown_hash   s=    *gk3MNNN)W[!44444r   c                 `    |                      t          j        d          j        d           d S )NrN   r   )r   r   rl   ry   r   s    r   test_new_upper_to_lowerz'HashLibTestCase.test_new_upper_to_lower  s+    X..3X>>>>>r   c                    t          t          d          }t          t          d          }|                     t          |d           	 dd l}n%# t
          $ r |                     d           Y nw xY wd t          j        d<   |	                                 	 |                     t          |d           dt                      v r|t          j        d<   n@t          j        d= n2# dt                      v r|t          j        d<   nt          j        d= w xY w|                     t          |d            |d          }|                     ||j                   |                     t          |          d	dg           d S )
Nru   __builtin_constructor_cachetestr   z_md5 module not availabler|   r      rJ   )rv   r   r   r   r|   ImportErrorr   sysmodulesclearlocalsr   assertIsr   r   sorted)rc   get_builtin_constructorbuiltin_constructor_cacher|   rz   s        r   test_get_builtin_constructorz,HashLibTestCase.test_get_builtin_constructor  s   ")'*E#G #G$+G,I%K %K!*&=vFFF	7KKKK 	7 	7 	7MM566666	7 #F!'')))	(j*A5III!!&*F##K'' !!&*F##K''''')%<a@@@--e44k48,,, 9::UENKKKKKs   A A/.A/C   /Dc                 *   | j         D ]	} |d          }|j        | j        v rx|                     |                    d          t
                     |                     t          |                    d                    |                    d                     |                     |                                t
                     |                     t          |                                          |                                           d S )NFr   r   )	r   ry   r   assertIsInstancer   r/   r   r5   r   rc   r   r2   s      r   test_hexdigestzHashLibTestCase.test_hexdigest   s    * 	D 	DDU+++Av$$%%ahhrllE:::  !5!5q{{2GGGG%%ahhjj%888  

!3!3Q[[]]CCCC	D 	Dr   c           	      z   d}| j         D ]} |d          }|j        | j        vrt          t	          |t                    r:|j        |j        fD ]g}|                     t          |d           |D ]F}|                     t          t          f          5   ||           d d d            n# 1 swxY w Y   Ghd S )N)i    l    l   
    l            l    l   
        Fr   i)
r   ry   r   r"   r.   r   r   r   r   OverflowError)rc   large_sizesr   r2   r   lengths         r   test_digest_length_overflowz+HashLibTestCase.test_digest_length_overflow*  s$   L* 	' 	'DU+++AvT[((Jq$$7$7(AK/ ' '!!*fc:::) ' 'F**J+FGG ' 'v' ' ' ' ' ' ' ' ' ' ' ' ' ' '''	' 	's   B-	-B14B1c                    | j         D ]} |d          }|                     |j        t                     |j        | j        v r!|                     |j        | j                   n |                     |j        | j                   |                     |j        t          j	        |j        d          j                   d S )NFr   )
r   r   ry   strr   assertInr   r   r   rl   r   s      r   test_name_attributez#HashLibTestCase.test_name_attribute:  s    * 
	 
	DU+++A!!!&#...v222afd&?@@@@  )BCCCAFE:::?   
	 
	r   c                 @   d}d}d}d}| j         D ]} |d          }|                    |           |                    |           |                    |           |                    |           |j        | j        v rd}nd} |d          }|                    ||z   |z   |z              |                      |j        |  |j        |             |||z   |z   |z   d          }	|                      |j        |  |	j        |             |||z   |z   d          }
 |
j        | }|
                                }|                    |           |                      |j        |  |j        |            |                      |
j        | |           d S )	Ns   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas   bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbs~   ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccs   ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddFr   )r   r   )r   r   ry   r   r   r   copy)rc   aasbeesceesdeesr   m1r   m2m3m4	m4_digestm4_copys                r   test_large_updatez!HashLibTestCase.test_large_updateG  s   * 	: 	:De,,,BIIcNNNIIdOOOIIdOOOIIdOOOw$+%%e,,,BIIcDj4'$.///YRY-yry$/?@@@cDj4'$.FFFBYRY-yry$/?@@@ cDj4'???B!	4(IggiiGNN4   YRY-~w~t/DEEEYRY-y99991	: 	:r   Fc                    t          |          dz  }|                                }| j        |         }|                     t          |          d           |D ]} ||fi |}	|s|	                                n|	                    |          }
|                     |
|d|||
t          |          |fz             |s|	                                n|	                    |          }
t                              |          }|                     |
|           |s(|                     t          |          |	j	                   |s.|
                    d          |                     |||           d S d S d S )N   zrHash algorithm %s constructed using %s returned hexdigest %r for %d byte input data that should have hashed to %r.key)lenr   rw   assertGreaterEqualr   r   r   r/   rA   digest_sizegetcheck_file_digest)rc   ry   rm   r   shakero   r   r   hash_object_constructorr   computedr   s               r   checkzHashLibTestCase.checkg  s   Y"OO%%	06L 1 11555'3 	= 	=#''7777A,1Jq{{}}}q{{67J7JHiP4TI778 8 8 */DqxxzzzAHHV4D4DH]]9--FXv... =  Vam<<< 	:E**2""4y99999	: 	:22r   c                    |                                 }	 t          j        |           n# t          $ r Y d S w xY w|g}|                    | j        |                    t          t          j        d          5 }|	                    |           d d d            n# 1 swxY w Y   	 |D ]}t          j        |          }|                    d           |                     t          j        ||                                          |           t          t          j        d          5 }t          j        ||          }d d d            n# 1 swxY w Y   |                     |                                |           	 t!          j        t          j                   d S # t!          j        t          j                   w xY w)Nwbr   rb)r   r   rl   r   extendrw   openr   TESTFNwriteioBytesIOseekr   file_digestr   osunlink)	rc   ry   rm   r   digestsfr   buf	digestobjs	            r   r   z!HashLibTestCase.check_file_digest  s$   OO%%		K 	 	 	FF	 &t06777)"D)) 	QGGDMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 		(! C Cj&&  'V44>>@@)   )*D11 ?Q ' 3Av > >I? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  !4!4!6!6	BBBBC Ii&'''''BIi&''''sO   + 
999BB"B'BF  )E?F  E	F  E	,F    G c                 b    | j         |         }|D ]}|                     t          |d           d S )Nspam)rw   r   r   )rc   algorithm_namer   r   s       r   check_no_unicodez HashLibTestCase.check_no_unicode  sI    0@'3 	J 	J#i)@&IIII	J 	Jr   c                    |                      d           |                      d           |                      d           |                      d           |                      d           |                      d           d S )Nr   r   rL   r   rO   r   r  r   s    r   test_no_unicodezHashLibTestCase.test_no_unicode  s    e$$$f%%%h'''h'''h'''h'''''r   c                 Z    |                      d           |                      d           d S )NrR   rS   r  r   s    r   test_no_unicode_blake2z&HashLibTestCase.test_no_unicode_blake2  s0    i(((i(((((r   c                    |                      d           |                      d           |                      d           |                      d           |                      d           |                      d           d S )NrT   rU   rV   rW   rX   rY   r  r   s    r   test_no_unicode_sha3z$HashLibTestCase.test_no_unicode_sha3  s    j)))j)))j)))j)))k***k*****r   r   Nc                    | j         |         }|D ]{} |d          }|                     |j        |           |                     |j        |           |rp|                     t	          |                    |                    |           |                     t	          |                    |                    d|z             nm|                     t	          |                                          |           |                     t	          |                                          d|z             |                     |j        |           |                     |	                    d          d         t          |                     }d S )NFr   r   _r   )rw   r   
block_sizer   r   r   r   ry   r   r@   r0   )rc   ry   r  r   digest_lengthr   r   r   s           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  QXXm%<%<!=!=!.0 0 0  Q[[%?%?!@!@!"=2 2 2 2   QXXZZ+>>>  Q[[]]!3!3Q{]CCCQVT***MM$**S//!,d1gg6666	7 	7r   c                    |                      ddd           |                      ddd           |                      ddd           |                      ddd	           |                      d
dd           |                      ddd           d S )Nr   @   r   r      rL      r       rO      0   r   r  r   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4r   c                    |                      ddd           |                      ddd           |                      ddd	           |                      d
dd           |                      dddd           |                      dddd           d S )NrT      r  rU      r  rV   h   r  rW   H   r  rX      r   rY   r   r   s    r   test_blocksize_name_sha3z(HashLibTestCase.test_blocksize_name_sha3  s    !!*c2666!!*c2666!!*c2666!!*b"555!!+sAr:::!!+sAr:::::r   c                 L   | j         |         }|D ]} |            }t          t          |t                    r)|                     ||z   d           |                     |j        |           |                     |j        |           |                     |j        |           d S )Ni@  )rw   r"   r.   r   _capacity_bits
_rate_bits_suffix)rc   ry   capacityratesuffixr   r   r   s           r   
check_sha3zHashLibTestCase.check_sha3  s    06'3 	0 	0#''))AJq$$7$7X_d333Q-x888Q\4000QY////	0 	0r   c                 &   |                      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 )NrT   i  i     rU      i@  rV   i   i@  rW      i@  rX      i@     rY   )r0  r   s    r   test_extra_sha3zHashLibTestCase.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8r   c                 b    |                      ddd           |                      ddd           d S )NrR   r  r  rS   r  r   r   s    r   test_blocksize_name_blake2z*HashLibTestCase.test_blocksize_name_blake2  s8    !!)S"555!!)R44444r   c                 8    |                      dddd           d S )Nr   r    d41d8cd98f00b204e9800998ecf8427eFr   r   r   s    r   test_case_md5_0zHashLibTestCase.test_case_md5_0  s2    

3:! 	 	
 	
 	
 	
 	
r   c                 8    |                      dddd           d S )Nr      abc 900150983cd24fb0d6963f7d28e17f72Fr   r<  r   s    r   test_case_md5_1zHashLibTestCase.test_case_md5_1  s2    

6=! 	 	
 	
 	
 	
 	
r   c                 8    |                      dddd           d S )Nr   s>   ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 d174ab98d277d9f5a5611c2c9f419d9fFr   r<  r   s    r   test_case_md5_2zHashLibTestCase.test_case_md5_2   s3    

M.!	 	 	
 	
 	
 	
 	
r      z!test cannot run on 32-bit systemsr   )sizememusedry_runc                 :    |                      dd|z  d           d S )Nr      A c9af2dff37468ce5dfee8f2cfc0a9c6dr<  rc   rF  s     r   test_case_md5_hugez"HashLibTestCase.test_case_md5_huge  %     	

5$t)%GHHHHHr   c                 :    |                      dd|z  d           d S )Nr   rJ   28138d306ff1b8281f1a9067e1a1a2b3r<  rL  s     r   test_case_md5_uintmaxz%HashLibTestCase.test_case_md5_uintmax  rN  r   c                 4    |                      ddd           d S )Nr   r   (da39a3ee5e6b4b0d3255bfef95601890afd80709r<  r   s    r   test_case_sha1_0z HashLibTestCase.test_case_sha1_0  s)    

63=	? 	? 	? 	? 	?r   c                 4    |                      ddd           d S )Nr   r?  (a9993e364706816aba3e25717850c26c9cd0d89dr<  r   s    r   test_case_sha1_1z HashLibTestCase.test_case_sha1_1  s)    

66=	? 	? 	? 	? 	?r   c                 4    |                      ddd           d S )Nr   8   abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq(84983e441c3bd26ebaae4aa1f95129e5e54670f1r<  r   s    r   test_case_sha1_2z HashLibTestCase.test_case_sha1_2  s*    

6N=	? 	? 	? 	? 	?r   c                 :    |                      dddz  d           d S )Nr      a@B (34aa973cd4c4daa4f61eeb2bdbad27316534016fr<  r   s    r   test_case_sha1_3z HashLibTestCase.test_case_sha1_3#  s-    

64'>=	? 	? 	? 	? 	?r   c                 4    |                      ddd           d S )NrL   r   8d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42fr<  r   s    r   test_case_sha224_0z"HashLibTestCase.test_case_sha224_0,  s.    

8S
D	F 	F 	F 	F 	Fr   c                 4    |                      ddd           d S )NrL   r?  823097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7r<  r   s    r   test_case_sha224_1z"HashLibTestCase.test_case_sha224_10  s.    

8V
D	F 	F 	F 	F 	Fr   c                 4    |                      ddd           d S )NrL   rY  875388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525r<  r   s    r   test_case_sha224_2z"HashLibTestCase.test_case_sha224_24  s/    

8
E
D	F 	F 	F 	F 	Fr   c                 :    |                      dddz  d           d S )NrL   r]  r^  820794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67r<  r   s    r   test_case_sha224_3z"HashLibTestCase.test_case_sha224_39  s2    

8TG^
D	F 	F 	F 	F 	Fr   c                 4    |                      ddd           d S )Nr   r   @e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855r<  r   s    r   test_case_sha256_0z"HashLibTestCase.test_case_sha256_0>  s.    

8S
L	N 	N 	N 	N 	Nr   c                 4    |                      ddd           d S )Nr   r?  @ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015adr<  r   s    r   test_case_sha256_1z"HashLibTestCase.test_case_sha256_1B  s.    

8V
L	N 	N 	N 	N 	Nr   c                 4    |                      ddd           d S )Nr   rY  @248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1r<  r   s    r   test_case_sha256_2z"HashLibTestCase.test_case_sha256_2F  s/    

8
E
L	N 	N 	N 	N 	Nr   c                 :    |                      dddz  d           d S )Nr   r]  r^  @cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0r<  r   s    r   test_case_sha256_3z"HashLibTestCase.test_case_sha256_3K  s2    

8TG^
L	N 	N 	N 	N 	Nr   c                 4    |                      ddd           d S )NrO   r   `38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95br<  r   s    r   test_case_sha384_0z"HashLibTestCase.test_case_sha384_0P  s+    

8S-	. 	. 	. 	. 	.r   c                 4    |                      ddd           d S )NrO   r?  `cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7r<  r   s    r   test_case_sha384_1z"HashLibTestCase.test_case_sha384_1U  s+    

8V-	. 	. 	. 	. 	.r   c                 4    |                      ddd           d S )NrO   p   abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu`09330c33f71147e83d192fc782cd1b4753111b173b3b05d22fa08086e3b0f712fcc7c71a557e2db966c3e9fa91746039r<  r   s    r   test_case_sha384_2z"HashLibTestCase.test_case_sha384_2Z  s/    

8O-	. 	. 	. 	. 	.r   c                 :    |                      dddz  d           d S )NrO   r]  r^  `9d0e1809716474cb086e834e310a4a1ced149e9c00f248527972cec5704c2a5b07b8b3dc38ecc4ebae97ddd87f3d8985r<  r   s    r   test_case_sha384_3z"HashLibTestCase.test_case_sha384_3a  s/    

8TG^-	. 	. 	. 	. 	.r   c                 4    |                      ddd           d S )Nr   r   ڀcf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3er<  r   s    r   test_case_sha512_0z"HashLibTestCase.test_case_sha512_0g  s1    

8SM	N 	N 	N 	N 	Nr   c                 4    |                      ddd           d S )Nr   r?  ڀddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49fr<  r   s    r   test_case_sha512_1z"HashLibTestCase.test_case_sha512_1l  s1    

8VM	N 	N 	N 	N 	Nr   c                 4    |                      ddd           d S )Nr   r  ڀ8e959b75dae313da8cf4f72814fc143f8f7779c6eb9f7fa17299aeadb6889018501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909r<  r   s    r   test_case_sha512_2z"HashLibTestCase.test_case_sha512_2q  s5    

8OM	N 	N 	N 	N 	Nr   c                 :    |                      dddz  d           d S )Nr   r]  r^  ڀe718483d0ce769644e2e42c7bc15b4638e1f98b13b2044285632a803afa973ebde0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09br<  r   s    r   test_case_sha512_3z"HashLibTestCase.test_case_sha512_3x  s5    

8TG^M	N 	N 	N 	N 	Nr   c                 Z	   |                      |j        |           t          |dz             D ]} |d|z             d|dz   z  }|                     t          ||           |                      |j        |           t          |dz             D ]} |d|z             d|dz   z  }	|                     t          ||	           |                      |j        |           t          d|dz             D ]} ||           |                     t          |d           |                     t          |d           |                     t          ||dz              |                      |j        |           t          |dz             D ]} |d|z             d|dz   z  }
|                     t          ||
           |                       |                                             |d	                                                     t          dd
          D ]} ||           |                     t          |d           |                     t          |d
           t          dd
          D ]} ||           |                     t          |d           |                     t          |d           |                     t          |d
           t          dd
          D ]} ||           |                     t          |d           |                     t          |d
           t          d|dz             D ]} ||           |                     t          |d           |                     t          ||dz               |d            |d           |                     t          |d           |                     t          |d            |d            ||           |                     t          |d           |                     t          ||dz              |                     t          |d	           |                     t          |d	           |                     t          |d            |d	d	d	d	dddd
dddd           d S )Nr   r]  salt)personr   r   r   r   r5  )fanout)depth)
node_depth)
inner_size)	leaf_size    l        )node_offset)rm   )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   )rc   rz   	salt_sizeperson_sizekey_sizer   
max_offsetr4   r  r  r   s              r   check_blake2zHashLibTestCase.check_blake2}  sT   .	:::y1}%% 	' 	'AKTAX&&&&&y1}%*k===0+>>>{1}%% 	) 	)AKtax(((((q)*k&AAA4kBBBq+/** 	' 	'AKA&&&&&*krBBB*kqAAA*k{1}MMM18<<<xz"" 	& 	&AKD1H%%%%%hl#*ks;;;0022$---7799	; 	; 	; q# 	" 	"AKq!!!!!*k"===*k#>>>q# 	! 	!AKa     *k<<<*k;;;*k===q# 	& 	&AK1%%%%%*kbAAA*kcBBBq+/** 	& 	&AK1%%%%%*kbAAA*kk!mLLLa    i((((*kR@@@-FFF""""
++++*krBBB-*Q,OOO)[s;;;)[===)["555	
 	
 	
 	
 	
 	
r   c                 ^   d } |d          }|D ]}|D ]} |||          } |||          }	 |||          }
|                     |
                                            |||	|          }|                     |                                           |                                S )Nc                     d}d|z  |z  }d}t          |           }t          |           D ]}||z   |z  }||}}|dz	  dz  ||<   |S )Nr  l   KZ= r         )	bytearrayr   )r   seedmaskr   r   outr4   ts           r   selftest_seqz4HashLibTestCase.blake2_rfc7693.<locals>.selftest_seq  sl    Dd"d*AAF##C6]] * *UdN!1r'T)AJr   r  r  )r   r   )r   r   r   )rc   rz   md_lenin_lenr  outeroutleninlenindatar   unkeyedkeyeds               r   blake2_rfc7693zHashLibTestCase.blake2_rfc7693  s    		 		 		 +++ 	- 	-F - -%eU33"l6622%+f&AAAW^^--...#FHHHU\\^^,,,,-    r   c                     |                      t          j        ddddd           g d}g d}|                     |                     t          j        ||          d           d S )Nr   r  l    )r  r  r  r  )r   r   r     r  r4  @c23a7800d98123bd10f506c61e29da5603d763b8bbad2e737f5e765a7bccd475)r  r   rR   r   r  )rc   
b2b_md_len
b2b_in_lens      r   test_blake2bzHashLibTestCase.test_blake2b  sy    '/2r2r9EEE%%%
000
ZHHN	P 	P 	P 	P 	Pr   c                 4    |                      ddd           d S )NrR   r   ڀ786a02f742015903c6c6fd852552d272912f4740e15847618a86e217f71f5419d25e1031afee585313896444934eb04b903a685b1448b755d56f701afe9be2cer<  r   s    r   test_case_blake2b_0z#HashLibTestCase.test_case_blake2b_0  s1    

9cM	N 	N 	N 	N 	Nr   c                 4    |                      ddd           d S )NrR   r?  ڀba80a53f981c4d0d6a2797b69f12f6e94c212f14685ac4b74b12bb6fdbffa2d17d87c5392aab792dc252d5de4533cc9518d38aa8dbf1925ab92386edd4009923r<  r   s    r   test_case_blake2b_1z#HashLibTestCase.test_case_blake2b_1  s1    

9fM	N 	N 	N 	N 	Nr   c                 L    |                      ddddddddd	d
dddd           d S )NrR      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     	

9f
, 	 	 	 	 	 	r   c                     t          d          D ]9\  }}}t                              |          }|                     d|||           :d S )NrR   r  rG   r/   rA   r   rc   msgr   mds       r   test_blake2b_vectorsz$HashLibTestCase.test_blake2b_vectors	  W    (33 	4 	4LCb--$$CJJy#rsJ3333	4 	4r   c                     |                      t          j        ddddd           g d}g d}|                     |                     t          j        ||          d           d S )N   r  l    )r   r  r  r  )r   r   r  A   r  r4  @6a411f08ce25adcdfb02aba641451cec53c598b24f4fc787fbdc88797f4c1dfe)r  r   rS   r   r  )rc   
b2s_md_len
b2s_in_lens      r   test_blake2szHashLibTestCase.test_blake2s  sy    '/1aRCCC%%%
...
ZHHN	P 	P 	P 	P 	Pr   c                 4    |                      ddd           d S )NrS   r   @69217a3079908094e11121d042354a7c1f55b6482ca1a51e1b250dfd1ed0eef9r<  r   s    r   test_case_blake2s_0z#HashLibTestCase.test_case_blake2s_0  s.    

9c
L	N 	N 	N 	N 	Nr   c                 4    |                      ddd           d S )NrS   r?  @508c5e8c327c14e2e1a72ba34eeb452f37458b209ed63a294d999b4c86675982r<  r   s    r   test_case_blake2s_1z#HashLibTestCase.test_case_blake2s_1  s.    

9f
L	N 	N 	N 	N 	Nr   c                 L    |                      ddddddddd	d
dddd           d S )NrS   r   bf2a8f7fe3c555012a6f8046e646bc75r   r  r  r  r   r   r,   rE  r  r  Tr  r<  r   s    r    test_case_blake2s_all_parametersz0HashLibTestCase.test_case_blake2s_all_parameters"  r  r   c                     t          d          D ]9\  }}}t                              |          }|                     d|||           :d S )NrS   r  r  r  s       r   test_blake2s_vectorsz$HashLibTestCase.test_blake2s_vectors4  r  r   c                 4    |                      ddd           d S )NrT   r   86b4e03423667dbb73b6e15454f0eb1abd4597f9a1b078e3f5b5a6bc7r<  r   s    r   test_case_sha3_224_0z$HashLibTestCase.test_case_sha3_224_0:  s.    

:s
D	F 	F 	F 	F 	Fr   c                 ^    t          d          D ]\  }}|                     d||           d S )NrT   rG   r   rc   r  r  s      r   test_case_sha3_224_vectorz)HashLibTestCase.test_case_sha3_224_vector?  @    #J// 	, 	,GCJJz3++++	, 	,r   c                 4    |                      ddd           d S )NrU   r   @a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434ar<  r   s    r   test_case_sha3_256_0z$HashLibTestCase.test_case_sha3_256_0D  s.    

:s
L	N 	N 	N 	N 	Nr   c                 ^    t          d          D ]\  }}|                     d||           d S )NrU   r  r  s      r   test_case_sha3_256_vectorz)HashLibTestCase.test_case_sha3_256_vectorI  r  r   c                 4    |                      ddd           d S )NrV   r   `0c63a75b845e4f7d01107d852e4c2485c51a50aaaa94fc61995e71bbee983a2ac3713831264adb47fb6bd1e058d5f004r<  r   s    r   test_case_sha3_384_0z$HashLibTestCase.test_case_sha3_384_0N  s+    

:s-	. 	. 	. 	. 	.r   c                 ^    t          d          D ]\  }}|                     d||           d S )NrV   r  r  s      r   test_case_sha3_384_vectorz)HashLibTestCase.test_case_sha3_384_vectorT  r  r   c                 4    |                      ddd           d S )NrW   r   ڀa69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26r<  r   s    r   test_case_sha3_512_0z$HashLibTestCase.test_case_sha3_512_0Y  s1    

:sM	N 	N 	N 	N 	Nr   c                 ^    t          d          D ]\  }}|                     d||           d S )NrW   r  r  s      r   test_case_sha3_512_vectorz)HashLibTestCase.test_case_sha3_512_vector_  r  r   c                 f    |                      dddd           |                      dddd           d S )NrX   r   @7f9c2ba4e88f827d616045507605853ed73b8093f6efbc88eb1a6eacfa66ef26T7f9cr<  r   s    r   test_case_shake_128_0z%HashLibTestCase.test_case_shake_128_0d  B    

;
L
	 	 	 	

;VT22222r   c                 `    t          d          D ]\  }}|                     d||d           d S )NrX   Tr  r  s      r   test_case_shake128_vectorz)HashLibTestCase.test_case_shake128_vectorj  B    #K00 	3 	3GCJJ{CT2222	3 	3r   c                 f    |                      dddd           |                      dddd           d S )NrY   r   @46b9dd2b0ba88d13233b3feb743eeb243fcd52ea62b81b82b50c27646ed5762fT46b9r<  r   s    r   test_case_shake_256_0z%HashLibTestCase.test_case_shake_256_0n  r
  r   c                 `    t          d          D ]\  }}|                     d||d           d S )NrY   Tr  r  s      r   test_case_shake256_vectorz)HashLibTestCase.test_case_shake256_vectort  r  r   c                    d}| j         D ]u} |d          }|                    d           |                    d|z             |                    d            |d|z  d          }|                    d           vt          j                    }|                    d           |                    d|z             |                    d           |                     |                                d           t          j        dd|z  z   dz             }|                     |                                d           d S )Ni   Fr      1   #   x@1cfceca95989f51f658e3f3ffe7f1cd43726c9e088c13ee10b46f57cef135b94)r   r   r   r   r   r   )rc   gil_minsizer   r   s       r   test_gilzHashLibTestCase.test_gilx  sD    * 	 	DU+++AHHTNNNHHTK'(((HHTNNNTK'???AHHTNNNNN		#$$$	KKMMN	
 	
 	

 N4$"44t;<<KKMMN	
 	
 	
 	
 	
r   c                 v  	
 t          j                    
d}d}|dz  	t          j        	|z                                            }	
fd}g }t          |          D ]}t	          	          d|z  z  }|                     |d           |                     |t	          |          z  d           t          j        ||f          }|	                    |           |D ]}|
                                 |D ]}|                                 |                     |
                                           d S )NrE  s   swineflui@ c                     d}|t                    k     r:                    ||| z                       || z  }|t                    k     8d S d S r'   )r   r   )
chunk_sizeindexrm   hashers     r   hash_in_chunksz=HashLibTestCase.test_threaded_hashing.<locals>.hash_in_chunks  sc    E#d))##d5);#;<===# #d))######r   r   r   )targetr   )r   r   r   r   r   assertGreaterr   	threadingThreadappendstartjoin)rc   num_threadssmallest_dataexpected_hashr   threads	threadnumr  threadrm   r  s            @@r   test_threaded_hashingz%HashLibTestCase.test_threaded_hashing  se    #v%T+%566@@BB	$ 	$ 	$ 	$ 	$ 	$ {++ 	# 	#ITrY7Jz1---Z#m*<*<<a@@@%^,6=: : :FNN6"""" 	 	FLLNNNN 	 	FKKMMMM(8(8(:(:;;;;;r   c                 R    | j         }||                     |t                     d S d S rk   )r   r   int)rc   	fips_modes     r   test_get_fips_modez"HashLibTestCase.test_get_fips_mode  s4    %	 !!)S11111 ! r   c           	      R   | j                                         D ]\  }}|                    d          r|D ]n}	  |            }n# t          $ r Y w xY w|                     |          5  t          j        | t          |                     d d d            n# 1 swxY w Y   od S )N)ri   r   blake)rz   )rw   r   r?   r   subTestr   check_disallow_instantiationtype)rc   r   r   rz   r2   s        r   test_disallow_instantiationz+HashLibTestCase.test_disallow_instantiation  s*   '+'@'F'F'H'H 	H 	H#I|##$?@@ + H H#AA!   H\\k\:: H H8tAwwGGGH H H H H H H H H H H H H H HH	H 	Hs#   
A
AA+#BB!Bzneed _hashlibc                 n    t          j        | t                     t          j        | t                     d S rk   )r   r6  r"   r#   r   s    r    test_hash_disallow_instantiationz0HashLibTestCase.test_hash_disallow_instantiation  s0     	,T4888,T7;;;;;r   c           	      p   | j                                         D ]\  }}|D ]}	 t           |                      }n# t          $ r Y 'w xY w|                     |          5  |                     t          d          5  d|_        d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )N)	hash_typezimmutable typeF)rw   r   r7  r   r5  assertRaisesRegexr   value)rc   r   r   rz   r<  s        r   test_readonly_typesz#HashLibTestCase.test_readonly_types  sZ   '+'@'F'F'H'H 
	0 
	0#I|+ 0 0 $[[]] 3 3II!   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-0B-)F)r   r   N)m__name__
__module____qualname__r   r   r  ry   COMPILED_WITH_PYDEBUGr_   rf   r   propertyr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  requires_blake2r  requires_sha3r  r  r!  r(  r0  r7  r9  r=  rA  rD  r=   skipIfr   maxsizer   r   rM  rQ  rT  rW  r[  r`  rc  rf  ri  rl  ro  rr  ru  rx  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	  r  r  r  r  r	   reap_threadsrequires_working_threadingr.  r2  r   cpython_onlyr8  
skipUnlessr"   r:  r?  __classcell__)r   s   @r   rI   rI   e   s       7 ;'F !#7 2 K6K  K? K? K? K? K?Z ; ; X;   X  ' ' '
> > >< < <	= 	= 	=5 5 5? ? ?L L L4D D D' ' '   : : :@: : : :2( ( (4J J J( ( ( ) ) _) + + ]+ DE+/7 7 7 7&5 5 5 ; ; ];
0 
0 
0 9 9 ]9 5 5 _5
 
 

 
 

 
 
 X_S[37*,OPPZS1WQ666I I 76 QPI X_S[37*,OPPZS1WQ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 #"!<F2 2 2
 H H H XT)?;;< < <;<
0 0 0 0 0 0 0r   rI   c            
       4   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# Z	 e
j        edu d$          d%             Z e
j         eed&          d'          d(             Z e
j         eed)          d*           e
j         e            d+,          d-                         Zd. Zd/ ZdS )0KDFTests))   password   saltr   N)rP  rQ  r   N)rP  rQ     N)s   passwordPASSWORDpasswords$   saltSALTsaltSALTsaltSALTsaltSALTsaltrR  r  )s	   pass words   sa ltrR  r   r   r   r   ڀ77d6576238657b203b19ca42c18a0497f16b4844e3074ae8dfdffa3fede21442fcd0069ded0948f8326a753a0fc81f17e8d3e0fb2e0d3628cf35e20c38d18906rP  s   NaClr4  r  ڀfdbabe1c9d3472007856e7190d01e9fe7c6ad7cbc8237830e77376634b3731622eaf30d92e22a3886ff109279d9830dac727afb94a83ee6d8360cbdfa2cc0640s   pleaseletmeins   SodiumChloridei @  ڀ7023bdcb3afd7348461c06cd81fd38ebfda8fbba904f8e3ea9b543f6545da1f2d5432955613f0fcf62d49705242a9af9e61e85dc0d651e40dfcf017b45575887(0c60c80f961f0e71f3a9b524af6012062fe037a6N(ea6c014dc72d6f8ccd1ed92ace1d41f0d8de8957(4b007901b765489abead49d926f721d065a429c123d2eec4fe41c849b80c8d83662c0e44a8b291a964cf2f07038    56fa6aa75548099dcc37d7f03425e0c3@120fb6cffcf8b32c43e7225256c4f837a86548c92ccc35480805987cb70be17b@ae4d0c95af6b46d32d0adff928f06dd02a303f8ef3c251dfd6e2d85a95474c43@c5e478d59288c841aa530db6845c4c8d962893a001ce4e11a4963873aa98134aP348c89dbcbd32b2f32d814b8116e84cf2b17347ebc1800181c4e2a1fb8dd53e1c635518c7dac47e9(    89b69d0516f829893c696226650a8687ڀ867f70cf1ade02cff3752599a3a53dc4af34c7a669815ae5d513554e1c8cf252c02d470a285a0501bad999bfe943c08f050235d7d68b1da55e63f73b60a57fceڀe1d9c16aa681708a45f5c7c4e215ceb66e011a2e9f0040713f18aefdb866d53cf76cab2868a39b9f7840edce4fef5a82be67335c77a6068e04112754f27ccf4eڀd197b1b33db0143e018b12f3d1d1479e6cdebdcc97c5c0f87f6902e072f457b5143f30602641b3d55cd335988cb36b84376060ecd532e039b742a239434af2d5ڀ8c0511f4c6e597c6ac6315d8f0362e225f3c501495ba23b868c005174dc4ee71115b59f9e60cd9532fa33e0f75aefe30225c583a186cd82bd4daea9724a3d3b8r   9d9e9c4cd21fe4be24d5b8244c759665)r   r   r   c                    | j                                         D ]\  }}||vrt          | j                  D ]\  }}|\  }}}	}
||         \  }}|r|}
 |||||	|
          }|                     ||||||	|
f            ||t          |          t          |          |	|
          }|                     ||            ||t          |          t          |          |	|
          }|                     ||           |
) |||||	          }|                     ||||||	f           |                     t          d          5   |dddd           d d d            n# 1 swxY w 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           }|                     || j         d         d
         d
                    d S d S )Nz.*unsupported.*unknowns   passrQ  r   r   s   sha1passr  r   r  rP  )rB   passwordr  
iterationsdklen)pbkdf2_resultsr   	enumeratepbkdf2_test_vectorsr   
memoryviewr  r=  r   r   r   )rc   pbkdf2	supporteddigest_nameresultsr4   vectorrj  r  roundsrl  expectedoverwrite_dklenr  s                 r   _test_pbkdf2_hmaczKDFTests._test_pbkdf2_hmac  sf   $($7$=$=$?$? 	L 	L K)++&t'?@@ L L	606-$,3AJ)/" ,+Ef[(D&%HH  h"-xvu!MO O Of[*X*>*>'--vu> >  h///f[)H*=*=&t__fe= =  h///= &hfEEC$$S(&18T6%JL L L!L& ##J0ABB 	3 	3F9gw222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 Y67GWa   66661   FFGWa   FFGWb   FFGWa   FFGWa   &6KgD* * *CS$"5f"=a"@"CDDDDD+ s   E!!E%(E%ztest requires builtin_hashlibc                     t          j                    5  |                     t          j        t
                     d d d            d S # 1 swxY w Y   d S rk   )r
   check_warningsry  builtin_hashlibpbkdf2_hmacr`   r   s    r   test_pbkdf2_hmac_pyzKDFTests.test_pbkdf2_hmac_pyM  s    +-- 	 	""+^  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   &AAAr}  z   test requires OpenSSL > 1.0c                 P    |                      t          j        t                     d S rk   )ry  openssl_hashlibr}  r$   r   s    r   test_pbkdf2_hmac_czKDFTests.test_pbkdf2_hmac_cT  s$     	:<QRRRRRr   scryptz   test requires OpenSSL > 1.1zscrypt is blocked in FIPS mode)reasonc           
      :   | j         D ]8\  }}}}}}t          j        |||||          }|                     ||           9t          j        ddddd           |                     t
                    5  t          j        ddddd           d d d            n# 1 swxY w Y   |                     t
                    5  t          j        ddddd           d d d            n# 1 swxY w Y   |                     t
                    5  t          j        d           d d d            n# 1 swxY w Y   |                     t
                    5  t          j        dd           d d d            n# 1 swxY w Y   |                     t
                    5  t          j        ddddd	           d d d            n# 1 swxY w Y   d
D ]Z}|                     t          t          t
          f          5  t          j        dd|dd           d d d            n# 1 swxY w Y   [dD ]Z}|                     t          t          t
          f          5  t          j        ddd|d           d d d            n# 1 swxY w Y   [dD ]Z}|                     t          t          t
          f          5  t          j        dddd|           d d d            n# 1 swxY w Y   [dD ][}|                     t          t          t
          f          5  t          j        ddddd|           d d d            n# 1 swxY w Y   \dD ][}	|                     t          t          t
          f          5  t          j        ddddd|	           d d d            n# 1 swxY w Y   \d S )N)r  nr3   prP  rQ  r   r  r   rj  r  r  )r  r   r   N)r  r   N)r  N)r  r  r3   r  maxmem)r  r  r3   r  rl  )scrypt_test_vectorsr   r  r   r   r   r   r   )
rc   rj  r  r  r3   r  rw  resultr  rl  s
             r   test_scryptzKDFTests.test_scryptY  sy    261I 	/ 	/-HdAq!X^H41QGGGFVX.... 	{Aa@@@@y)) 	D 	DN:GqACCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Dy)) 	D 	DN;VqA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;1ag>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?! 	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   4BB!B?C%%C),C)
D++D/2D/E22E69E6F==GG3HH	 H	I66I:	=I:	-KK	K	
L11L5	8L5	(NN	N	c                     |                      dt          j                   |                      dt          j                   d S )N
blake2b512zsha3-512)r   r   r   r   s    r   test_normalized_namezKDFTests.test_normalized_name  s:    w'CDDDW%ABBBBBr   c                    ddz  }t          j                    }|                     t          j        t
          j                   t          t
          j        d          5 }t          d          D ],}|	                    |           |
                    |           -	 d d d            n# 1 swxY w Y   t          t
          j        d          5 }t          j        |t           j                  }d d d            n# 1 swxY w Y   |                     |                                |                                           |                     |j        |j                   |                     t!          |          t!          |                     |                     t$                    5  t          j        d d           d d d            n# 1 swxY w Y   |                     t$                    5  t          t
          j        d          5 }t          j        |d           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                     t$                    5  t          t
          j        d          5 }t          j        |d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr]  i   r   r   r   r   r3   )r   r   
addCleanupr  r  r   r   r   r   r   r   r  r   r   ry   r   r7  r   r   )rc   rm   d1r  r  d2s         r   test_file_digestzKDFTests.test_file_digest  s   e|^	9#3444)"D)) 	Q2YY  		$	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 )"D)) 	8Q$Q77B	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	888"'***d2hh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#Ax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#Ax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8C<?C<'G		GG.I	H+I+H/	/I2H/	3II	I'J<J$J<$J(	(J<+J(	,J<<K K )r@  rA  rB  ro  r   r  r/   rA   rm  ry  r=   rG  r|  r~  rL  r   r  r  r   r%   r  r  r  r   r   r   rO  rO    sv       	 	 	 
c2q!YY  (j  k  k  	l	gtQII  7y  -z  -z  	{	,eQ99  FH  <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-$ $NL/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#,JC C C1 1 1 1 1r   rO  __main__)8r   binasciir   r   r\   r   r   r  r   	sysconfigr#  r=   ra   r   r   test.supportr   r   test.support.import_helperr   r   r	   r
   http.clientr   r   rC  default_builtin_hashesget_config_varr`   r   r   r@   r  r|  r   r"   r#   r$   r%   r   	frozensetrh   rL  rE  check_sanitizerr   rF  r5   r9   rG   TestCaserI   rO  r@  mainr   r   r   <module>r     s               				     				 



                 ( ( ( ( ( ( ( ( : : : : : : " " " " " " ) ) ) ) ) ) ( ( ( ( ( ( % % % % % %  %788  ONN ))*EFF+NN )//44::<<BB3GG  N &%i
|DDD+++)))j\JJJOOOLLLLLLLLLLLLL   DG%IKK    NNNN   GGG &(%g/ABB $G#t,,,	##	M3CDD   1   {0 {0 {0 {0 {0h' {0 {0 {0|{1 {1 {1 {1 {1x  {1 {1 {1| zHMOOOOO s$   .C; ;DDD D'&D'