+
    Bi                     <   ^ RI t ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIHtHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ R	IHt 0 Rmt]P:                  ! R
4      t]f   ]tMG]P?                  R4      PA                  4       PC                  R4      t"]#! ]$! ]%P>                  ]"4      4      t]! RR.R7      t& ^ RI'H(t(H)t)H*t*H+t+  ^ RI.t.]P^                  ! ].R4      t0 ^ RI1t1]P^                  ! ]1R4      t2R t3Rt4R t5 ! R R]Pl                  4      t7 ! R R]Pl                  4      t8]9R8X  d   ]Pt                  ! 4        R# R#   ], d    Rt(Rt)]-! 4       t*R t+ Li ; i  ], d    Rt. Li ; i  ], d    Rt1 Li ; i)    N)	unhexlify)support)_4G
bigmemtest)hashlib_helper)import_fresh_module)requires_resource)threading_helper)HTTPExceptionPY_BUILTIN_HASHLIB_HASHES",hashlib_hashlib)fresh)HASHHASHXOFopenssl_md_meth_namesget_fips_modec                      ^ # )r    r       (/usr/lib/python3.14/test/test_hashlib.pyr   r   2   s    r   zrequires _blake2zrequires _sha3c                     R pRpV  F4  pW!V^,	          ^,          ,          W^,          ,          ,           ,          pK6  	  V# )0123456789abcdef r   )shris   &   r   hexstrr!   D   s;    A
A	Q#~s7++ Hr   z(http://www.pythontest.net/hashlib/{}.txtc              #     "   \         P                  V 4      p \        P                  ! VR R7      pT;_uu_ 4        T Fh  pTP                  4       pTP                  R4      '       g	   T'       g   K4  TP                  R4      p\        P                  T^ ,          4      T^ &   Tx  Kj  	  RRR4       R#   \        \
        3 d'    \        P                  ! RP                  T4      4      hi ; i  + '       g   i     R# ; i5i)zutf-8)encodingzCould not retrieve {}#r   N)URLformatr   open_urlresourceOSErrorr   unittestSkipTeststrip
startswithsplitbytesfromhex)	hash_nameurltestdatalinepartss   &    r   read_vectorsr5   O   s     
**Y
CE++C'B 
D::<Ds##4JJsOE}}U1X.E!HK  
 ]# E 7 > >s CDDE	s8   DB4 
D4C.0:C.*
D47C++D.C?	9	Dc                     a a ] tR t^_t oRftRR0t]P                  R8H  ;'       g    ]P                  t
R tV 3R lt]R 4       t]R 4       tR tR	 tR
 tR tR t]P,                  ! ]! 4       R4      R 4       t]P,                  ! ]! 4       R4      R 4       tR tR t]P8                  ! R4      R 4       tR tR tR t R t!]"! R4      R 4       t#]"! R4      R 4       t$]"! R4      R 4       t%RgR lt&R t'R t(R  t)]*R! 4       t+],R" 4       t-RhR$ lt.R% t/],R& 4       t0R' t1],R( 4       t2]*R) 4       t3R* t4R+ t5R, t6]P,                  ! ]7Pp                  ]9^,           8  R-4      ]:! ]9^,           ^RR.7      R/ 4       4       t;]P,                  ! ]7Pp                  ]9^,
          8  R-4      ]:! ]9^,
          ^RR.7      R0 4       4       t<R1 t=R2 t>R3 t?R4 t@R5 tAR6 tBR7 tCR8 tDR9 tER: tFR; tGR< tHR= tIR> tJR? tKR@ tLRA tMRB tNRC tORD tPRE tQRF tR]*RG 4       tS]*RH 4       tT]*RI 4       tU]*RJ 4       tV]*RK 4       tW]*RL 4       tX]*RM 4       tY]*RN 4       tZ]*RO 4       t[]*RP 4       t\],RQ 4       t]],RR 4       t^],RS 4       t_],RT 4       t`],RU 4       ta],RV 4       tb],RW 4       tc],RX 4       tdRY teRZ tfR[ tgR\ thR] tiR^ tj]kP                  ]kP                  ! 4       R_ 4       4       tnR` to]P                  Ra 4       tq]P                  ! ]sR#JRb4      Rc 4       ttRd tuRetvVtwV ;tx# )iHashLibTestCase	shake_128	shake_256posixc                     \         P                  ! V4      #   \         dU   pT P                  '       d8   T\        9   d-   \
        P                  ! \        4      P                  R TTR7        Rp?R# Rp?ii ; i)z%Did a C extension fail to compile? %s)exc_infoN)		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_modulel   sh    	**;77" 	---+2O!!(+33;" 4 
 	s    A7A	A22A7c                >  <a  \        4       pS P                   F"  pVP                  VP                  4       4       K$  	  S P	                  R 4      pV'       d   VP                  RR04       / S n        V F  p\        4       S P                  V&   K  	  S P                  P                  4        FF  w  rFVP                  \        \        V4      4       RV/R lpRV 2Vn
        VP                  V4       KH  	  S P	                  R4      pVS n        V'       d   S P                  VR4       S P                  VR4       S P                  P                  4        F<  w  rF\        VR	V,           R
4      p	V	'       g   K#   V	! 4        VP                  V	4       K>  	  V 3R lp
S P	                  R4      pV'       d	   V
! R4       S P	                  R4      pV'       d	   V
! R4       S P	                  R4      pV'       d!   V
! R4       V
! R4       V
! R4       V
! R4       S P	                  R4      pV'       d1   V
! R4       V
! R4       V
! R4       V
! R4       V
! R4       V
! R4       V'       d   V
! R4       V
! R4       \        \        S `B  ! V/ VB  R
#   \         d     EKG  i ; i)_blake2blake2bblake2s _HashLibTestCase__algorithm_namec                 6    \         P                  ! V .VO5/ VB # N)r   new)rO   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_Nc                 x   < \        \        R 4      ! V 4      pSP                  V ,          P                  V4       R# )__get_builtin_constructorN)getattrr   constructors_to_testadd)nameconstructorrF   s   & r   add_builtin_constructor9HashLibTestCase.__init__.<locals>.add_builtin_constructor   s.    !'+FGMK%%d+//<r   _md5md5_sha1sha1_sha2sha224sha256sha384sha512_sha3sha3_224sha3_256sha3_384sha3_512r8   r9   )setsupported_hash_namesr_   lowerrI   updater^   itemsr]   r   rD   r   assertHasAttr
ValueErrorsuperr7   __init__)rF   rS   rT   
algorithms	algorithmrL   constructorsrU   r   ra   rb   rd   rf   rh   rm   	__class__s   f*,            r   rz   HashLibTestCase.__init__y   sS   U
22INN9??,- 3 11)<y)45$&!#I365D%%i0 $
 (,'@'@'F'F'H#IWWi89F) F=i[IAJQ (I 22:>  x7x8+/+D+D+J+J+L'	%h
90DdK;6#
 %((5 ,M	= ..v6#E*//8#F+//8#H-#H-#H-#H-//8#J/#J/#J/#J/#K0#K0#I.#I.ot-t>v>E & s   8JJJc                t    V P                   P                  4       p\        P                  P	                  V4      # rQ   )r^   values	itertoolschainfrom_iterable)rF   r}   s   & r   hash_constructors!HashLibTestCase.hash_constructors   s+    00779,,\::r   c                    \        4       # rQ   )r   rF   s   &r   is_fips_modeHashLibTestCase.is_fips_mode   s
    r   c                    \         P                   ! R \        ^
4      4      pV P                   FK  pV! VRR7      pVP                  V P                  9   d   VP                  ^4       K;  VP                  4        KM  	  R# )bFusedforsecurityN)arrayranger   r`   shakes	hexdigest)rF   aconsrU   s   &   r   test_hash_arrayHashLibTestCase.test_hash_array   sV    KKU2Y'**DQ.Avv$B +r   c                z    V P                  \        P                  \        R  V P                   4       4      4       R# )c              3   V   "   T F  pVP                  4       '       g   K  Vx  K!  	  R # 5irQ   )islower).0_algos   & r   	<genexpr>=HashLibTestCase.test_algorithms_guaranteed.<locals>.<genexpr>   s"      &#<%]]_ #<s   )
)N)assertEqualr   algorithms_guaranteedrr   rs   r   s   &r   test_algorithms_guaranteed*HashLibTestCase.test_algorithms_guaranteed   s2    66 &4#<#< & &	'r   c                .   V P                  \        \        P                  4      P	                  \        P
                  4      4       V P                  R \        P
                  4       \        P
                   F  p\        P                  ! VRR7      pK  	  R# )	undefinedFr   N)
assertTruerr   r   r   issubsetalgorithms_availableassertNotInrR   )rF   r`   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                   \         P                  ! R RR7       V P                  '       d   V P                  R4       V P                   F  pV! RR7       V! RRR7       K  	  \         P                  ! RRR7       \         P
                  ! RR7       V P                  e<   V P                  P                  RRR7       V P                  P                  RR7       R# R# )rj   Tr   skip in FIPS moder   re   N)r   rR   r   skipTestr   re   r   rX   rF   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                r   \         P                  ! R RR7       V P                   F  pV! RR7       V! RRR7       K  	  \         P                  ! RRR7       \         P                  ! RR7       V P                  e<   V P                  P                  RRR7       V P                  P                  RR7       R# R# )rj   Fr   r   re   N)r   rR   r   re   r   rX   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                   V P                    EFG  pV P                  VP                  4      ;_uu_ 4        V! R 4       V! R R7       V! R R7       RRR4       V! R 4      P                  pV P                  V4      ;_uu_ 4        \        P
                  ! VR 4       \        P
                  ! VR R7       \        P
                  ! VR R7       V P                  '       dq   W P                  P                  9   dW   V P                  P                  VR 4       V P                  P                  VR R7       V P                  P                  VR R7       RRR4       EKJ  	  R#   + '       g   i     EL; i  + '       g   i     EKt  ; i)r   datastringN)r   subTestrD   r`   r   rR   r   _constructors)rF   ra   digest_names   &  r   test_clinic_signature%HashLibTestCase.test_clinic_signature   s	   11Kk2233C %3' 4
 &c*//Kk**K-Kc2K4 ===[MM4O4O%OMM%%k37MM%%k%<MM%%k#%> +* 2333 +**s   EC
E/E,/Fc                   R pRp\         P                  ! R4      p\         P                  ! R4      p\         P                  ! R4      pV3\        WR7      V3V3\        WR7      V3.\        P                  ! V.V..\        VR7      \        WR7      .V.4      O\        P                  ! R.\        RR	7      \        VRR7      \        VRR
7      \        WRR7      .V.4      OV3\        RR	7      V3NV3\        RR	7      V3NV3\        VR7      V.NV3\        VR7      V.NR\        WR7      V.N EFc  w  rgpV P
                   EFK  p	V	! R 4      P                  p
V P                  V	P                  WgR7      ;_uu_ 4        V P                  \        V4      ;_uu_ 4        V	! V/ VB  RRR4       RRR4       V P                  WVR7      ;_uu_ 4        V P                  \        V4      ;_uu_ 4        \        P                  ! V
.VO5/ VB  RRR4       V P                  '       db   WP                  P                  9   dH   V P                  \        V4      ;_uu_ 4        V P                  P                  ! V
.VO5/ VB  RRR4       RRR4       EKN  	  EKf  	  R#   + '       g   i     L; i  + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     L^; i  + '       g   i     EK  ; i)r   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   N)r   )r   r   )r   r   r   r   )rS   kwdsr   )reescapedictr   productr   r`   r   rD   assertRaisesRegex	TypeErrorr   rR   r   r   )rF   nomsgmymsgconflicting_callduplicated_paramunexpected_paramrS   r   errmsgra   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M//	6BB#T2T2 C N \\+t\DD//	6BBK?$?$? C'==+F+FF!33IvFF MM--kIDIDI G ED  69#
> CB NMM CB GF EDDsf    J/		J(J/	K)	2KK)	'8K)	!K K)	J,'J/	/K KK)	K&!K)	)K;c                    V P                  \        \        P                  R 4       V P                  \        \        P                  ^4       R# )zspam spam spam spam spamN)assertRaisesrx   r   rR   r   r   s   &r   test_unknown_hash!HashLibTestCase.test_unknown_hash?  s/    *gkk3MN)W[[!4r   c                f    V P                  \        P                  ! R 4      P                  R4       R# )SHA256rj   N)r   r   rR   r`   r   s   &r   test_new_upper_to_lower'HashLibTestCase.test_new_upper_to_lowerC  s!    X.33X>r   zmodifies sys.modulesc                   \        \        R 4      p\        \        R4      pV P                  \        VR4        ^ RIpR\        P                  R&   VP                  4         V P                  \        VR4       R\        4       9   d   X\        P                  R&   M\        P                  R  V P                  \        V^4       V! R4      pV P                  VXP                  4       V P                  \        V4      RR.4       R#   \
         d    T P                  R4        Li ; i  R\        4       9   d   X\        P                  R&   i \        P                  R i ; i)r\   __builtin_constructor_cachetestNz_md5 module not availablerd   re   MD5)r]   r   r   rx   rd   ImportErrorr   sysmodulesclearlocalsr   assertIsre   r   sorted)rF   get_builtin_constructorbuiltin_constructor_cacherd   ra   s   &    r   test_get_builtin_constructor,HashLibTestCase.test_get_builtin_constructorF  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&)6Ec                   V P                    F  pV! R R7      pVP                  V P                  9   da   V P                  VP	                  ^4      \
        4       V P                  \        VP	                  ^4      4      VP                  ^4      4       K  V P                  VP	                  4       \
        4       V P                  \        VP	                  4       4      VP                  4       4       K  	  R# Fr   N)	r   r`   r   assertIsInstancer   r.   r   r!   r   rF   r   r   s   &  r   test_hexdigestHashLibTestCase.test_hexdigesta  s    **DU+Avv$%%ahhrlE:  !5q{{2G%%ahhj%8  
!3Q[[]C +r   c           
        RpV P                    F  pV! RR7      pVP                  V P                  9  d   K)  \        e   \	        V\        4      '       d   KI  VP
                  VP                  3 FW  pV P                  \        VR4       V F7  pV P                  \        \        34      ;_uu_ 4        V! V4       RRR4       K9  	  KY  	  K  	  R#   + '       g   i     KV  ; i)   Fr   N)i    l    l   
    l            l    l   
        i)
r   r`   r   r   
isinstancer   r   r   rx   OverflowError)rF   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Gv HG * 0 + HGGs   2	CC"c           	        V P                    F  pV! R R7      pV P                  VP                  \        4       VP                  V P                  9   d(   V P                  VP                  V P                  4       M&V P                  VP                  V P                  4       V P                  VP                  \        P                  ! VP                  R R7      P                  4       K  	  R# r   )
r   r   r`   strrs   assertInr   r   r   rR   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                   RpRpRpRpV P                    EF  pV! RR7      pVP                  V4       VP                  V4       VP                  V4       VP                  V4       VP                  V P                  9   d   RpMR	pV! RR7      pVP                  W,           V,           V,           4       V P	                  VP
                  ! V!  VP
                  ! V!  4       V! W,           V,           V,           RR7      p	V P	                  VP
                  ! V!  V	P
                  ! V!  4       V! W,           V,           RR7      p
V
P
                  ! V!  pV
P                  4       pVP                  V4       V P	                  VP
                  ! V!  VP
                  ! V!  4       V P	                  V
P
                  ! V!  V4       EK  	  R# )
   aFr   Ns   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas   bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbs~   ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccs   dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd)   r   )r   ru   r`   r   r   r   copy)rF   aasbeesceesdeesr   m1rS   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                    RR,          p\         P                  ! 4       p\        ^ R4       F  pVP                  V4       K  	  VP                  R4       V P	                  VP                  4       R4       R# )             hello world@a5364f7a52ebe2e25f1838a4ca715a893b6fd7a23f2a0d9e9762120da8b1bf53N                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   )r   rj   r   ru   r   r   rF   zero_1mbr   r    s   &   r   test_sha256_update_over_4gb+HashLibTestCase.test_sha256_update_over_4gb  sW    $&NNq$AHHX  	 (jkr   c                    RR,          p\         P                  ! 4       p\        ^ R4       F  pVP                  V4       K  	  VP                  R4       V P	                  VP                  4       R4       R# )r  r  r  r  @e2d4535e3b613135c14f2fe4e026d7ad8d569db44901740beffa30d430acb038Nr  )r   ro   r   ru   r   r   r  s   &   r   test_sha3_256_update_over_4gb-HashLibTestCase.test_sha3_256_update_over_4gb  sY    $&q$AHHX  	 (jkr   c                    RR,          p\         P                  ! 4       p\        ^ R4       F  pVP                  V4       K  	  VP                  R4       V P	                  VP                  4       R4       R# )r  r  r  r  @8a268e83dd30528bc0907fa2008c91de8f090a0b6e0e60a5ff0d999d8485526fNr  )r   rN   r   ru   r   r   r  s   &   r   test_blake2_update_over_4gb+HashLibTestCase.test_blake2_update_over_4gb  sY      $&OOq$AHHX  	 (jkr   Fc                   \        V4      ^,          pVP                  4       pV P                  V,          pV P                  \        V4      ^4       V F  pV! V3/ VB p	V'       g   V	P	                  4       MV	P	                  V4      p
V P                  WRWV
\        V4      V3,          4       V'       g   V	P                  4       MV	P                  V4      p
\        P                  V4      pV P                  W4       V'       d   K  V P                  \        V4      V	P                  4       K  	  V'       g*   VP                  R4      f   V P                  WV4       R# R# R# )r   zrHash algorithm %s constructed using %s returned hexdigest %r for %d byte input data that should have hashed to %r.keyN)lenrt   r^   assertGreaterEqualr   r   r   r.   r/   digest_sizegetcheck_file_digest)rF   r`   r   r   shakerT   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           	        VP                  4       p \        P                  ! V4       T.pTP	                  T P
                  T,          4       \        P                  ! 4       ;_uu_ 4       pTP                  T4       T F  p\        P                  ! T4      pTP                  ^ 4       T P                  \        P                  ! Yv4      P                  4       T4       TP                  ^ 4       \        P                  ! YV4      pT P                  TP                  4       T4       K  	  R R R 4       R #   \         d     R # i ; i  + '       g   i     R # ; irQ   )rt   r   rR   rx   extendr^   tempfileTemporaryFilewriteioBytesIOseekr   file_digestr   )	rF   r`   r   r   digestsfr   buf	digestobjs	   &&&&     r   r#  !HashLibTestCase.check_file_digest  s   OO%		KK &t0067##%%GGDM!jj&  ''4>>@) q	#//:	  !4!4!6	B " &%  		 &%%s   D1 *B=E1E ?E E	c                l    V P                   V,          pV F  pV P                  \        VR 4       K  	  R# )spamN)r^   r   r   )rF   algorithm_namer}   r%  s   &&  r   check_no_unicode HashLibTestCase.check_no_unicode  s0    00@'3#i)@&I (4r   c                    V P                  R 4       V P                  R4       V P                  R4       V P                  R4       V P                  R4       V P                  R4       R# re   rg   ri   rj   rk   rl   Nr;  r   s   &r   test_no_unicodeHashLibTestCase.test_no_unicode  sV    e$f%h'h'h'h'r   c                J    V P                  R 4       V P                  R4       R# rM   rN   Nr?  r   s   &r   test_no_unicode_blake2&HashLibTestCase.test_no_unicode_blake2  s    i(i(r   c                    V P                  R 4       V P                  R4       V P                  R4       V P                  R4       V P                  R4       V P                  R4       R# rn   ro   rp   rq   r8   r9   Nr?  r   s   &r   test_no_unicode_sha3$HashLibTestCase.test_no_unicode_sha3  sV    j)j)j)j)k*k*r   Nc                   V P                   V,          pV EF]  pV! R R7      pV P                  VP                  V4       V P                  VP                  V4       V'       d]   V P                  \	        VP                  V4      4      V4       V P                  \	        VP                  V4      4      ^V,          4       MYV P                  \	        VP                  4       4      V4       V P                  \	        VP                  4       4      ^V,          4       V P                  VP                  V4       V P                  VP                  R4      ^ ,          \        V4      P                  4       4       EK`  	  R# )Fr   r   N)r^   r   
block_sizer!  r  r   r   r`   r   r-   reprrt   )rF   r`   rK  r!  digest_lengthr}   r%  r&  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                    V P                  R ^@^4       V P                  R^@^4       V P                  R^@^4       V P                  R^@^ 4       V P                  R^^04       V P                  R^^@4       R# r>  rN  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                    V P                  R ^^4       V P                  R^^ 4       V P                  R^h^04       V P                  R^H^@4       V P                  R^^ ^ 4       V P                  R^^ ^@4       R# rG  rQ  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                d   V P                   V,          pV F  pV! 4       p\        e   \        V\        4      '       d   K*  V P                  W#,           R4       V P                  VP                  V4       V P                  VP
                  V4       V P                  VP                  V4       K  	  R # )Ni@  )r^   r   r   r   _capacity_bits
_rate_bits_suffix)rF   r`   capacityratesuffixr}   r%  r&  s   &&&&&   r   
check_sha3HashLibTestCase.check_sha35  s    006'3#')AJq$$7$7X_d3Q--x8Q\\40QYY/ (4r   c                    V P                  R RRR4       V P                  RRRR4       V P                  RRR	R4       V P                  R
RRR4       V P                  RRRR4       V P                  RRRR4       R# )rn   i  i     ro      i@  rp   i   i@  rq   r  i@  r8      i@     r9   N)r^  r   s   &r   test_extra_sha3HashLibTestCase.test_extra_sha3A  sn    
Cw7
Cw7
Cg6
D#w7S$8S$8r   c                R    V P                  R ^^@4       V P                  R^@^ 4       R# rC  rQ  r   s   &r   test_blocksize_name_blake2*HashLibTestCase.test_blocksize_name_blake2J  s&    !!)S"5!!)R4r   c                0    V P                  R RRRR7       R# )re   r    d41d8cd98f00b204e9800998ecf8427eFr   Nr(  r   s   &r   test_case_md5_0HashLibTestCase.test_case_md5_0O  s    

3:! 	 	
r   c                0    V P                  R RRRR7       R# )re      abc 900150983cd24fb0d6963f7d28e17f72Fr   Nrl  r   s   &r   test_case_md5_1HashLibTestCase.test_case_md5_1U  s    

6=! 	 	
r   c                0    V P                  R RRRR7       R# )re   s>   ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 d174ab98d277d9f5a5611c2c9f419d9fFr   Nrl  r   s   &r   test_case_md5_2HashLibTestCase.test_case_md5_2[  s    

M.!	 	 	
r   z!test cannot run on 32-bit systems)sizememusedry_runc                :    V P                  R RV,          R4       R# )re      A c9af2dff37468ce5dfee8f2cfc0a9c6dNrl  rF   rx  s   &&r   test_case_md5_huge"HashLibTestCase.test_case_md5_hugec       	

5$t)%GHr   c                :    V P                  R RV,          R4       R# )re   r|   28138d306ff1b8281f1a9067e1a1a2b3Nrl  r~  s   &&r   test_case_md5_uintmax%HashLibTestCase.test_case_md5_uintmaxh  r  r   c                ,    V P                  R RR4       R# )rg   r   (da39a3ee5e6b4b0d3255bfef95601890afd80709Nrl  r   s   &r   test_case_sha1_0 HashLibTestCase.test_case_sha1_0q  s    

63=	?r   c                ,    V P                  R RR4       R# )rg   rp  (a9993e364706816aba3e25717850c26c9cd0d89dNrl  r   s   &r   test_case_sha1_1 HashLibTestCase.test_case_sha1_1u  s    

66=	?r   c                ,    V P                  R RR4       R# )rg   8   abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq(84983e441c3bd26ebaae4aa1f95129e5e54670f1Nrl  r   s   &r   test_case_sha1_2 HashLibTestCase.test_case_sha1_2y  s    

6N=	?r   c                :    V P                  R RR,          R4       R# )rg   r   @B (34aa973cd4c4daa4f61eeb2bdbad27316534016fNrl  r   s   &r   test_case_sha1_3 HashLibTestCase.test_case_sha1_3~  s    

64'>=	?r   c                ,    V P                  R RR4       R# )ri   r   8d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42fNrl  r   s   &r   test_case_sha224_0"HashLibTestCase.test_case_sha224_0  s    

8S
D	Fr   c                ,    V P                  R RR4       R# )ri   rp  823097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7Nrl  r   s   &r   test_case_sha224_1"HashLibTestCase.test_case_sha224_1  s    

8V
D	Fr   c                ,    V P                  R RR4       R# )ri   r  875388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525Nrl  r   s   &r   test_case_sha224_2"HashLibTestCase.test_case_sha224_2  s    

8
E
D	Fr   c                :    V P                  R RR,          R4       R# )ri   r   r  820794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67Nrl  r   s   &r   test_case_sha224_3"HashLibTestCase.test_case_sha224_3  s    

8TG^
D	Fr   c                ,    V P                  R RR4       R# )rj   r   @e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855Nrl  r   s   &r   test_case_sha256_0"HashLibTestCase.test_case_sha256_0  s    

8S
L	Nr   c                ,    V P                  R RR4       R# )rj   rp  @ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015adNrl  r   s   &r   test_case_sha256_1"HashLibTestCase.test_case_sha256_1  s    

8V
L	Nr   c                ,    V P                  R RR4       R# )rj   r  @248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1Nrl  r   s   &r   test_case_sha256_2"HashLibTestCase.test_case_sha256_2  s    

8
E
L	Nr   c                :    V P                  R RR,          R4       R# )rj   r   r  @cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0Nrl  r   s   &r   test_case_sha256_3"HashLibTestCase.test_case_sha256_3  s    

8TG^
L	Nr   c                ,    V P                  R RR4       R# )rk   r   N`38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95brl  r   s   &r   test_case_sha384_0"HashLibTestCase.test_case_sha384_0  s    

8S-	.r   c                ,    V P                  R RR4       R# )rk   rp  N`cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7rl  r   s   &r   test_case_sha384_1"HashLibTestCase.test_case_sha384_1  s    

8V-	.r   c                ,    V P                  R RR4       R# )rk   Np   abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu`09330c33f71147e83d192fc782cd1b4753111b173b3b05d22fa08086e3b0f712fcc7c71a557e2db966c3e9fa91746039rl  r   s   &r   test_case_sha384_2"HashLibTestCase.test_case_sha384_2  s    

8O-	.r   c                :    V P                  R RR,          R4       R# )rk   r   r  N`9d0e1809716474cb086e834e310a4a1ced149e9c00f248527972cec5704c2a5b07b8b3dc38ecc4ebae97ddd87f3d8985rl  r   s   &r   test_case_sha384_3"HashLibTestCase.test_case_sha384_3  s    

8TG^-	.r   c                ,    V P                  R RR4       R# )rl   r   Nڀcf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3erl  r   s   &r   test_case_sha512_0"HashLibTestCase.test_case_sha512_0  s    

8SM	Nr   c                ,    V P                  R RR4       R# )rl   rp  Nڀddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49frl  r   s   &r   test_case_sha512_1"HashLibTestCase.test_case_sha512_1  s    

8VM	Nr   c                ,    V P                  R RR4       R# )rl   Nr  ڀ8e959b75dae313da8cf4f72814fc143f8f7779c6eb9f7fa17299aeadb6889018501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909rl  r   s   &r   test_case_sha512_2"HashLibTestCase.test_case_sha512_2  s    

8OM	Nr   c                :    V P                  R RR,          R4       R# )rl   r   r  Nڀe718483d0ce769644e2e42c7bc15b4638e1f98b13b2044285632a803afa973ebde0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09brl  r   s   &r   test_case_sha512_3"HashLibTestCase.test_case_sha512_3  s    

8TG^M	Nr   c                0   V P                  VP                  V4       \        V^,           4       F  pV! RV,          R7       K  	  RV^,           ,          pV P                  \        WR7       V P                  VP
                  V4       \        V^,           4       F  pV! RV,          R7       K  	  RV^,           ,          p	V P                  \        WR7       V P                  VP                  V4       \        ^V^,           4       F  pV! VR7       K  	  V P                  \        VRR7       V P                  \        V^ R7       V P                  \        W^,           R7       V P                  VP                  V4       \        V^,           4       F  pV! RV,          R7       K  	  RV^,           ,          p
V P                  \        WR7       V P                  V! 4       P                  4       V! RR7      P                  4       4       \        ^ R4       F  pV! VR7       K  	  V P                  \        VRR7       V P                  \        VRR7       \        ^R4       F  pV! VR	7       K  	  V P                  \        VRR	7       V P                  \        V^ R	7       V P                  \        VRR	7       \        ^ R4       F  pV! VR
7       K  	  V P                  \        VRR
7       V P                  \        VRR
7       \        ^ V^,           4       F  pV! VR7       K  	  V P                  \        VRR7       V P                  \        W^,           R7       V! ^ R7       V! RR7       V P                  \        VRR7       V P                  \        VRR7       V! ^ R7       V! VR7       V P                  \        VRR7       V P                  \        W^,           R7       V P                  \        VR4       V! RRRR^^^RR^^RR7       R# )   r   salt)personr!  r  r   rc  )fanout)depth)
node_depth)
inner_size)	leaf_size)node_offsetr   rb  T)r  r  r  r!  r  r  r  r  r  r  	last_nodeNl            )r   	SALT_SIZEr   r   rx   PERSON_SIZEMAX_DIGEST_SIZEMAX_KEY_SIZEr   r   r   )rF   ra   	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                    R  pV! ^ R7      pV Fm  pV Fd  pV! Ww4      pV! Wf4      p	V! WR7      p
VP                  V
P                  4       4       V! WVR7      pVP                  VP                  4       4       Kf  	  Ko  	  VP                  4       # )c                     RpRV,          V,          p^p\        V 4      p\        V 4       F&  pW4,           V,          pYGrCV^,	          ^,          WV&   K(  	  V# )r  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!  )ru   r   r   )rF   ra   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                    V P                  \        P                  ^^^@^@R4       . ROp. ROpV P                  V P	                  \        P                  W4      R4       R# )r   @c23a7800d98123bd10f506c61e29da5603d763b8bbad2e737f5e765a7bccd475Nl    )       0   @   )r               r  )r  r   rM   r   r  )rF   
b2b_md_len
b2b_in_lens   &  r   test_blake2bHashLibTestCase.test_blake2b;  sN    '//2r2r9E%
0
HN	Pr   c                ,    V P                  R RR4       R# )rM   r   Nڀ786a02f742015903c6c6fd852552d272912f4740e15847618a86e217f71f5419d25e1031afee585313896444934eb04b903a685b1448b755d56f701afe9be2cerl  r   s   &r   test_case_blake2b_0#HashLibTestCase.test_case_blake2b_0D  s    

9cM	Nr   c                ,    V P                  R RR4       R# )rM   rp  Nڀba80a53f981c4d0d6a2797b69f12f6e94c212f14685ac4b74b12bb6fdbffa2d17d87c5392aab792dc252d5de4533cc9518d38aa8dbf1925ab92386edd4009923rl  r   s   &r   test_case_blake2b_1#HashLibTestCase.test_case_blake2b_1J  s    

9fM	Nr   c                D    V P                  R RR^RRR^^^^^^RR7       R# )	rM      foo 920568b0c5873b2f0ab67bedb6cf1b2b   bar   baz   bingTr!  r  r  r  r  r  r  r  r  r  r  Nrl  r   s   &r    test_case_blake2b_all_parameters0HashLibTestCase.test_case_blake2b_all_parametersP  =     	

9f
, 	 	r   c                    \        R 4       F/  w  rp\        P                  V4      pV P                  R WVR7       K1  	  R# )rM   r  Nr5   r.   r/   r(  rF   msgr  mds   &   r   test_blake2b_vectors$HashLibTestCase.test_blake2b_vectorsb  5    (3LCb--$CJJy#sJ3 4r   c                    V P                  \        P                  ^^^ ^ R4       . ROp. ROpV P                  V P	                  \        P                  W4      R4       R# )   @6a411f08ce25adcdfb02aba641451cec53c598b24f4fc787fbdc88797f4c1dfeNl    )r   r     r	  )r   r  r  A   r  r  )r  r   rN   r   r  )rF   
b2s_md_len
b2s_in_lens   &  r   test_blake2sHashLibTestCase.test_blake2sh  sN    '//1aRC%
.
HN	Pr   c                ,    V P                  R RR4       R# )rN   r   @69217a3079908094e11121d042354a7c1f55b6482ca1a51e1b250dfd1ed0eef9Nrl  r   s   &r   test_case_blake2s_0#HashLibTestCase.test_case_blake2s_0q  s    

9c
L	Nr   c                ,    V P                  R RR4       R# )rN   rp  @508c5e8c327c14e2e1a72ba34eeb452f37458b209ed63a294d999b4c86675982Nrl  r   s   &r   test_case_blake2s_1#HashLibTestCase.test_case_blake2s_1v  s    

9f
L	Nr   c                D    V P                  R RR^RRR^^^^^^RR7       R# )	rN   r   bf2a8f7fe3c555012a6f8046e646bc75r  r   r!  Tr"  Nrl  r   s   &r    test_case_blake2s_all_parameters0HashLibTestCase.test_case_blake2s_all_parameters{  r%  r   c                    \        R 4       F/  w  rp\        P                  V4      pV P                  R WVR7       K1  	  R# )rN   r  Nr'  r(  s   &   r   test_blake2s_vectors$HashLibTestCase.test_blake2s_vectors  r-  r   c                ,    V P                  R RR4       R# )rn   r   86b4e03423667dbb73b6e15454f0eb1abd4597f9a1b078e3f5b5a6bc7Nrl  r   s   &r   test_case_sha3_224_0$HashLibTestCase.test_case_sha3_224_0  s    

:s
D	Fr   c                R    \        R 4       F  w  rV P                  R W4       K  	  R# )rn   Nr5   r(  rF   r)  r*  s   &  r   test_case_sha3_224_vector)HashLibTestCase.test_case_sha3_224_vector  !    #J/GCJJz3+ 0r   c                ,    V P                  R RR4       R# )ro   r   @a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434aNrl  r   s   &r   test_case_sha3_256_0$HashLibTestCase.test_case_sha3_256_0  s    

:s
L	Nr   c                R    \        R 4       F  w  rV P                  R W4       K  	  R# )ro   NrK  rL  s   &  r   test_case_sha3_256_vector)HashLibTestCase.test_case_sha3_256_vector  rO  r   c                ,    V P                  R RR4       R# )rp   r   N`0c63a75b845e4f7d01107d852e4c2485c51a50aaaa94fc61995e71bbee983a2ac3713831264adb47fb6bd1e058d5f004rl  r   s   &r   test_case_sha3_384_0$HashLibTestCase.test_case_sha3_384_0  s    

:s-	.r   c                R    \        R 4       F  w  rV P                  R W4       K  	  R# )rp   NrK  rL  s   &  r   test_case_sha3_384_vector)HashLibTestCase.test_case_sha3_384_vector  rO  r   c                ,    V P                  R RR4       R# )rq   r   Nڀa69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26rl  r   s   &r   test_case_sha3_512_0$HashLibTestCase.test_case_sha3_512_0  s    

:sM	Nr   c                R    \        R 4       F  w  rV P                  R W4       K  	  R# )rq   NrK  rL  s   &  r   test_case_sha3_512_vector)HashLibTestCase.test_case_sha3_512_vector  rO  r   c                V    V P                  R RRR4       V P                  R RRR4       R# )r8   r   @7f9c2ba4e88f827d616045507605853ed73b8093f6efbc88eb1a6eacfa66ef26T7f9cNrl  r   s   &r   test_case_shake_128_0%HashLibTestCase.test_case_shake_128_0  ,    

;
L
	 	

;VT2r   c                T    \        R 4       F  w  rV P                  R WR4       K  	  R# )r8   TNrK  rL  s   &  r   test_case_shake128_vector)HashLibTestCase.test_case_shake128_vector  #    #K0GCJJ{CT2 1r   c                V    V P                  R RRR4       V P                  R RRR4       R# )r9   r   @46b9dd2b0ba88d13233b3feb743eeb243fcd52ea62b81b82b50c27646ed5762fT46b9Nrl  r   s   &r   test_case_shake_256_0%HashLibTestCase.test_case_shake_256_0  rj  r   c                T    \        R 4       F  w  rV P                  R WR4       K  	  R# )r9   TNrK  rL  s   &  r   test_case_shake256_vector)HashLibTestCase.test_case_shake256_vector  rn  r   c                *   . ROp\         P                  ! V4      pV P                   Fh  pV! RR7      pVP                  R4       VP                  RV,          4       VP                  R4       V! RV,          RR7      pVP                  R4       Kj  	  R# )rd   Fr      1   #   xN)rd   rf   rh   rm   rL   r   )r   find_gil_minsizer   ru   )rF   modsgil_minsizer   r&  s   &    r   test_gilHashLibTestCase.test_gil  sw    
 J$55d;**DU+AHHTNHHTK'(HHTNTK'?AHHTN +r   c                   \         P                  ! R R.4      p\        P                  ! 4       pVP	                  R4       VP	                  RV,          4       VP	                  R4       V P                  VP                  4       R4       \        P                  ! RRV,          ,           R,           4      pV P                  VP                  4       R4       R# )rh   r   rx  ry  @1cfceca95989f51f658e3f3ffe7f1cd43726c9e088c13ee10b46f57cef135b94N)r   r{  r   rj   ru   r   r   )rF   r}  r&  s   &  r   test_sha256_gilHashLibTestCase.test_sha256_gil  s    $55w
6KLNN		#$	KKMN	

 NN4$"44t;<KKMN	
r   c                l  a	a
 \         P                  ! 4       o
^pRpVR,          o	\         P                  ! S	V,          4      P                  4       pV	V
3R lp. p\        V4       Fz  p\	        S	4      ^
V,          ,          pV P                  V^ 4       V P                  V\	        V4      ,          ^ 4       \        P                  ! VV3R7      pVP                  V4       K|  	  V F  pVP                  4        K  	  V F  pVP                  4        K  	  V P                  VS
P                  4       4       R# )   s   swineflui@ c                 t   < ^ pV\        S4      8  d%   SP                  SWV ,            4       W,          pK4  R# )r   N)r  ru   )
chunk_sizeindexr   hashers   & r   hash_in_chunks=HashLibTestCase.test_threaded_hashing.<locals>.hash_in_chunks  s7    E#d)#d5);<=# $r   )targetrS   N)r   rg   r   r   r  assertGreaterr   	threadingThreadappendstartjoin)rF   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                V    V P                   pVe   V P                  V\        4       R # R # rQ   )r   r   int)rF   	fips_modes   & r   test_get_fips_mode"HashLibTestCase.test_get_fips_mode  s(    %%	 !!)S1 !r   c           
     r   V P                   P                  4        Fr  w  rVP                  R4      '       d   K  V FN  p V! 4       pT P	                  TR7      ;_uu_ 4        \
        P                  ! T \        T4      4       RRR4       KP  	  Kt  	  R#   \         d     Kf  i ; i  + '       g   i     K{  ; i)sha3_)ra   N)r  r$  blake)r^   rv   r,   rx   r   r   check_disallow_instantiationtype)rF   r|   r}   ra   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"%B6zneed _hashlibc                r    \         P                  ! V \        4       \         P                  ! V \        4       R # rQ   )r   r  r   r   r   s   &r    test_hash_disallow_instantiation0HashLibTestCase.test_hash_disallow_instantiation-  s$     	,,T48,,T7;r   c                   V P                   P                  4        Fp  w  rV Fe  p \        V! 4       4      pT P	                  TR 7      ;_uu_ 4        T P                  \        R4      ;_uu_ 4        RTn        RRR4       RRR4       Kg  	  Kr  	  R#   \         d     K}  i ; i  + '       g   i     L4; i  + '       g   i     K  ; i))	hash_typezimmutable typeFN)r^   rv   r  rx   r   r   r   value)rF   r|   r}   ra   r  s   &    r   test_readonly_types#HashLibTestCase.test_readonly_types3  s    '+'@'@'F'F'H#I+ $[] 3I \\I\66//	;KLL*/	 M 76  , (I "  ML 766s5   BB6	/B#7B6	B B #B3.B6	6C)r   r^   )re   r   rg   SHA1ri   SHA224rj   r   rk   SHA384rl   SHA512rM   rN   rn   ro   rp   rq   r8   r9   )F)r   r   N)yrD   
__module____qualname____firstlineno__rs   r   osr`   r   Py_DEBUGr@   rI   rz   propertyr   r   r   r   r   r   r   r)   skipIfr   r   r   r   r   thread_unsafer   r   r   r   r  r	   r  r  r  r(  r#  r;  r@  requires_blake2rD  requires_sha3rH  rN  rR  rU  r^  re  rh  rm  rr  rv  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  r#  r+  r5  r9  r=  rA  rD  rH  rM  rR  rU  rY  r\  r`  rc  rh  rl  rr  ru  r~  r  r
   reap_threadsrequires_working_threadingr  r  cpython_onlyr  
skipUnlessr   r  r  __static_attributes____classdictcell____classcell__)r~   __classdict__s   @@r   r7   r7   _   s    7 ;'F "$G!3!G!Gw7G7GD?L ; ;  '
><	= __]_&9:? ;?( __]_&9:1J ;1Jf5? 12L 3L4D' :@ ul l ul l ul l:2C.J( ) ) + +?&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   r7   c                   f  a  ] tR tRt o . R*OtRR^^^]! R4      3RRR^^]! R4      3R	R
R^^]! R4      3.tR]P                  R4      R3]P                  R4      R3]P                  R4      R3]P                  R4      ^3]P                  R4      R3.R]P                  R4      R3]P                  R4      R3]P                  R4      R3]P                  R4      ^(3]P                  R4      R3.R]P                  R4      R3]P                  R4      R3]P                  R4      R3]P                  R4      ^@3]P                  R4      R3./t	R t
]P                  ! ]RJ R 4      R! 4       t]P                  ! ]! ]R"4      R#4      ]P                  ! ]! 4       R$R%7      R& 4       4       tR' tR( tR)tV tR# )+KDFTestsiA     passwordNr   ڀ77d6576238657b203b19ca42c18a0497f16b4844e3074ae8dfdffa3fede21442fcd0069ded0948f8326a753a0fc81f17e8d3e0fb2e0d3628cf35e20c38d18906s   NaClr  ڀfdbabe1c9d3472007856e7190d01e9fe7c6ad7cbc8237830e77376634b3731622eaf30d92e22a3886ff109279d9830dac727afb94a83ee6d8360cbdfa2cc0640s   pleaseletmeins   SodiumChloridei @  ڀ7023bdcb3afd7348461c06cd81fd38ebfda8fbba904f8e3ea9b543f6545da1f2d5432955613f0fcf62d49705242a9af9e61e85dc0d651e40dfcf017b45575887rg   (0c60c80f961f0e71f3a9b524af6012062fe037a6(ea6c014dc72d6f8ccd1ed92ace1d41f0d8de8957(4b007901b765489abead49d926f721d065a429c123d2eec4fe41c849b80c8d83662c0e44a8b291a964cf2f07038 56fa6aa75548099dcc37d7f03425e0c3rj   @120fb6cffcf8b32c43e7225256c4f837a86548c92ccc35480805987cb70be17b@ae4d0c95af6b46d32d0adff928f06dd02a303f8ef3c251dfd6e2d85a95474c43@c5e478d59288c841aa530db6845c4c8d962893a001ce4e11a4963873aa98134aP348c89dbcbd32b2f32d814b8116e84cf2b17347ebc1800181c4e2a1fb8dd53e1c635518c7dac47e9 89b69d0516f829893c696226650a8687rl   ڀ867f70cf1ade02cff3752599a3a53dc4af34c7a669815ae5d513554e1c8cf252c02d470a285a0501bad999bfe943c08f050235d7d68b1da55e63f73b60a57fceڀe1d9c16aa681708a45f5c7c4e215ceb66e011a2e9f0040713f18aefdb866d53cf76cab2868a39b9f7840edce4fef5a82be67335c77a6068e04112754f27ccf4eڀd197b1b33db0143e018b12f3d1d1479e6cdebdcc97c5c0f87f6902e072f457b5143f30602641b3d55cd335988cb36b84376060ecd532e039b742a239434af2d5ڀ8c0511f4c6e597c6ac6315d8f0362e225f3c501495ba23b868c005174dc4ee71115b59f9e60cd9532fa33e0f75aefe30225c583a186cd82bd4daea9724a3d3b8 9d9e9c4cd21fe4be24d5b8244c759665c                X   V P                   P                  4        F  w  r4W29  d   K  \        V P                  4       F  w  rVVw  rxrWE,          w  rV'       d   Tp
V! W7WV
4      pV P	                  WW7WV
34       V! V\        V4      \        V4      W4      pV P	                  W4       V! V\        V4      \        V4      W4      pV P	                  W4       V
e   K  V! W7W4      pV P	                  WW7W34       K  	  K  	  V P                  \        R4      ;_uu_ 4        V! RRR^4       R R R 4       RV9   d   V P                  \        VRRR^4       V P                  \        VRRR^4       V P                  \        VRRR^ 4       V P                  \        VRRRR4       V P                  \        VRRR^^ 4       V P                  \        VRRR^R4       V! RR	R^R R
7      pV P	                  WP                   R,          ^ ,          ^ ,          4       R # R #   + '       g   i     L; i)Nz.*unsupported.*unknowns   pass   saltrg   s   sha1passr  r  )r0   passwordr  
iterationsdklenr  )pbkdf2_resultsrv   	enumeratepbkdf2_test_vectorsr   
memoryviewr  r   rx   r   r   )rF   pbkdf2	supportedr   resultsr    vectorr  r  roundsr  expectedoverwrite_dklenr  s   &&&           r   _test_pbkdf2_hmacKDFTests._test_pbkdf2_hmacz  s1   $($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B9gw2 C Y67GWa 66661 FFGWa FFGWb FFGWa FFGWa 6KgD*CS"5"5f"=a"@"CD+  CBs   HH)	zrequires OpenSSL bindingsc                N    V P                  \        P                  \        4       R # rQ   )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                &   V P                    F1  w  rr4rV\        P                  ! WW4VR 7      pV P                  Wv4       K3  	  \        P                  ! RR^^^R 7       V P	                  \
        4      ;_uu_ 4        \        P                  ! RR^^^R 7       RRR4       V P	                  \
        4      ;_uu_ 4        \        P                  ! RR^^^R 7       RRR4       V P	                  \
        4      ;_uu_ 4        \        P                  ! R4       RRR4       V P	                  \
        4      ;_uu_ 4        \        P                  ! RR4       RRR4       V P	                  \
        4      ;_uu_ 4        \        P                  ! R^^^RR7       RRR4       R	 FO  pV P	                  \        \        \
        34      ;_uu_ 4        \        P                  ! RRV^^R 7       RRR4       KQ  	  R
 FO  pV P	                  \        \        \
        34      ;_uu_ 4        \        P                  ! RR^V^R 7       RRR4       KQ  	  R
 FO  pV P	                  \        \        \
        34      ;_uu_ 4        \        P                  ! RR^^VR 7       RRR4       KQ  	  R FP  pV P	                  \        \        \
        34      ;_uu_ 4        \        P                  ! RR^^^VR7       RRR4       KR  	  R FP  p	V P	                  \        \        \
        34      ;_uu_ 4        \        P                  ! RR^^^V	R7       RRR4       KR  	  R#   + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     ELd; i  + '       g   i     EL;; i  + '       g   i     EL; i  + '       g   i     EK!  ; i  + '       g   i     EK  ; i  + '       g   i     EK  ; i  + '       g   i     EKa  ; i  + '       g   i     EK   ; i))r  nr   pr  r  r  Nr  r  )r  r  r   r  maxmem)r  r  r   r  r  )r  r   r  N)r  r   N)r  N)scrypt_test_vectorsr   r  r   r   r   rx   r   )
rF   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J{AaH KJ " A""Jy#IJJ{AaH KJ  A""Jy#IJJ{AaH KJ  !F""Jy#IJJ{Aa&,. KJ !  E""Jy#IJJ{Aa%*, KJ  1 *))))) *)))))))) KJJ KJJ KJJ KJJ KJJsx   :M;M<M.8N5NN*N?0OO)O>M	M+	.M?	N	N'	*N<?OO&)O;>Pc                    V P                  R \        P                  4       V P                  R\        P                  4       R# )
blake2b512zsha3-512N)r   r   r   r   s   &r   test_normalized_nameKDFTests.test_normalized_name  s.    w'C'CDW%A%ABr   c                   R R,          p\         P                  ! 4       p\        P                  ! RR7      ;_uu_ 4       p\	        ^
4       F%  pVP                  V4       VP                  V4       K'  	  VP                  4        \        VP                  R4      ;_uu_ 4       p\         P                  ! V\         P                  4      pRRR4       V P                  VP                  4       XP                  4       4       V P                  VP                  VP                  4       V P                  \        V4      \        V4      4       V P                  \         4      ;_uu_ 4        \        VP                  R4      ;_uu_ 4       p\         P                  ! VR4       RRR4       RRR4       V P                  \         4      ;_uu_ 4        \        VP                  R4      ;_uu_ 4       p\         P                  ! VR4       RRR4       RRR4       RRR4       V P                  \         4      ;_uu_ 4        \         P                  ! RR4       RRR4        ! R	 R
4      pV P                  \"        4      ;_uu_ 4        \         P                  ! V! 4       \         P                  4       RRR4       R#   + '       g   i     EL; i  + '       g   i     EL2; i  + '       g   i     EL>; i  + '       g   i     L; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     R# ; i)r   i   F)delete_on_closerbNr   rj   wbc                   ,   a  ] tR tRt o R tR tRtV tR# ).KDFTests.test_file_digest.<locals>.NonBlockingi  c                    R # rQ   r   )rF   r5  s   &&r   readinto7KDFTests.test_file_digest.<locals>.NonBlocking.readinto      r   c                    R # )Tr   r   s   &r   readable7KDFTests.test_file_digest.<locals>.NonBlocking.readable  r  r   r   N)rD   r  r  r  r	  r  r  r  r  s   @r   NonBlockingr    s      r   r  )r   rj   r,  NamedTemporaryFiler   ru   r.  closeopenr`   r2  r   r   r   r  r   rx   BlockingIOError)rF   r   d1fpr   r4  d2r  s   &       r   test_file_digestKDFTests.test_file_digest  s   e|^^((??22Y		$  HHJbggt$$((GNN; % R\\^R\\^<RWWbgg.MM$r(DH-"":.."''3''1''84 ( / "":.."''4((A''84 ) /# @* z**h/ +	 	 //w~~> 0/1 %$$ ('' /..
 )( /..# @??* +* 0//s   A#L!&J0	BL$K	KK	#%LK?	'K,?K?	L4L';+L:0K;	LK	K	K)#	L,K<7K?	?L
	LL$	'L7	:M	r   ))r  r  r  N)r  r  r   N)r  r  r  N)s   passwordPASSWORDpasswords$   saltSALTsaltSALTsaltSALTsaltSALTsaltr  r  )s	   pass words   sa ltr  r   )rD   r  r  r  r  r   r  r.   r/   r  r  r)   r  r  r  r  hasattrr   r   r  r   r  r  r  r  s   @r   r  r  A  s    	 
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__>   re   rg   sha2sha3blake2);r   binasciir   r   r=   r/  r   rB   r  r   r   	sysconfigr,  r  r)   warningsr   r   test.supportr   r   r   test.support.import_helperr   r	   r
   http.clientr   default_builtin_hashesget_config_varrA   r+   rt   r-   builtin_hash_namesrr   mapr   r  r   r   r   r   r   r   	frozensetrL   r  r  rm   r  r!   r%   r5   TestCaser7   r  rD   mainr   r   r   <module>r,     s       	   	 	 
       ( ' : * ) % C ))*EF+N'--c288:@@ESYY(:;<N &i
|DLL %%g/AB ##E+;< 1 _0h'' _0D|?x   |?~ zMMO g&  DG%K  G  Es6   E% (F   F %E=<E= 	FF	FF