
    0hh                     $   S SK r S SKJr  S SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKrS SKrS SKrS SKrS SKJr  S SKJrJr  S SKJr  S SKJr  S SKJr  S SKJr  S S	KJr  1 S
kr\R8                  " S5      r\c  \rOG\R=                  S5      R?                  5       RA                  S5      r!\"" \#" \$R<                  \!5      5      r\" SS/S9r% S SK&J'r'J(r(J)r)J*r*   S SK-r-\R\                  " \-S5      r/\R`                  " SS9r1\R\                  " \1(       + S5      r2S r3Sr4S r5 " S S\Rl                  5      r7 " S S\Rl                  5      r8\9S:X  a  \Rt                  " 5         gg! \+ a    Sr'Sr(\," 5       r)S r* Nf = f! \+ a    Sr- Nf = f)    N)	unhexlify)support)_4G
bigmemtest)import_fresh_module)	os_helper)requires_resource)threading_helper)HTTPException>   md5sha1sha2sha3blake2PY_BUILTIN_HASHLIB_HASHES",hashlib_hashlib)fresh)HASHHASHXOFopenssl_md_meth_namesget_fips_modec                      gNr    r       :/opt/python-3.13.8/usr/lib/python3.13/test/test_hashlib.pyr   r   1   s    r   zrequires _blake2T)ubzrequires _sha3c                 J    SnSnU  H  nX!US-	  S-     XS-     -   -  nM     U$ )N0123456789abcdef       r   )shris       r   hexstrr*   A   s;    A
A	Q#~s7++ Hr   z(http://www.pythontest.net/hashlib/{}.txtc              #     #    [         R                  U 5      n [        R                  " USS9nU   U Hb  nUR                  5       nUR                  S5      (       d  U(       d  M2  UR                  S5      n[        R                  US   5      US'   Uv   Md     S S S 5        g ! [        [
        4 a&    [        R                  " SR                  U5      5      ef = f! , (       d  f       g = f7f)Nzutf-8)encodingzCould not retrieve {}#r   r   )URLformatr   open_urlresourceOSErrorr   unittestSkipTeststrip
startswithsplitbytesfromhex)	hash_nameurltestdatalinepartss        r   read_vectorsr>   L   s     
**Y
CE++C'B 
D::<Ds##4JJsOE}}U1X.E!HK  
 ]# E 7 > >s CDDE	s3   C,B" C,A)C	C,"6CC,
C)%C,c                   ~  ^  \ rS rSrSrSS1r\R                  S:H  =(       d    \R                  r
S rU 4S jr\S 5       r\S	 5       rS
 rS rS rS rS r\R,                  " \" 5       S5      S 5       r\R,                  " \" 5       S5      S 5       rS rS rS rS rS rS rS r \!" S5      S 5       r"\!" S5      S 5       r#SgS jr$S r%S r&S  r'\(S! 5       r)\*S" 5       r+  ShS$ jr,S% r-\*S& 5       r.S' r/\*S( 5       r0\(S) 5       r1S* r2S+ r3S, r4\R,                  " \5Rl                  \7S--   :  S.5      \8" \7S--   S/SS09S1 5       5       r9\R,                  " \5Rl                  \7S/-
  :  S.5      \8" \7S/-
  S/SS09S2 5       5       r:S3 r;S4 r<S5 r=S6 r>S7 r?S8 r@S9 rAS: rBS; rCS< rDS= rES> rFS? rGS@ rHSA rISB rJSC rKSD rLSE rMSF rNSG rOSH rP\(SI 5       rQ\(SJ 5       rR\(SK 5       rS\(SL 5       rT\(SM 5       rU\(SN 5       rV\(SO 5       rW\(SP 5       rX\(SQ 5       rY\(SR 5       rZ\*SS 5       r[\*ST 5       r\\*SU 5       r]\*SV 5       r^\*SW 5       r_\*SX 5       r`\*SY 5       ra\*SZ 5       rbS[ rcS\ rdS] reS^ rfS_ rg\hR                  \hR                  " 5       S` 5       5       rkSa rl\R                  Sb 5       rn\R                  " \pS#LSc5      Sd 5       rqSe rrSfrsU =rt$ )iHashLibTestCase\   )r   MD5r   SHA1sha224SHA224sha256SHA256sha384SHA384sha512SHA512blake2bblake2ssha3_224sha3_256sha3_384sha3_512	shake_128	shake_256rR   rS   posixc                      [         R                  " U5      $ ! [         aN  nU R                  (       a3  U[        ;   a)  [
        R                  " [        5      R                  SUUS9   S nAg S nAff = f)Nz%Did a C extension fail to compile? %s)exc_info)		importlibimport_moduleModuleNotFoundError_warn_on_extension_importbuiltin_hasheslogging	getLogger__name__warning)selfmodule_nameerrors      r   _conditional_import_module*HashLibTestCase._conditional_import_modulei   se    	**;77" 	--+2O!!(+33;" 4 
 	s    
A0AA++A0c                   >^  [        5       nT R                   H"  nUR                  UR                  5       5        M$     T R	                  S5      nU(       a  UR                  SS15        0 T l        U H=  n[        (       a  UR                  S5      (       a  M&  [        5       T R                  U'   M?     T R                  R                  5        HF  u  pFUR                  [        [        U5      5        US.S jnSU 3Ul        UR                  U5        MH     T R	                  S5      nUT l        U(       a  T R                  [        US	5      5        T R                  [        US
5      5        T R                  R                  5        H7  u  pF[        USU-   S 5      n	U	(       d  M   U	" 5         UR                  U	5        M9     U 4S jn
T R	                  S5      nU(       a  U
" S5        T R	                  S5      nU(       a  U
" S5        T R	                  S5      nU(       a   U
" S5        U
" S5        U
" S5        U
" S5        U(       a  U
" S5        U
" S5        [        (       dH  T R	                  S5      nU(       a0  U
" S5        U
" S5        U
" S5        U
" S5        U
" S5        U
" S5        ["        [$        T ]N  " U0 UD6  g ! [          a     GMF  f = f)N_blake2rL   rM   sha3_) _HashLibTestCase__algorithm_namec                 6    [         R                  " U /UQ70 UD6$ N)r   new)rh   argskwargss      r   c#HashLibTestCase.__init__.<locals>.c   s    {{#3EdEfEEr   "do_test_algorithm_via_hashlib_new_r   openssl_md5openssl_sha1openssl_c                 n   > [        [        S5      " U 5      nTR                  U    R                  U5        g )N__get_builtin_constructor)getattrr   constructors_to_testadd)nameconstructorr`   s     r   add_builtin_constructor9HashLibTestCase.__init__.<locals>.add_builtin_constructor   s.    !'+FGMK%%d+//<r   _md5r   _sha1r   _sha2rD   rF   rH   rJ   _sha3rN   rO   rP   rQ   rR   rS   )setsupported_hash_namesrx   lowerrc   updaterw   	SKIP_SHA3r5   itemsrv   r   r^   r   
assertTruehasattr
ValueErrorsuperr@   __init__)r`   rl   rm   
algorithms	algorithmrf   constructorsrn   r   rz   r{   r}   r~   r   r   	__class__s   `              r   r   HashLibTestCase.__init__v   sq   U
22INN9??,- 3 11)<y)45$&!#IyY11'::365D%%i0 $ (,'@'@'F'F'H#IWWi89*3 F=i[IAJQ (I 22:>  OOGHm<=OOGHn=>+/+D+D+J+J+L'	%h
90DdK;6#
 %((5 ,M	= ..v6#E*//8#F+//8#H-#H-#H-#H-#I.#I.y33G<E'
3'
3'
3'
3'4'4ot-t>v>I & s   &J??
KKc                 t    U R                   R                  5       n[        R                  R	                  U5      $ rj   )rw   values	itertoolschainfrom_iterable)r`   r   s     r   hash_constructors!HashLibTestCase.hash_constructors   s+    00779,,\::r   c                     [        5       $ rj   )r   r`   s    r   is_fips_modeHashLibTestCase.is_fips_mode   s
    r   c                     [         R                   " S[        S5      5      nU R                   HG  nU" USS9nUR                  U R                  ;   a  UR                  S5        M7  UR                  5         MI     g )Nb
   Fusedforsecurity   )arrayranger   ry   shakes	hexdigest)r`   aconsrn   s       r   test_hash_arrayHashLibTestCase.test_hash_array   sV    KKU2Y'**DQ.Avv$B +r   c                 x    U R                  [        R                  [        S U R                   5       5      5        g )Nc              3   T   #    U  H  nUR                  5       (       d  M  Uv   M      g 7frj   )islower).0_algos     r   	<genexpr>=HashLibTestCase.test_algorithms_guaranteed.<locals>.<genexpr>   s"      &#<%]]_ #<s   (	()assertEqualr   algorithms_guaranteedr   r   r   s    r   test_algorithms_guaranteed*HashLibTestCase.test_algorithms_guaranteed   s2    66 &4#<#< & &	'r   c                 &   U R                  [        [        R                  5      R	                  [        R
                  5      5        U R                  S[        R
                  5        [        R
                   H  n[        R                  " USS9nM     g )N	undefinedFr   )r   r   r   r   issubsetalgorithms_availableassertNotInrk   )r`   ry   digests      r   test_algorithms_available)HashLibTestCase.test_algorithms_available   sd    G99:$HW%A%AB	D 	g&B&BC00D[[u=F 1r   c                    [         R                  " SSS9  U R                  (       a  U R                  S5        U R                   H  nU" SS9  U" SSS9  M     [         R                  " SSS9  [         R
                  " SS9  U R                  b4  U R                  R                  SSS9  U R                  R                  SS9  g g )NrF   Tr   skip in FIPS moder   r   )r   rk   r   skipTestr   r   r   rq   r`   r   s     r   test_usedforsecurity_true)HashLibTestCase.test_usedforsecurity_true   s    Hd3MM-.**D&d+ + 	E40D)==$MMeT:MM%%d%; %r   c                 B   [         R                  " SSS9  U R                   H  nU" SS9  U" SSS9  M     [         R                  " SSS9  [         R                  " SS9  U R                  b4  U R                  R                  SSS9  U R                  R                  SS9  g g )NrF   Fr   r   r   )r   rk   r   r   r   rq   r   s     r   test_usedforsecurity_false*HashLibTestCase.test_usedforsecurity_false   s    He4**D'e, + 	E51E*==$MMeU;MM%%e%< %r   r   c                    U R                    GH#  nU R                  UR                  5         U" S5        U" SS9  U" SS9  S S S 5        U" S5      R                  nU R                  U5         [        R
                  " US5        [        R
                  " USS9  [        R
                  " USS9  U R                  (       ai  X R                  R                  ;   aP  U R                  R                  US5        U R                  R                  USS9  U R                  R                  USS9  S S S 5        GM&     g ! , (       d  f       N= f! , (       d  f       GMJ  = f)Nr   datastring)r   subTestr^   ry   r   rk   r   _constructors)r`   rz   digest_names      r   test_clinic_signature%HashLibTestCase.test_clinic_signature   s    11Kk223C %3' 4
 &c*//Kk*K-Kc2K4 ==[MM4O4O%OMM%%k37MM%%k%<MM%%k#%> +* 233 +*s   D6,B<E6
E	
E	c                 6   SnSn[         R                  " S5      n[         R                  " S5      n[         R                  " S5      nU4[        XS9U4U4[        XS9U4/[        R                  " U/U//[        US9[        XS9/U/5      Q[        R                  " S	/[        S S
9[        US S9[        US S9[        XS S9/U/5      QU4[        S S
9U4PU4[        S S
9U4PU4[        US9U/PU4[        US9U/PS	[        XS9U/P GH3  u  pgnU R
                   GH  n	U	" S5      R                  n
U R                  U	R                  XgS9   U R                  [        U5         U	" U0 UD6  S S S 5        S S S 5        U R                  XUS9   U R                  [        U5         [        R                  " U
/UQ70 UD6  S S S 5        U R                  (       aX  XR                  R                  ;   a?  U R                  [        U5         U R                  R                  " U
/UQ70 UD6  S S S 5        S S S 5        GM     GM6     g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       NT= f! , (       d  f       GMz  = f)Nr   s   msgz'data' and 'string' are mutually exclusive and support for 'string' keyword parameter is slated for removal in a future version.z#given by name ('data') and positionz&got an unexpected keyword argument '_')r   _r   )r   r   r   )r   )r   r   )r   r   r   r   )rl   kwds)reescapedictr   productr   ry   r   r^   assertRaisesRegex	TypeErrorr   rk   r   r   )r`   nomsgmymsgconflicting_callduplicated_paramunexpected_paramrl   r   errmsgrz   r   s              r   test_clinic_signature_errors,HashLibTestCase.test_clinic_signature_errors  s   999

 99%JK99%MN Xt02BCXt02BC#

 5'"5!4U#AB!"#
 4Let,.T:	 ""	#
* Xtd|%56+#
, Xtd|%56-#
0 Xt5)+;<1#
2 Xt5)+;<3#
4 5/1AB5#
D8  $55)#.33\\+"6"6T\M//	6B#T2T2 C N \\+t\D//	6BK?$?$? C'==+F+FF!33IvF MM--kIDIDI G ED  69#
> CB NM CB GF EDsa   I%	I	.IJ%I&	 AJ!I7	)J
II
I#&
I40J7
JJ
Jc                     U R                  [        [        R                  S5        U R                  [        [        R                  S5        g )Nzspam spam spam spam spam   )assertRaisesr   r   rk   r   r   s    r   test_unknown_hash!HashLibTestCase.test_unknown_hash@  s/    *gkk3MN)W[[!4r   c                 d    U R                  [        R                  " S5      R                  S5        g )NrG   rF   )r   r   rk   ry   r   s    r   test_new_upper_to_lower'HashLibTestCase.test_new_upper_to_lowerD  s!    X.33X>r   c                    [        [        S5      n[        [        S5      nU R                  [        US5         SS KnS [        R                  S'   UR                  5          U R                  [        US5        S[        5       ;   a  W[        R                  S'   O[        R                  S	  U R                  [        US5        U" S5      nU R                  UWR                  5        U R                  [        U5      S	S/5        g ! [
         a    U R                  S5         Nf = f! S[        5       ;   a  W[        R                  S'   f [        R                  S	 f = f)
Nru   __builtin_constructor_cachetestr   z_md5 module not availabler}   r      rB   )rv   r   r   r   r}   ImportErrorr   sysmodulesclearlocalsr   assertIsr   r   sorted)r`   get_builtin_constructorbuiltin_constructor_cacher}   rz   s        r   test_get_builtin_constructor,HashLibTestCase.test_get_builtin_constructorG  s%   ")'*E#G$+G,I%K!*&=vF	7 #F!'')	(j*A5I!&*F#KK')%<a@-e4k488, 9:UENK!  	7MM56	7 !&*F#KK's   D !D& D#"D#&5Ec                    U R                    H  nU" SS9nUR                  U R                  ;   a`  U R                  UR	                  S5      [
        5        U R                  [        UR	                  S5      5      UR                  S5      5        M  U R                  UR	                  5       [
        5        U R                  [        UR	                  5       5      UR                  5       5        M     g )NFr   r   )	r   ry   r   assertIsInstancer   r7   r   r*   r   r`   r   r'   s      r   test_hexdigestHashLibTestCase.test_hexdigesta  s    **DU+Avv$%%ahhrlE:  !5q{{2G%%ahhj%8  
!3Q[[]C +r   c           	         SnU R                    H  nU" SS9nUR                  U R                  ;  a  M%  [        b  [	        U[        5      (       a  MC  UR
                  UR                  4 HO  nU R                  [        US5        U H/  nU R                  [        [        45         U" U5        S S S 5        M1     MQ     M     g ! , (       d  f       MK  = f)N)i    l    l   
    l            l    l   
        Fr   i)
r   ry   r   r   
isinstancer   r   r   r   OverflowError)r`   large_sizesr   r'   r   lengths         r   test_digest_length_overflow+HashLibTestCase.test_digest_length_overflowk  s    L**DU+AvvT[[(Jq$$7$7((AKK/!!*fc:)F**J+FGv HG * 0 + HGs   $	C	
Cc           	         U R                    H  nU" SS9nU R                  UR                  [        5        UR                  U R                  ;   a'  U R                  UR                  U R                  5        O&U R                  UR                  U R                  5        U R                  UR                  [        R                  " UR                  SS9R                  5        M     g )NFr   )
r   r   ry   strr   assertInr   r   r   rk   r   s      r   test_name_attribute#HashLibTestCase.test_name_attribute{  s    **DU+A!!!&&#.vv222affd&?&?@  )B)BCAFFE:?? +r   c                 *   SnSnSnSnU R                    GHz  nU" SS9nUR                  U5        UR                  U5        UR                  U5        UR                  U5        UR                  U R                  ;   a  SnOSnU" SS9nUR                  X-   U-   U-   5        U R	                  UR
                  " U6 UR
                  " U6 5        U" X-   U-   U-   SS9n	U R	                  UR
                  " U6 U	R
                  " U6 5        U" X-   U-   SS9n
U
R
                  " U6 nU
R                  5       nUR                  U5        U R	                  UR
                  " U6 UR
                  " U6 5        U R	                  U
R
                  " U6 U5        GM}     g )	Ns   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas   bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbs~   ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccs   ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddFr   )r   r   )r   r   ry   r   r   r   copy)r`   aasbeesceesdeesr   m1rl   m2m3m4	m4_digestm4_copys                r   test_large_update!HashLibTestCase.test_large_update  si   **De,BIIcNIIdOIIdOIIdOww$++%e,BIIcj4'$./RYY-ryy$/?@cj4'$.FBRYY-ryy$/?@ cj4'?B		4(IggiGNN4 RYY-w~~t/DERYY-y91 +r   cpuc                     SS-  n[         R                  " 5       n[        SS5       H  nUR                  U5        M     UR                  S5        U R	                  UR                  5       S5        g )N                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      r         hello world@a5364f7a52ebe2e25f1838a4ca715a893b6fd7a23f2a0d9e9762120da8b1bf53)r   rF   r   r   r   r   r`   zero_1mbr'   r)   s       r   test_sha256_update_over_4gb+HashLibTestCase.test_sha256_update_over_4gb  sW    $&NNq$AHHX  	 (jkr   c                     SS-  n[         R                  " 5       n[        SS5       H  nUR                  U5        M     UR                  S5        U R	                  UR                  5       S5        g )Nr  r  r   r  r  @e2d4535e3b613135c14f2fe4e026d7ad8d569db44901740beffa30d430acb038)r   rO   r   r   r   r   r  s       r   test_sha3_256_update_over_4gb-HashLibTestCase.test_sha3_256_update_over_4gb  sY    $&q$AHHX  	 (jkr   Fc                    [        U5      S-  nUR                  5       nU R                  U   nU R                  [        U5      S5        U H  nU" U40 UD6n	U(       d  U	R	                  5       OU	R	                  U5      n
U R                  XSXU
[        U5      U4-  5        U(       d  U	R                  5       OU	R                  U5      n
[        R                  U5      nU R                  X5        U(       a  M  U R                  [        U5      U	R                  5        M     U(       d&  UR                  S5      c  U R                  XU5        g g g )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   r7   r8   digest_sizegetcheck_file_digest)r`   ry   r   r   shakerm   r  r   hash_object_constructormcomputedr   s               r   checkHashLibTestCase.check  s   Y"OO%	006L 115'3#'77A,1q{{}q{{67JHPTI778 */qxxzAHHV4DH]]9-FX.5  Vamm< (4 E*2""4y9 3ur   c                 x   UR                  5       n [        R                  " U5        U/nUR	                  U R
                  U   5        [        [        R                  S5       nUR                  U5        S S S 5         U H  n[        R                  " U5      nUR                  S5        U R                  [        R                  " Xv5      R                  5       U5        [        [        R                  S5       n[        R                  " XV5      nS S S 5        U R                  WR                  5       U5        M     [         R"                  " [        R                  5        g ! [         a     g f = f! , (       d  f       GN= f! , (       d  f       Ny= f! [         R"                  " [        R                  5        f = f)Nwbr   rb)r   r   rk   r   extendrw   openr   TESTFNwriteioBytesIOseekr   file_digestr   osunlink)	r`   ry   r   r   digestsfr   buf	digestobjs	            r   r-  !HashLibTestCase.check_file_digest  sA   OO%		KK &t0067)""D)QGGDM *	(!jj&  ''4>>@) )**D1Q ' 3 3A >I 2  !4!4!6	B " IIi&&')  		 *) 21 IIi&&'sB   E  #E0>A:F 8F,F  
E-,E-0
E?
F	F &F9c                 b    U R                   U   nU H  nU R                  [        US5        M     g )Nspam)rw   r   r   )r`   algorithm_namer   r/  s       r   check_no_unicode HashLibTestCase.check_no_unicode  s0    00@'3#i)@&I (4r   c                     U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        g )Nr   r   rD   rF   rH   rJ   rI  r   s    r   test_no_unicodeHashLibTestCase.test_no_unicode  sV    e$f%h'h'h'h'r   c                 H    U R                  S5        U R                  S5        g )NrL   rM   rL  r   s    r   test_no_unicode_blake2&HashLibTestCase.test_no_unicode_blake2  s    i(i(r   c                     U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        g )NrN   rO   rP   rQ   rR   rS   rL  r   s    r   test_no_unicode_sha3$HashLibTestCase.test_no_unicode_sha3   sV    j)j)j)j)k*k*r   Nc                    U R                   U   nU GHM  nU" SS9nU R                  UR                  U5        U R                  UR                  U5        U(       aX  U R                  [	        UR                  U5      5      U5        U R                  [	        UR                  U5      5      SU-  5        OUU R                  [	        UR                  5       5      U5        U R                  [	        UR                  5       5      SU-  5        U R                  UR                  U5        U R                  UR                  S5      S   [        U5      R                  5       5        GMP     g )NFr   r'  r   r   )rw   r   
block_sizer+  r)  r   r   ry   r  r6   reprr   )r`   ry   rV  r+  digest_lengthr   r/  r0  s           r   check_blocksize_name$HashLibTestCase.check_blocksize_name	  s   006'3#'>AQ\\:6Q]]K8  QXXm%<!=!.0  Q[[%?!@!"=2   QXXZ+>  Q[[]!3Q{]CQVVT*MM$**S/!,d1gmmo> (4r   c                     U R                  SSS5        U R                  SSS5        U R                  SSS5        U R                  SSS	5        U R                  S
SS5        U R                  SSS5        g )Nr   @   r   r      rD      rF       rH      0   rJ   rY  r   s    r   test_blocksize_and_name'HashLibTestCase.test_blocksize_and_name  sn    !!%R0!!&"b1!!(B3!!(B3!!(C4!!(C4r   c                     U R                  SSS5        U R                  SSS5        U R                  SSS	5        U R                  S
SS5        U R                  SSSS5        U R                  SSSS5        g )NrN      r^  rO      r_  rP   h   ra  rQ   H   r\  rR      r   rS   rb  r   s    r   test_blocksize_name_sha3(HashLibTestCase.test_blocksize_name_sha3$  sr    !!*c26!!*c26!!*c26!!*b"5!!+sAr:!!+sAr:r   c                 N   U R                   U   nU H  nU" 5       n[        b  [        U[        5      (       a  M(  U R                  X#-   S5        U R                  UR                  U5        U R                  UR
                  U5        U R                  UR                  U5        M     g )Ni@  )rw   r   r   r   _capacity_bits
_rate_bits_suffix)r`   ry   capacityratesuffixr   r/  r0  s           r   
check_sha3HashLibTestCase.check_sha3-  s    006'3#')AJq$$7$7X_d3Q--x8Q\\40QYY/ (4r   c                     U R                  SSSS5        U R                  SSSS5        U R                  SS	S
S5        U R                  SSSS5        U R                  SSSS5        U R                  SSSS5        g )NrN   i  i     rO      i@  rP   i   i@  rQ   r  i@  rR      i@     rS   )rt  r   s    r   test_extra_sha3HashLibTestCase.test_extra_sha39  sn    
Cw7
Cw7
Cg6
D#w7S$8S$8r   c                 P    U R                  SSS5        U R                  SSS5        g )NrL   r`  r\  rM   r_  rb  r   s    r   test_blocksize_name_blake2*HashLibTestCase.test_blocksize_name_blake2B  s&    !!)S"5!!)R4r   c                 (    U R                  SSSSS9  g )Nr   r    d41d8cd98f00b204e9800998ecf8427eFr   r2  r   s    r   test_case_md5_0HashLibTestCase.test_case_md5_0G  s    

3:! 	 	
r   c                 (    U R                  SSSSS9  g )Nr      abc 900150983cd24fb0d6963f7d28e17f72Fr   r  r   s    r   test_case_md5_1HashLibTestCase.test_case_md5_1M  s    

6=! 	 	
r   c                 (    U R                  SSSSS9  g )Nr   s>   ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 d174ab98d277d9f5a5611c2c9f419d9fFr   r  r   s    r   test_case_md5_2HashLibTestCase.test_case_md5_2S  s    

M.!	 	 	
r      z!test cannot run on 32-bit systemsr   )sizememusedry_runc                 0    U R                  SSU-  S5        g )Nr      A c9af2dff37468ce5dfee8f2cfc0a9c6dr  r`   r  s     r   test_case_md5_huge"HashLibTestCase.test_case_md5_huge[       	

5$t)%GHr   c                 0    U R                  SSU-  S5        g )Nr   r   28138d306ff1b8281f1a9067e1a1a2b3r  r  s     r   test_case_md5_uintmax%HashLibTestCase.test_case_md5_uintmax`  r  r   c                 *    U R                  SSS5        g )Nr   r   (da39a3ee5e6b4b0d3255bfef95601890afd80709r  r   s    r   test_case_sha1_0 HashLibTestCase.test_case_sha1_0i  s    

63=	?r   c                 *    U R                  SSS5        g )Nr   r  (a9993e364706816aba3e25717850c26c9cd0d89dr  r   s    r   test_case_sha1_1 HashLibTestCase.test_case_sha1_1m  s    

66=	?r   c                 *    U R                  SSS5        g )Nr   8   abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq(84983e441c3bd26ebaae4aa1f95129e5e54670f1r  r   s    r   test_case_sha1_2 HashLibTestCase.test_case_sha1_2q  s    

6N=	?r   c                 0    U R                  SSS-  S5        g )Nr      a@B (34aa973cd4c4daa4f61eeb2bdbad27316534016fr  r   s    r   test_case_sha1_3 HashLibTestCase.test_case_sha1_3v  s    

64'>=	?r   c                 *    U R                  SSS5        g )NrD   r   8d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42fr  r   s    r   test_case_sha224_0"HashLibTestCase.test_case_sha224_0  s    

8S
D	Fr   c                 *    U R                  SSS5        g )NrD   r  823097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7r  r   s    r   test_case_sha224_1"HashLibTestCase.test_case_sha224_1  s    

8V
D	Fr   c                 *    U R                  SSS5        g )NrD   r  875388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525r  r   s    r   test_case_sha224_2"HashLibTestCase.test_case_sha224_2  s    

8
E
D	Fr   c                 0    U R                  SSS-  S5        g )NrD   r  r  820794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67r  r   s    r   test_case_sha224_3"HashLibTestCase.test_case_sha224_3  s    

8TG^
D	Fr   c                 *    U R                  SSS5        g )NrF   r   @e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855r  r   s    r   test_case_sha256_0"HashLibTestCase.test_case_sha256_0  s    

8S
L	Nr   c                 *    U R                  SSS5        g )NrF   r  @ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015adr  r   s    r   test_case_sha256_1"HashLibTestCase.test_case_sha256_1  s    

8V
L	Nr   c                 *    U R                  SSS5        g )NrF   r  @248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1r  r   s    r   test_case_sha256_2"HashLibTestCase.test_case_sha256_2  s    

8
E
L	Nr   c                 0    U R                  SSS-  S5        g )NrF   r  r  @cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0r  r   s    r   test_case_sha256_3"HashLibTestCase.test_case_sha256_3  s    

8TG^
L	Nr   c                 *    U R                  SSS5        g )NrH   r   `38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95br  r   s    r   test_case_sha384_0"HashLibTestCase.test_case_sha384_0  s    

8S-	.r   c                 *    U R                  SSS5        g )NrH   r  `cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7r  r   s    r   test_case_sha384_1"HashLibTestCase.test_case_sha384_1  s    

8V-	.r   c                 *    U R                  SSS5        g )NrH   p   abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu`09330c33f71147e83d192fc782cd1b4753111b173b3b05d22fa08086e3b0f712fcc7c71a557e2db966c3e9fa91746039r  r   s    r   test_case_sha384_2"HashLibTestCase.test_case_sha384_2  s    

8O-	.r   c                 0    U R                  SSS-  S5        g )NrH   r  r  `9d0e1809716474cb086e834e310a4a1ced149e9c00f248527972cec5704c2a5b07b8b3dc38ecc4ebae97ddd87f3d8985r  r   s    r   test_case_sha384_3"HashLibTestCase.test_case_sha384_3  s    

8TG^-	.r   c                 *    U R                  SSS5        g )NrJ   r   ڀcf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3er  r   s    r   test_case_sha512_0"HashLibTestCase.test_case_sha512_0  s    

8SM	Nr   c                 *    U R                  SSS5        g )NrJ   r  ڀddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49fr  r   s    r   test_case_sha512_1"HashLibTestCase.test_case_sha512_1  s    

8VM	Nr   c                 *    U R                  SSS5        g )NrJ   r  ڀ8e959b75dae313da8cf4f72814fc143f8f7779c6eb9f7fa17299aeadb6889018501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909r  r   s    r   test_case_sha512_2"HashLibTestCase.test_case_sha512_2  s    

8OM	Nr   c                 0    U R                  SSS-  S5        g )NrJ   r  r  ڀe718483d0ce769644e2e42c7bc15b4638e1f98b13b2044285632a803afa973ebde0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09br  r   s    r   test_case_sha512_3"HashLibTestCase.test_case_sha512_3  s    

8TG^M	Nr   c                    U R                  UR                  U5        [        US-   5       H  nU" SU-  S9  M     SUS-   -  nU R                  [        XS9  U R                  UR
                  U5        [        US-   5       H  nU" SU-  S9  M     SUS-   -  n	U R                  [        XS9  U R                  UR                  U5        [        SUS-   5       H	  nU" US9  M     U R                  [        USS9  U R                  [        USS9  U R                  [        XS-   S9  U R                  UR                  U5        [        US-   5       H  nU" SU-  S9  M     SUS-   -  n
U R                  [        XS9  U R                  U" 5       R                  5       U" S	S9R                  5       5        [        SS
5       H	  nU" US9  M     U R                  [        USS9  U R                  [        US
S9  [        SS
5       H	  nU" US9  M     U R                  [        USS9  U R                  [        USS9  U R                  [        US
S9  [        SS
5       H	  nU" US9  M     U R                  [        USS9  U R                  [        US
S9  [        SUS-   5       H	  nU" US9  M     U R                  [        USS9  U R                  [        XS-   S9  U" SS9  U" SS9  U R                  [        USS9  U R                  [        USS9  U" SS9  U" US9  U R                  [        USS9  U R                  [        XS-   S9  U R                  [        US5        U" S	S	S	S	SSSS
SSSSS9  g )Nr   r  salt)personr+  r   r(  r   ry  )fanout)depth)
node_depth)
inner_size)	leaf_size    l        )node_offsetr#      rx     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   )r`   rz   	salt_sizeperson_sizekey_sizer+  
max_offsetr)   r  r  r(  s              r   check_blake2HashLibTestCase.check_blake2  s~   ..	:y1}%ATAX& &y1}%*k=00+>{1}%Atax( &q)*kA44kBq+/*AA& +*krB*kqA*k1}M118<xz"AD1H% #hl#*k;002$-779	; q#Aq! *k"=*k#>q#Aa  *k<*k;*k=q#A1% *kbA*kcBq+/*A1% +*kbA*k!mLa i(*kR@-F"
+*krB-Q,O)["5	
r   c                    S nU" SS9nU Hg  nU H^  nU" Xw5      nU" Xf5      n	U" XS9n
UR                  U
R                  5       5        U" XUS9nUR                  UR                  5       5        M`     Mi     UR                  5       $ )Nc                 ~    SnSU-  U-  nSn[        U 5      n[        U 5       H  nX4-   U-  nXGpCUS-	  S-  XV'   M     U$ )Nr  l   KZ= r         )	bytearrayr   )r  seedmaskr   r   outr)   ts           r   selftest_seq4HashLibTestCase.blake2_rfc7693.<locals>.selftest_seq  sZ    Dd"d*AAF#C6]UdN1r'T) # Jr   r_  r  )r(  r+  )r   r   r   )r`   rz   md_lenin_lenr  outeroutleninlenindatar(  unkeyedkeyeds               r   blake2_rfc7693HashLibTestCase.blake2_rfc7693  s    		 +F%e3"62%fAW^^-.#FHU\\^,      r   c                     U R                  [        R                  SSSSS5        / SQn/ SQnU R                  U R	                  [        R                  X5      S5        g )Nr   r\  l    )r]  r_  ra  r\  )r   r   r`     r  r  @c23a7800d98123bd10f506c61e29da5603d763b8bbad2e737f5e765a7bccd475)r
  r   rL   r   r  )r`   
b2b_md_len
b2b_in_lens      r   test_blake2bHashLibTestCase.test_blake2b3  sN    '//2r2r9E%
0
HN	Pr   c                 *    U R                  SSS5        g )NrL   r   ڀ786a02f742015903c6c6fd852552d272912f4740e15847618a86e217f71f5419d25e1031afee585313896444934eb04b903a685b1448b755d56f701afe9be2cer  r   s    r   test_case_blake2b_0#HashLibTestCase.test_case_blake2b_0<  s    

9cM	Nr   c                 *    U R                  SSS5        g )NrL   r  ڀba80a53f981c4d0d6a2797b69f12f6e94c212f14685ac4b74b12bb6fdbffa2d17d87c5392aab792dc252d5de4533cc9518d38aa8dbf1925ab92386edd4009923r  r   s    r   test_case_blake2b_1#HashLibTestCase.test_case_blake2b_1B  s    

9fM	Nr   c                 <    U R                  SSSSSSSSS	S
SSSSS9  g )NrL      foo 920568b0c5873b2f0ab67bedb6cf1b2br      bar   baz   bingr'  r   r$   r     r   Tr+  r(  r  r  r  r  r  r  r  r  r  r  r   s    r    test_case_blake2b_all_parameters0HashLibTestCase.test_case_blake2b_all_parametersH  =     	

9f
, 	 	r   c                 z    [        S5       H,  u  pn[        R                  U5      nU R                  SXUS9  M.     g )NrL   r  r>   r7   r8   r2  r`   msgr(  mds       r   test_blake2b_vectors$HashLibTestCase.test_blake2b_vectorsZ  5    (3LCb--$CJJy#sJ3 4r   c                     U R                  [        R                  SSSSS5        / SQn/ SQnU R                  U R	                  [        R                  X5      S5        g )N   r_  l    )r   r]  r^  r_  )r   r   r\  A   r  r  @6a411f08ce25adcdfb02aba641451cec53c598b24f4fc787fbdc88797f4c1dfe)r
  r   rM   r   r  )r`   
b2s_md_len
b2s_in_lens      r   test_blake2sHashLibTestCase.test_blake2s`  sN    '//1aRC%
.
HN	Pr   c                 *    U R                  SSS5        g )NrM   r   @69217a3079908094e11121d042354a7c1f55b6482ca1a51e1b250dfd1ed0eef9r  r   s    r   test_case_blake2s_0#HashLibTestCase.test_case_blake2s_0i  s    

9c
L	Nr   c                 *    U R                  SSS5        g )NrM   r  @508c5e8c327c14e2e1a72ba34eeb452f37458b209ed63a294d999b4c86675982r  r   s    r   test_case_blake2s_1#HashLibTestCase.test_case_blake2s_1n  s    

9f
L	Nr   c                 <    U R                  SSSSSSSSS	S
SSSSS9  g )NrM   r1   bf2a8f7fe3c555012a6f8046e646bc75r   r3  r4  r5  r'  r   r$   r  r6  r   Tr7  r  r   s    r    test_case_blake2s_all_parameters0HashLibTestCase.test_case_blake2s_all_parameterss  r:  r   c                 z    [        S5       H,  u  pn[        R                  U5      nU R                  SXUS9  M.     g )NrM   r  r<  r=  s       r   test_blake2s_vectors$HashLibTestCase.test_blake2s_vectors  rB  r   c                 *    U R                  SSS5        g )NrN   r   86b4e03423667dbb73b6e15454f0eb1abd4597f9a1b078e3f5b5a6bc7r  r   s    r   test_case_sha3_224_0$HashLibTestCase.test_case_sha3_224_0  s    

:s
D	Fr   c                 P    [        S5       H  u  pU R                  SX5        M     g )NrN   r>   r2  r`   r>  r?  s      r   test_case_sha3_224_vector)HashLibTestCase.test_case_sha3_224_vector  !    #J/GCJJz3+ 0r   c                 *    U R                  SSS5        g )NrO   r   @a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434ar  r   s    r   test_case_sha3_256_0$HashLibTestCase.test_case_sha3_256_0  s    

:s
L	Nr   c                 P    [        S5       H  u  pU R                  SX5        M     g )NrO   r_  r`  s      r   test_case_sha3_256_vector)HashLibTestCase.test_case_sha3_256_vector  rc  r   c                 *    U R                  SSS5        g )NrP   r   `0c63a75b845e4f7d01107d852e4c2485c51a50aaaa94fc61995e71bbee983a2ac3713831264adb47fb6bd1e058d5f004r  r   s    r   test_case_sha3_384_0$HashLibTestCase.test_case_sha3_384_0  s    

:s-	.r   c                 P    [        S5       H  u  pU R                  SX5        M     g )NrP   r_  r`  s      r   test_case_sha3_384_vector)HashLibTestCase.test_case_sha3_384_vector  rc  r   c                 *    U R                  SSS5        g )NrQ   r   ڀa69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26r  r   s    r   test_case_sha3_512_0$HashLibTestCase.test_case_sha3_512_0  s    

:sM	Nr   c                 P    [        S5       H  u  pU R                  SX5        M     g )NrQ   r_  r`  s      r   test_case_sha3_512_vector)HashLibTestCase.test_case_sha3_512_vector  rc  r   c                 T    U R                  SSSS5        U R                  SSSS5        g )NrR   r   @7f9c2ba4e88f827d616045507605853ed73b8093f6efbc88eb1a6eacfa66ef26T7f9cr  r   s    r   test_case_shake_128_0%HashLibTestCase.test_case_shake_128_0  ,    

;
L
	 	

;VT2r   c                 R    [        S5       H  u  pU R                  SXS5        M     g )NrR   Tr_  r`  s      r   test_case_shake128_vector)HashLibTestCase.test_case_shake128_vector  #    #K0GCJJ{CT2 1r   c                 T    U R                  SSSS5        U R                  SSSS5        g )NrS   r   @46b9dd2b0ba88d13233b3feb743eeb243fcd52ea62b81b82b50c27646ed5762fT46b9r  r   s    r   test_case_shake_256_0%HashLibTestCase.test_case_shake_256_0  r~  r   c                 R    [        S5       H  u  pU R                  SXS5        M     g )NrS   Tr_  r`  s      r   test_case_shake256_vector)HashLibTestCase.test_case_shake256_vector  r  r   c                 0   SnU R                    HZ  nU" SS9nUR                  S5        UR                  SU-  5        UR                  S5        U" SU-  SS9nUR                  S5        M\     [        R                  " 5       nUR                  S5        UR                  SU-  5        UR                  S5        U R	                  UR                  5       S5        [        R                  " SSU-  -   S-   5      nU R	                  UR                  5       S5        g )Ni   Fr      1   #   x@1cfceca95989f51f658e3f3ffe7f1cd43726c9e088c13ee10b46f57cef135b94)r   r   r   rF   r   r   )r`   gil_minsizer   r0  s       r   test_gilHashLibTestCase.test_gil  s     **DU+AHHTNHHTK'(HHTNTK'?AHHTN + NN		#$	KKMN	

 NN4$"44t;<KKMN	
r   c                 <  ^	^
 [         R                  " 5       m
SnSnUS-  m	[         R                  " T	U-  5      R                  5       nU	U
4S jn/ n[        U5       Hk  n[	        T	5      SU-  -  nU R                  US5        U R                  U[	        U5      -  S5        [        R                  " UU4S9nUR                  U5        Mm     U H  nUR                  5         M     U H  nUR                  5         M     U R                  UT
R                  5       5        g )Nr  s   swineflui@ c                    > SnU[        T5      :  a,  TR                  TXU -    5        X-  nU[        T5      :  a  M+  g g r   )r)  r   )
chunk_sizeindexr   hashers     r   hash_in_chunks=HashLibTestCase.test_threaded_hashing.<locals>.hash_in_chunks  s@    E#d)#d5);<=# #d)#r   r   r   )targetrl   )r   r   r   r   r)  assertGreaterr   	threadingThreadappendstartjoin)r`   num_threadssmallest_dataexpected_hashr  threads	threadnumr  threadr   r  s            @@r   test_threaded_hashing%HashLibTestCase.test_threaded_hashing  s     #v%T+%56@@B	$ {+ITrY7Jz1-Z#m*<<a@%%^,6=:FNN6" , FLLN FKKM  	(8(8(:;r   c                 P    U R                   nUb  U R                  U[        5        g g rj   )r   r   int)r`   	fips_modes     r   test_get_fips_mode"HashLibTestCase.test_get_fips_mode  s(    %%	 !!)S1 !r   c           	      R   U R                   R                  5        Hf  u  pUR                  S5      (       a  M  U HC  n U" 5       nU R	                  US9   [
        R                  " U [        U5      5        S S S 5        ME     Mh     g ! [         a     MY  f = f! , (       d  f       Ml  = f)N)rg   r.  blake)rz   )rw   r   r5   r   r   r   check_disallow_instantiationtype)r`   r   r   rz   r'   s        r   test_disallow_instantiation+HashLibTestCase.test_disallow_instantiation  s    '+'@'@'F'F'H#I##$?@@+#A \\k\:88tAwG ;:  , (I " ::s   B!B
BB
B&zneed _hashlibc                 p    [         R                  " U [        5        [         R                  " U [        5        g rj   )r   r  r   r   r   s    r    test_hash_disallow_instantiation0HashLibTestCase.test_hash_disallow_instantiation   s$     	,,T48,,T7;r   c           	      b   U R                   R                  5        H]  u  pU HR  n [        U" 5       5      nU R	                  US9   U R                  [        S5         SUl        S S S 5        S S S 5        MT     M_     g ! [         a     Mh  f = f! , (       d  f       N0= f! , (       d  f       M  = f)N)	hash_typezimmutable typeF)rw   r   r  r   r   r   r   value)r`   r   r   rz   r  s        r   test_readonly_types#HashLibTestCase.test_readonly_types&  s    '+'@'@'F'F'H#I+ $[] 3I \\I\6//	;KL*/	 M 76  , (I "  ML 76s5   A=BB	$B=
B
B
BB
B.)r   rw   )F)r   r   N)ur^   
__module____qualname____firstlineno__r   r   r?  ry   r   Py_DEBUGrZ   rc   r   propertyr   r   r   r   r   r   r   r2   skipIfr   r   r   r   r   r   r   r  r  r  r	   r   r$  r2  r-  rI  rM  requires_blake2rP  requires_sha3rS  rY  rc  rk  rt  r{  r~  r  r  r  r   maxsizer   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r&  r*  r.  r8  r@  rI  rM  rQ  rU  rX  r\  ra  rf  ri  rm  rp  rt  rw  r|  r  r  r  r  r
   reap_threadsrequires_working_threadingr  r  cpython_onlyr  
skipUnlessr   r  r  __static_attributes____classcell__)r   s   @r   r@   r@   \   s   7 ;'F "$G!3!Gw7G7GH?T ; ;  '
><	= __]_&9:? ;?( __]_&9:1J ;1Jf5?L4D' :@ ul l ul l:2(4J( ) ) + + DE+/?&5 ; ;
0 9 9 5 5


 __S[[37*,OPS1WQ6I 7 QI __S[[37*,OPS1WQ6I 7 QI???
?FFF
F
NNN
N
.
.
..N
N
NN
K
Z!, P P N N
 N N
  " 4 4
 P P N N N N  " 4 4
 F F , , N N , , . .
 , , N N
 , ,3333
: ""002!< 3 #!<F2
 H H T)?;< <<
0 0r   r@   c            
       P   \ rS rSr/ SQrSSSSS\" S5      4SSS	S
S\" S5      4SSSS
S\" S5      4/r\R                  S5      S4\R                  S5      S4\R                  S5      S4\R                  S5      S4\R                  S5      S4/\R                  S5      S4\R                  S5      S4\R                  S5      S4\R                  S5      S4\R                  S5      S4/\R                  S5      S4\R                  S5      S4\R                  S5      S4\R                  S 5      S!4\R                  S"5      S4/S#.r	S$ r
\R                  " \SL S%5      S& 5       r\R                  " \" \S'5      S(5      \R                  " \" 5       S)S*9S+ 5       5       rS, rS- rS.rg)/KDFTestsi4  ))   password   saltr   N)r  r  r'  N)r  r  r  N)s   passwordPASSWORDpasswords$   saltSALTsaltSALTsaltSALTsaltSALTsaltr  r  )s	   pass words   sa ltr  r   r   r   r   ڀ77d6576238657b203b19ca42c18a0497f16b4844e3074ae8dfdffa3fede21442fcd0069ded0948f8326a753a0fc81f17e8d3e0fb2e0d3628cf35e20c38d18906r  s   NaClr  rD  ڀfdbabe1c9d3472007856e7190d01e9fe7c6ad7cbc8237830e77376634b3731622eaf30d92e22a3886ff109279d9830dac727afb94a83ee6d8360cbdfa2cc0640s   pleaseletmeins   SodiumChloridei @  ڀ7023bdcb3afd7348461c06cd81fd38ebfda8fbba904f8e3ea9b543f6545da1f2d5432955613f0fcf62d49705242a9af9e61e85dc0d651e40dfcf017b45575887(0c60c80f961f0e71f3a9b524af6012062fe037a6N(ea6c014dc72d6f8ccd1ed92ace1d41f0d8de8957(4b007901b765489abead49d926f721d065a429c123d2eec4fe41c849b80c8d83662c0e44a8b291a964cf2f07038    56fa6aa75548099dcc37d7f03425e0c3@120fb6cffcf8b32c43e7225256c4f837a86548c92ccc35480805987cb70be17b@ae4d0c95af6b46d32d0adff928f06dd02a303f8ef3c251dfd6e2d85a95474c43@c5e478d59288c841aa530db6845c4c8d962893a001ce4e11a4963873aa98134aP348c89dbcbd32b2f32d814b8116e84cf2b17347ebc1800181c4e2a1fb8dd53e1c635518c7dac47e9(    89b69d0516f829893c696226650a8687ڀ867f70cf1ade02cff3752599a3a53dc4af34c7a669815ae5d513554e1c8cf252c02d470a285a0501bad999bfe943c08f050235d7d68b1da55e63f73b60a57fceڀe1d9c16aa681708a45f5c7c4e215ceb66e011a2e9f0040713f18aefdb866d53cf76cab2868a39b9f7840edce4fef5a82be67335c77a6068e04112754f27ccf4eڀd197b1b33db0143e018b12f3d1d1479e6cdebdcc97c5c0f87f6902e072f457b5143f30602641b3d55cd335988cb36b84376060ecd532e039b742a239434af2d5ڀ8c0511f4c6e597c6ac6315d8f0362e225f3c501495ba23b868c005174dc4ee71115b59f9e60cd9532fa33e0f75aefe30225c583a186cd82bd4daea9724a3d3b8r\   9d9e9c4cd21fe4be24d5b8244c759665)r   rF   rJ   c                    U R                   R                  5        H  u  p4X2;  a  M  [        U R                  5       H  u  pVUu  pxpXE   u  pU(       a  Un
U" X7XU
5      nU R	                  XX7XU
45        U" U[        U5      [        U5      X5      nU R	                  X5        U" U[        U5      [        U5      X5      nU R	                  X5        U
b  M  U" X7X5      nU R	                  XX7X45        M     M     U R                  [        S5         U" SSSS5        S S S 5        SU;   a  U R                  [        USSSS5        U R                  [        USSS	S5        U R                  [        USSSS
5        U R                  [        USSSS5        U R                  [        USSSSS
5        U R                  [        USSSSS5        U" SSSSS S9nU R	                  XR                   S   S
   S
   5        g g ! , (       d  f       N= f)Nz.*unsupported.*unknowns   passr  r   r   s   sha1passr  r   r  r  )r9   passwordr  
iterationsdklen)pbkdf2_resultsr   	enumeratepbkdf2_test_vectorsr   
memoryviewr  r   r   r   r   )r`   pbkdf2	supportedr   resultsr)   vectorr  r  roundsr  expectedoverwrite_dklenr  s                 r   _test_pbkdf2_hmacKDFTests._test_pbkdf2_hmacm  s.   $($7$7$=$=$? K+&t'?'?@	06-,3J)"+E[D%H  "-u!MO[*X*>'-v>  /[)H*=&t_f=  /= EC$$S&1T%JL! A %@, ##J0AB9gw2 C Y67GWa 66661 FFGWa FFGWb FFGWa FFGWa 6KgD*CS"5"5f"=a"@"CD+  CBs   G88
Hzrequires OpenSSL bindingsc                 L    U R                  [        R                  [        5        g rj   )r  openssl_hashlibpbkdf2_hmacr   r   s    r   test_pbkdf2_hmac_cKDFTests.test_pbkdf2_hmac_c  s    ::<QRr   scryptz   test requires OpenSSL > 1.1zscrypt is blocked in FIPS mode)reasonc                     U R                    H.  u  pp4pV[        R                  " XX4US9nU R                  Xv5        M0     [        R                  " SSSSSS9  U R	                  [
        5         [        R                  " SSSSSS9  S S S 5        U R	                  [
        5         [        R                  " SSSSSS9  S S S 5        U R	                  [
        5         [        R                  " S5        S S S 5        U R	                  [
        5         [        R                  " SS5        S S S 5        U R	                  [
        5         [        R                  " SSSSSS	9  S S S 5        S
 HD  nU R	                  [        [        [
        45         [        R                  " SSUSSS9  S S S 5        MF     S HD  nU R	                  [        [        [
        45         [        R                  " SSSUSS9  S S S 5        MF     S HD  nU R	                  [        [        [
        45         [        R                  " SSSSUS9  S S S 5        MF     S HE  nU R	                  [        [        [
        45         [        R                  " SSSSSUS9  S S S 5        MG     S HE  n	U R	                  [        [        [
        45         [        R                  " SSSSSU	S9  S S S 5        MG     g ! , (       d  f       GNY= f! , (       d  f       GN5= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GM  = f! , (       d  f       GM  = f! , (       d  f       GMo  = f! , (       d  f       GM8  = f! , (       d  f       GM   = f)N)r  nr(   pr  r  r'  rD  r   r  r  r  )r  r   r   N)r  r   N)r  N)r  r  r(   r  maxmem)r  r  r(   r  r  )scrypt_test_vectorsr   r  r   r   r   r   r   )
r`   r  r  r  r(   r  r  resultr   r  s
             r   test_scryptKDFTests.test_scrypt  s    261I1I-HA!^^H1QGFV. 2J
 	{Aa@y)NN:GqAC *y)NN;VqAC * y)NN;' *y)NN;0 *y)NN;1ag> *!A""Jy#IJ{AaH KJ " A""Jy#IJ{AaH KJ  A""Jy#IJ{AaH KJ  !F""Jy#IJ{Aa&,. KJ !  E""Jy#IJ{Aa%*, KJ  1 *))) *))))) KJ KJ KJ KJ KJsx   ,K"K)K;LLL1MM%M*0M=
K&)
K8;
L

L
L.1
M	
M	
M'	*
M:	=
N	c                     U R                  S[        R                  5        U R                  S[        R                  5        g )N
blake2b512zsha3-512)r   r   r   r   s    r   test_normalized_nameKDFTests.test_normalized_name  s.    w'C'CDW%A%ABr   c                 H   SS-  n[         R                  " 5       nU R                  [        R                  [
        R                  5        [        [
        R                  S5       n[        S5       H%  nUR                  U5        UR                  U5        M'     S S S 5        [        [
        R                  S5       n[         R                  " U[         R                  5      nS S S 5        U R                  UR                  5       WR                  5       5        U R                  UR                  UR                  5        U R                  [!        U5      [!        U5      5        U R#                  [$        5         [         R                  " S S5        S S S 5        U R#                  [$        5         [        [
        R                  S5       n[         R                  " US5        S S S 5        S S S 5        U R#                  [$        5         [        [
        R                  S5       n[         R                  " US5        S S S 5        S S S 5         " S S	5      nU R#                  [&        5         [         R                  " U" 5       [         R                  5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN6= f! , (       d  f       N= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)
Nr  i   r5  r   r6  rF   r(   c                        \ rS rSrS rS rSrg).KDFTests.test_file_digest.<locals>.NonBlockingi  c                     g rj   r   )r`   rC  s     r   readinto7KDFTests.test_file_digest.<locals>.NonBlocking.readinto      r   c                     g)NTr   r   s    r   readable7KDFTests.test_file_digest.<locals>.NonBlocking.readable  r  r   r   N)r^   r  r  r  r  r  r  r   r   r   NonBlockingr    s    r   r  )r   rF   
addCleanupr?  r@  r   r9  r8  r   r   r:  r>  r   r   ry   r   r  r   r   BlockingIOError)r`   r   d1rB  r   d2r  s          r   test_file_digestKDFTests.test_file_digest  s    e|^^		9#3#34)""D)Q2Y		$  *
 )""D)Q$$Q7B * 	8"''*d2hR)z*h/ + z*i&&,##Ax0 - + z*i&&-##Ax0 . +	 	 /w~~> 0/; *)
 *) +* -, +*
 .- +* 0/sx   #5J:&J*5J<*KKKLK15L$+L
J'*
J9<
K
K	K
K.1
K?	;L
L
L!r   )r^   r  r  r  r  r   r  r7   r8   r  r  r2   r  r  r  r  r   r   r   r  r  r  r  r   r   r   r  r  4  sq   	 
c2q!Y  (j  k  	l	gtQI  7y  -z  	{	,eQ9  FH  <I  	J ]]EFM]]EFM]]EFM]] & '(*,]]=>EH ]] > ?@DF]] > ?@DF]] > ?@DF ]] J KLNP]]=>EH ]] > ?@DF ]] > ?@DF ]] > ?@DF ]] > ?@BD ]]=>EH-$NL/Eb ___,.IJS KS (357__]_-MN#, O7#,JC"?r   r  __main__);r   binasciir   r   rW   r;  r   r\   r?  r   r   	sysconfigr  r2   warningsr   r   test.supportr   r   test.support.import_helperr   r   r	   r
   http.clientr   default_builtin_hashesget_config_varr[   r4   r   r6   builtin_hash_namesr   mapr  r  r   r   r   r   r   r   	frozensetrf   r  r  check_sanitizerr   r  r*   r.   r>   TestCaser@   r  r^   mainr   r   r   <module>r)     s       	   	 	 
      ( : " * ) % C ))*EF+N'--c288:@@ESYY(:;<N &i
|DLL %%g/AB ##t,	##	M3CD 1 U0h'' U0p|?x   |?~ zMMO O&  DG%K  Gs$   E*  F *F FFF