
    dafպ                     F   d dl Z d dlmZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlmZ d dlmZmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ h d
Z e	j4                  d      ZeeZnJej9                  d      j;                         j=                  d      D  ch c]  } | j9                          c} Z eddg      Zeek(  r eddg      Z ndZ 	 d dl!m"Z"m#Z#m$Z$m%Z% 	 d dl(Z( ejR                  e(d      Z* ejV                  d      Z, ejR                  e, d      Z-d Z.dZ/d Z0 G d dejb                        Z2 G d dejb                        Z3e4dk(  r ejj                          yyc c} w # e&$ r dZ"dZ# e'       Z$d Z%Y w xY w# e&$ r dZ(Y w xY w)     N)	unhexlify)support)_4G
bigmemtest)import_fresh_module)	os_helper)requires_resource)threading_helper)HTTPException>   md5sha1sha3blake2sha256sha512PY_BUILTIN_HASHLIB_HASHES",hashlib_hashlib)fresh)blocked)HASHHASHXOFopenssl_md_meth_namesget_fips_modec                       yNr    r       ,/root/Python-3.12.4/Lib/test/test_hashlib.pyr   r   6   s    r    zrequires _blake2T)ubzrequires _sha3c                     t        | t              sJ t        |              d}d}| D ]  }|||dz	  dz     ||dz     z   z  } |S )N0123456789abcdef       )
isinstancebytesrepr)shris       r!   hexstrr/   F   s]    a(a(A
A ,	QQ#~1s7++,Hr    z(http://www.pythontest.net/hashlib/{}.txtc              #     K   t         j                  |       }	 t        j                  |d      }|5  |D ]V  }|j                         }|j                  d      s|s'|j                  d      }t        j                  |d         |d<   | X 	 d d d        y # t        t
        f$ r% t        j                  dj                  |            w xY w# 1 sw Y   y xY ww)Nzutf-8)encodingzCould not retrieve {}#r   r   )URLformatr   open_urlresourceOSErrorr   unittestSkipTeststrip
startswithsplitr)   fromhex)	hash_nameurltestdatalinepartss        r!   read_vectorsrB   Q   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4CCCCc                       e Zd ZdZddhZej                  dk(  xs ej                  Z	d Z
 fdZed        Zed        Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z ed      d        Z ed      d        ZdbdZd Zd Z d Z!e"d        Z#e$d        Z%	 	 dcd Z&d! Z'e$d"        Z(d# Z)e$d$        Z*e"d%        Z+d& Z,d' Z-d( Z. e/j`                  e1jd                  e3d)z   k  d*       e4e3d)z   d+d,      d-               Z5 e/j`                  e1jd                  e3d+z
  k  d*       e4e3d+z
  d+d,      d.               Z6d/ Z7d0 Z8d1 Z9d2 Z:d3 Z;d4 Z<d5 Z=d6 Z>d7 Z?d8 Z@d9 ZAd: ZBd; ZCd< ZDd= ZEd> ZFd? ZGd@ ZHdA ZIdB ZJdC ZKdD ZLe"dE        ZMe"dF        ZNe"dG        ZOe"dH        ZPe"dI        ZQe"dJ        ZRe"dK        ZSe"dL        ZTe"dM        ZUe"dN        ZVe$dO        ZWe$dP        ZXe$dQ        ZYe$dR        ZZe$dS        Z[e$dT        Z\e$dU        Z]e$dV        Z^dW Z_dX Z`dY ZadZ Zbd[ Zcedj                   edj                         d\               Zgd] Zhej                  d^        Zj e/j                  eldud_      d`        Zmda Zn xZoS )dHashLibTestCase)r   MD5r   SHA1sha224SHA224r   SHA256sha384SHA384r   SHA512blake2bblake2ssha3_224sha3_256sha3_384sha3_512	shake_128	shake_256rS   rT   posixc                     	 t        j                  |      S # t        $ r6}| j                  r |t        v rt        j                  d|        Y d}~yd}~ww xY w)z@Import a module and return a reference to it or None on failure.z#Did a C extension fail to compile? N)	importlibimport_moduleModuleNotFoundError_warn_on_extension_importbuiltin_hasheswarningswarn)selfmodule_nameerrors      r!   _conditional_import_modulez*HashLibTestCase._conditional_import_modulen   sS    	M**;77" 	M--+2O CE7KL	Ms    	A,AAc                     t               } j                  D ]!  }|j                  |j                                #  j	                  d      }|r|j                  ddh       i  _        |D ]1  }t        r|j                  d      rt                j                  |<   3  j                  j                         D ];  \  }}|j                  t        t        |             d |fd}|j                  |       =  j	                  d      }| _        |r j                  t        |d              j                  t        |d              j                  j                         D ]1  \  }}t        |d	|z   d       }	|	s	  |	        |j                  |	       3  fd
}
 j	                  d      }|r |
d        j	                  d      }|r |
d        j	                  d      }|r  |
d        |
d        |
d        |
d       |r |
d        |
d       t        sC j	                  d      }|r0 |
d        |
d        |
d        |
d        |
d        |
d       t!        t"         J  |i | y # t        $ r Y w xY w)N_blake2rM   rN   sha3_c                 `    | t        j                  |fi |S t        j                  || fi |S N)r   new)data_algkwargss      r!   _test_algorithm_via_hashlib_newzAHashLibTestCase.__init__.<locals>._test_algorithm_via_hashlib_new   s1    <";;t6v66{{4888r    r   openssl_md5openssl_sha1openssl_c                 n     t        t        d      |       }j                  |    j                  |       y )N__get_builtin_constructor)getattrr   constructors_to_testadd)nameconstructorr^   s     r!   add_builtin_constructorz9HashLibTestCase.__init__.<locals>.add_builtin_constructor   s0    G''+FGMK%%d+//<r    _md5r   _sha1r   _sha2rG   r   rJ   r   _sha3rO   rP   rQ   rR   rS   rT   )setsupported_hash_namesrs   lowerra   updaterr   	SKIP_SHA3r:   itemsrq   r   r   
assertTruehasattr
ValueErrorsuperrD   __init__)r^   argsrj   
algorithms	algorithmrc   constructorsrk   r   ru   rv   rw   rx   ry   rz   	__class__s   `              r!   r   zHashLibTestCase.__init__w   st   U
22 	.INN9??,-	. 11)<y)45$&!# 	9IY11':365D%%i0	9 (,'@'@'F'F'H 	>#I|WWi8959	 9 <=	> 22:>  OOGHm<=OOGHn=>+/+D+D+J+J+L 	6'	<%h
90DdK6#
 %((5	6	= ..v6#E*//8#F+//8#H-#H-#H-#H-#I.#I.33G<E'
3'
3'
3'
3'4'4ot-t>v>I & s   <I33	J ?J c                 t    | j                   j                         }t        j                  j	                  |      S rf   )rr   values	itertoolschainfrom_iterable)r^   r   s     r!   hash_constructorsz!HashLibTestCase.hash_constructors   s+    00779,,\::r    c                     t               S rf   )r   r^   s    r!   is_fips_modezHashLibTestCase.is_fips_mode   s
    r    c                     t        j                   dt        d            }| j                  D ]F  } ||d      }|j                  | j                  v r|j                  d       7|j                          H y )Nb
   Fusedforsecurity   )arrayranger   rt   shakes	hexdigest)r^   aconscs       r!   test_hash_arrayzHashLibTestCase.test_hash_array   s[    KKU2Y'** 	DQ.Avv$B	r    c                 x    | j                  t        j                  t        d | j                  D                     y )Nc              3   @   K   | ]  }|j                         r|  y wrf   )islower).0_algos     r!   	<genexpr>z=HashLibTestCase.test_algorithms_guaranteed.<locals>.<genexpr>   s       &%]]_  &s   )assertEqualr   algorithms_guaranteedr{   r|   r   s    r!   test_algorithms_guaranteedz*HashLibTestCase.test_algorithms_guaranteed   s2    66 &4#<#< & &	'r    c                 &   | j                  t        t        j                        j	                  t        j
                               | j                  dt        j
                         t        j
                  D ]  }t        j                  |d      } y )N	undefinedFr   )r   r{   r   r   issubsetalgorithms_availableassertNotInrg   )r^   rt   digests      r!   test_algorithms_availablez)HashLibTestCase.test_algorithms_available   si    G99:$HW%A%AB	D 	g&B&BC00 	>D[[u=F	>r    c                    t        j                  dd       | j                  r| j                  d       | j                  D ]  } |d        |dd        t        j                  dd       t        j
                  d       | j                  :| j                  j                  dd       | j                  j                  d       y y )Nr   Tr   zskip in FIPS moder    r   )r   rg   r   skipTestr   r   r   rl   r^   r   s     r!   test_usedforsecurity_truez)HashLibTestCase.test_usedforsecurity_true   s    Hd3MM-.** 	,D&d+	, 	E40D)==$MMeT:MM%%d%; %r    c                 `   t        j                  dd       | j                  D ]  } |d        |dd        t        j                  dd       t        j                  d       | j                  :| j                  j                  dd       | j                  j                  d       y y )Nr   Fr   r    r   )r   rg   r   r   r   rl   r   s     r!   test_usedforsecurity_falsez*HashLibTestCase.test_usedforsecurity_false   s    He4** 	-D'e,	- 	E51E*==$MMeU;MM%%e%< %r    c                     | j                  t        t        j                  d       | j                  t        t        j                  d       y )Nzspam spam spam spam spam   )assertRaisesr   r   rg   	TypeErrorr   s    r!   test_unknown_hashz!HashLibTestCase.test_unknown_hash   s/    *gkk3MN)W[[!4r    c                 b    | j                  t        j                  d      j                  d       y )NrI   r   )r   r   rg   rt   r   s    r!   test_new_upper_to_lowerz'HashLibTestCase.test_new_upper_to_lower   s!    X.33X>r    c                    t        t        d      }t        t        d      }| j                  t        |d       	 dd l}d t        j                  d<   |j                          	 | j                  t        |d       dt               v rt        j                  d<   nt        j                  d= 	 | j                  t        |d        |d      }| j                  |j                         | j                  t        |      d	dg       y # t
        $ r | j                  d       Y w xY w# dt               v rt        j                  d<   w t        j                  d= w xY w)
Nrp   __builtin_constructor_cachetestr   z_md5 module not availablerw   r      rE   )rq   r   r   r   rw   ImportErrorr   sysmodulesclearlocalsr   assertIsr   r   sorted)r^   get_builtin_constructorbuiltin_constructor_cacherw   ru   s        r!   test_get_builtin_constructorz,HashLibTestCase.test_get_builtin_constructor   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 #3Ec                    | j                   D ]  } |d      }|j                  | j                  v r_| j                  |j	                  d      t
               | j                  t        |j	                  d            |j                  d             | j                  |j	                         t
               | j                  t        |j	                               |j                                 y )NFr   r   )	r   rt   r   assertIsInstancer   r)   r   r/   r   r^   r   r,   s      r!   test_hexdigestzHashLibTestCase.test_hexdigest  s    ** 	DDU+Avv$%%ahhrlE:  !5q{{2G%%ahhj%8  
!3Q[[]C	Dr    c           	         d}| j                   D ]  } |d      }|j                  | j                  vr%t        t	        |t              r<|j
                  |j                  fD ]L  }| j                  t        |d       |D ].  }| j                  t        t        f      5   ||       d d d        0 N  y # 1 sw Y   ?xY w)N)i    l    l   
    l            l    l   
        Fr   i)
r   rt   r   r   r(   r   r   r   r   OverflowError)r^   large_sizesr   r,   r   lengths         r!   test_digest_length_overflowz+HashLibTestCase.test_digest_length_overflow$  s    L** 	'DU+AvvT[[(Jq$$7((AKK/ '!!*fc:) 'F**J+FG 'v' '''	'' 's   	B5	5B>c                    | j                   D ]  } |d      }| j                  |j                  t               |j                  | j                  v r'| j                  |j                  | j                         n&| j                  |j                  | j                         | j                  |j                  t        j                  |j                  d      j                          y )NFr   )
r   r   rt   strr|   assertInr   r   r   rg   r   s      r!   test_name_attributez#HashLibTestCase.test_name_attribute4  s    ** 
	DU+A!!!&&#.vv222affd&?&?@  )B)BCAFFE:??
	r    c                 @   d}d}d}d}| j                   D ]  } |d      }|j                  |       |j                  |       |j                  |       |j                  |       |j                  | j                  v rd}nd} |d      }|j                  ||z   |z   |z          | j	                   |j
                  |  |j
                  |         |||z   |z   |z   d      }	| j	                   |j
                  |  |	j
                  |         |||z   |z   d      }
 |
j
                  | }|
j                         }|j                  |       | j	                   |j
                  |  |j
                  |        | j	                   |
j
                  | |        y )	Ns   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas   bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbs~   ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccs   ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddFr   )r   r   )r   r~   rt   r   r   r   copy)r^   aasbeesceesdeesr   m1r   m2m3m4	m4_digestm4_copys                r!   test_large_updatez!HashLibTestCase.test_large_updateA  s   ** 	:De,BIIcNIIdOIIdOIIdOww$++%e,BIIcDj4'$./YRYY-yryy$/?@cDj4'$.FBYRYY-yryy$/?@ cDj4'?B!		4(IggiGNN4 YRYY-~w~~t/DEYRYY-y91	:r    cpuc                     ddz  }t        j                         }t        dd      D ]  }|j                  |        |j                  d       | j	                  |j                         d       y )N                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      r         hello world@a5364f7a52ebe2e25f1838a4ca715a893b6fd7a23f2a0d9e9762120da8b1bf53)r   r   r   r~   r   r   r^   zero_1mbr,   r.   s       r!   test_sha256_update_over_4gbz+HashLibTestCase.test_sha256_update_over_4gba  s\    $&NNq$ 	AHHX		 (jkr    c                     ddz  }t        j                         }t        dd      D ]  }|j                  |        |j                  d       | j	                  |j                         d       y )Nr   r   r   r   r   @e2d4535e3b613135c14f2fe4e026d7ad8d569db44901740beffa30d430acb038)r   rP   r   r~   r   r   r   s       r!   test_sha3_256_update_over_4gbz-HashLibTestCase.test_sha3_256_update_over_4gbj  s^    $&q$ 	AHHX		 (jkr    Fc                 v   t        |      dz  }|j                         }| j                  |   }| j                  t        |      d       |D ]  } ||fi |}	|s|	j	                         n|	j	                  |      }
| j                  |
|d|||
t        |      |fz         |s|	j                         n|	j                  |      }
t        j                  |      }| j                  |
|       |r| j                  t        |      |	j                          |s&|j                  d      | j                  |||       y y y )N   zrHash algorithm %s constructed using %s returned hexdigest %r for %d byte input data that should have hashed to %r.key)lenr}   rr   assertGreaterEqualr   r   r   r)   r<   digest_sizegetcheck_file_digest)r^   rt   rh   r   shakerj   r   r   hash_object_constructormcomputedr   s               r!   checkzHashLibTestCase.checks  s+   Y"OO%	006L 115'3 	=#'77A,1q{{}q{{67JHiP4TI778 */qxxzAHHV4DH]]9-FXv.  Vamm<	= E*2""4y9 3ur    c                 V   |j                         }	 t        j                  |       |g}|j	                  | j
                  |          t        t        j                  d      5 }|j                  |       d d d        	 |D ]  }t        j                  |      }|j                  d       | j                  t        j                  ||      j                         |       t        t        j                  d      5 }t        j                  ||      }d d d        | j                  j                         |        	 t!        j"                  t        j                         y # t        $ r Y y w xY w# 1 sw Y   xY w# 1 sw Y   kxY w# t!        j"                  t        j                         w xY w)Nwbr   rb)r}   r   rg   r   extendrr   openr   TESTFNwriteioBytesIOseekr   file_digestr   osunlink)	r^   rt   rh   r   digestsfr   buf	digestobjs	            r!   r   z!HashLibTestCase.check_file_digest  sZ   OO%		KK &t0067)""D) 	QGGDM		(! Cjj&  ''V4>>@) )**D1 ?Q ' 3 3Av >I?  !4!4!6	BC IIi&&')  			 	? ? IIi&&'sB   E "E+=A9F 6E7*F 	E('E(+E47F 	<F %F(c                 ^    | j                   |   }|D ]  }| j                  t        |d        y )Nspam)rr   r   r   )r^   algorithm_namer   r   s       r!   check_no_unicodez HashLibTestCase.check_no_unicode  s7    00@'3 	J#i)@&I	Jr    c                     | j                  d       | j                  d       | j                  d       | j                  d       | j                  d       | j                  d       y )Nr   r   rG   r   rJ   r   r  r   s    r!   test_no_unicodezHashLibTestCase.test_no_unicode  sV    e$f%h'h'h'h'r    c                 H    | j                  d       | j                  d       y )NrM   rN   r  r   s    r!   test_no_unicode_blake2z&HashLibTestCase.test_no_unicode_blake2  s    i(i(r    c                     | j                  d       | j                  d       | j                  d       | j                  d       | j                  d       | j                  d       y )NrO   rP   rQ   rR   rS   rT   r  r   s    r!   test_no_unicode_sha3z$HashLibTestCase.test_no_unicode_sha3  sV    j)j)j)j)k*k*r    Nc                    | j                   |   }|D ]J  } |d      }| j                  |j                  |       | j                  |j                  |       |rX| j                  t	        |j                  |            |       | j                  t	        |j                  |            d|z         nU| j                  t	        |j                               |       | j                  t	        |j                               d|z         | j                  |j                  |       | j                  |j                  d      d   t        |      j                                M y )NFr   r   _r   )rr   r   
block_sizer   r   r   r   rt   r   r;   r*   r}   )r^   rt   r  r   digest_lengthr   r   r   s           r!   check_blocksize_namez$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>	?r    c                     | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd	       | j                  d
dd       | j                  ddd       y )Nr   @   r   r      rG      r       rJ      0   r   r!  r   s    r!   test_blocksize_and_namez'HashLibTestCase.test_blocksize_and_name  sn    !!%R0!!&"b1!!(B3!!(B3!!(C4!!(C4r    c                     | j                  ddd       | j                  ddd       | j                  ddd	       | j                  d
dd       | j                  dddd       | j                  dddd       y )NrO      r%  rP      r&  rQ   h   r(  rR   H   r#  rS      r   rT   r)  r   s    r!   test_blocksize_name_sha3z(HashLibTestCase.test_blocksize_name_sha3  sr    !!*c26!!*c26!!*c26!!*b"5!!+sAr:!!+sAr:r    c                 >   | j                   |   }|D ]  } |       }t        t        |t              r!| j                  ||z   d       | j                  |j                  |       | j                  |j
                  |       | j                  |j                  |        y )Ni@  )rr   r   r(   r   _capacity_bits
_rate_bits_suffix)r^   rt   capacityratesuffixr   r   r   s           r!   
check_sha3zHashLibTestCase.check_sha3  s    006'3 	0#')AJq$$7X_d3Q--x8Q\\40QYY/	0r    c                     | j                  dddd       | j                  dddd       | j                  dd	d
d       | j                  dddd       | j                  dddd       | j                  dddd       y )NrO   i  i     rP      i@  rQ   i   i@  rR   r   i@  rS      i@     rT   )r9  r   s    r!   test_extra_sha3zHashLibTestCase.test_extra_sha3  sn    
Cw7
Cw7
Cg6
D#w7S$8S$8r    c                 P    | j                  ddd       | j                  ddd       y )NrM   r'  r#  rN   r&  r)  r   s    r!   test_blocksize_name_blake2z*HashLibTestCase.test_blocksize_name_blake2  s&    !!)S"5!!)R4r    c                 .    | j                  dddd       y )Nr   r     d41d8cd98f00b204e9800998ecf8427eFr   r   r   s    r!   test_case_md5_0zHashLibTestCase.test_case_md5_0   s    

3:! 	 	
r    c                 .    | j                  dddd       y )Nr      abc 900150983cd24fb0d6963f7d28e17f72Fr   rD  r   s    r!   test_case_md5_1zHashLibTestCase.test_case_md5_1  s    

6=! 	 	
r    c                 .    | j                  dddd       y )Nr   s>   ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 d174ab98d277d9f5a5611c2c9f419d9fFr   rD  r   s    r!   test_case_md5_2zHashLibTestCase.test_case_md5_2  s    

M.!	 	 	
r       z!test cannot run on 32-bit systemsr   )sizememusedry_runc                 0    | j                  dd|z  d       y )Nr      A c9af2dff37468ce5dfee8f2cfc0a9c6drD  r^   rN  s     r!   test_case_md5_hugez"HashLibTestCase.test_case_md5_huge       	

5$t)%GHr    c                 0    | j                  dd|z  d       y )Nr   rR   28138d306ff1b8281f1a9067e1a1a2b3rD  rT  s     r!   test_case_md5_uintmaxz%HashLibTestCase.test_case_md5_uintmax  rV  r    c                 *    | j                  ddd       y )Nr   r    (da39a3ee5e6b4b0d3255bfef95601890afd80709rD  r   s    r!   test_case_sha1_0z HashLibTestCase.test_case_sha1_0"  s    

63=	?r    c                 *    | j                  ddd       y )Nr   rG  (a9993e364706816aba3e25717850c26c9cd0d89drD  r   s    r!   test_case_sha1_1z HashLibTestCase.test_case_sha1_1&  s    

66=	?r    c                 *    | j                  ddd       y )Nr   8   abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq(84983e441c3bd26ebaae4aa1f95129e5e54670f1rD  r   s    r!   test_case_sha1_2z HashLibTestCase.test_case_sha1_2*  s    

6N=	?r    c                 0    | j                  dddz  d       y )Nr      a@B (34aa973cd4c4daa4f61eeb2bdbad27316534016frD  r   s    r!   test_case_sha1_3z HashLibTestCase.test_case_sha1_3/  s    

64'>=	?r    c                 *    | j                  ddd       y )NrG   r    8d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42frD  r   s    r!   test_case_sha224_0z"HashLibTestCase.test_case_sha224_08  s    

8S
D	Fr    c                 *    | j                  ddd       y )NrG   rG  823097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7rD  r   s    r!   test_case_sha224_1z"HashLibTestCase.test_case_sha224_1<  s    

8V
D	Fr    c                 *    | j                  ddd       y )NrG   ra  875388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525rD  r   s    r!   test_case_sha224_2z"HashLibTestCase.test_case_sha224_2@  s    

8
E
D	Fr    c                 0    | j                  dddz  d       y )NrG   re  rf  820794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67rD  r   s    r!   test_case_sha224_3z"HashLibTestCase.test_case_sha224_3E  s    

8TG^
D	Fr    c                 *    | j                  ddd       y )Nr   r    @e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855rD  r   s    r!   test_case_sha256_0z"HashLibTestCase.test_case_sha256_0J  s    

8S
L	Nr    c                 *    | j                  ddd       y )Nr   rG  @ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015adrD  r   s    r!   test_case_sha256_1z"HashLibTestCase.test_case_sha256_1N  s    

8V
L	Nr    c                 *    | j                  ddd       y )Nr   ra  @248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1rD  r   s    r!   test_case_sha256_2z"HashLibTestCase.test_case_sha256_2R  s    

8
E
L	Nr    c                 0    | j                  dddz  d       y )Nr   re  rf  @cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0rD  r   s    r!   test_case_sha256_3z"HashLibTestCase.test_case_sha256_3W  s    

8TG^
L	Nr    c                 *    | j                  ddd       y )NrJ   r    `38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95brD  r   s    r!   test_case_sha384_0z"HashLibTestCase.test_case_sha384_0\  s    

8S-	.r    c                 *    | j                  ddd       y )NrJ   rG  `cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7rD  r   s    r!   test_case_sha384_1z"HashLibTestCase.test_case_sha384_1a  s    

8V-	.r    c                 *    | j                  ddd       y )NrJ   p   abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu`09330c33f71147e83d192fc782cd1b4753111b173b3b05d22fa08086e3b0f712fcc7c71a557e2db966c3e9fa91746039rD  r   s    r!   test_case_sha384_2z"HashLibTestCase.test_case_sha384_2f  s    

8O-	.r    c                 0    | j                  dddz  d       y )NrJ   re  rf  `9d0e1809716474cb086e834e310a4a1ced149e9c00f248527972cec5704c2a5b07b8b3dc38ecc4ebae97ddd87f3d8985rD  r   s    r!   test_case_sha384_3z"HashLibTestCase.test_case_sha384_3m  s    

8TG^-	.r    c                 *    | j                  ddd       y )Nr   r    ڀcf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3erD  r   s    r!   test_case_sha512_0z"HashLibTestCase.test_case_sha512_0s  s    

8SM	Nr    c                 *    | j                  ddd       y )Nr   rG  ڀddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49frD  r   s    r!   test_case_sha512_1z"HashLibTestCase.test_case_sha512_1x  s    

8VM	Nr    c                 *    | j                  ddd       y )Nr   r  ڀ8e959b75dae313da8cf4f72814fc143f8f7779c6eb9f7fa17299aeadb6889018501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909rD  r   s    r!   test_case_sha512_2z"HashLibTestCase.test_case_sha512_2}  s    

8OM	Nr    c                 0    | j                  dddz  d       y )Nr   re  rf  ڀe718483d0ce769644e2e42c7bc15b4638e1f98b13b2044285632a803afa973ebde0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09brD  r   s    r!   test_case_sha512_3z"HashLibTestCase.test_case_sha512_3  s    

8TG^M	Nr    c                    | j                  |j                  |       t        |dz         D ]  } |d|z          d|dz   z  }| j                  t        ||       | j                  |j
                  |       t        |dz         D ]  } |d|z          d|dz   z  }	| j                  t        ||	       | j                  |j                  |       t        d|dz         D ]  } ||        | j                  t        |d       | j                  t        |d       | j                  t        ||dz          | j                  |j                  |       t        |dz         D ]  } |d|z          d|dz   z  }
| j                  t        ||
       | j                   |       j                          |d	      j                                t        dd
      D ]  } ||        | j                  t        |d       | j                  t        |d
       t        dd
      D ]  } ||        | j                  t        |d       | j                  t        |d       | j                  t        |d
       t        dd
      D ]  } ||        | j                  t        |d       | j                  t        |d
       t        d|dz         D ]  } ||        | j                  t        |d       | j                  t        ||dz           |d        |d       | j                  t        |d       | j                  t        |d        |d        ||       | j                  t        |d       | j                  t        ||dz          | j                  t        |d	       | j                  t        |d	       | j                  t        |d        |d	d	d	d	dddd
dddd       y )Nr   re  salt)personr   r   r   r    r=  )fanout)depth)
node_depth)
inner_size)	leaf_size    l        )node_offset)rh   )stringr%      r<     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^   ru   	salt_sizeperson_sizekey_sizer   
max_offsetr.   r  r  r   s              r!   check_blake2z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*k{1}M118<xz" 	&AD1H%	&hl#*ks;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*kk!mLa i(*kR@-F"
+*krB-*Q,O)[s;)[=)["5	
r    c                     d } |d      }|D ]n  }|D ]g  } |||      } |||      }	 |||      }
|j                  |
j                                 |||	|      }|j                  |j                                i p |j                         S )Nc                     d}d|z  |z  }d}t        |       }t        |       D ]  }||z   |z  }||}}|dz	  dz  ||<    |S )Nr  l   KZ= r         )	bytearrayr   )r   seedmaskr   r   outr.   ts           r!   selftest_seqz4HashLibTestCase.blake2_rfc7693.<locals>.selftest_seq  sg    Dd"d*AAF#C6] *UdN!1r'T)A* Jr    r&  r  )r   r   )r~   r   r   )r^   ru   md_lenin_lenr  outeroutleninlenindatar   unkeyedkeyeds               r!   blake2_rfc7693zHashLibTestCase.blake2_rfc7693  s    		 + 	-F -%eU3"662%f&AW^^-.#FHU\\^,-	-   r    c                     | j                  t        j                  ddddd       g d}g d}| j                  | j	                  t        j                  ||      d       y )Nr   r#  l    )r$  r&  r(  r#  )r   r   r'     r  r   @c23a7800d98123bd10f506c61e29da5603d763b8bbad2e737f5e765a7bccd475)r  r   rM   r   r  )r^   
b2b_md_len
b2b_in_lens      r!   test_blake2bzHashLibTestCase.test_blake2b  sP    '//2r2r9E%
0
ZHN	Pr    c                 *    | j                  ddd       y )NrM   r    ڀ786a02f742015903c6c6fd852552d272912f4740e15847618a86e217f71f5419d25e1031afee585313896444934eb04b903a685b1448b755d56f701afe9be2cerD  r   s    r!   test_case_blake2b_0z#HashLibTestCase.test_case_blake2b_0  s    

9cM	Nr    c                 *    | j                  ddd       y )NrM   rG  ڀba80a53f981c4d0d6a2797b69f12f6e94c212f14685ac4b74b12bb6fdbffa2d17d87c5392aab792dc252d5de4533cc9518d38aa8dbf1925ab92386edd4009923rD  r   s    r!   test_case_blake2b_1z#HashLibTestCase.test_case_blake2b_1  s    

9fM	Nr    c                 B    | j                  ddddddddd	d
dddd       y )NrM      foo 920568b0c5873b2f0ab67bedb6cf1b2br      bar   baz   bingr   r   r&   rM     r  Tr   r   r  r  r  r  r  r  r  r  r  rD  r   s    r!    test_case_blake2b_all_parametersz0HashLibTestCase.test_case_blake2b_all_parameters  =     	

9f
, 	 	r    c                     t        d      D ]0  \  }}}t        j                  |      }| j                  d|||       2 y )NrM   r  rB   r)   r<   r   r^   msgr   mds       r!   test_blake2b_vectorsz$HashLibTestCase.test_blake2b_vectors  >    (3 	4LCb--$CJJy#rsJ3	4r    c                     | j                  t        j                  ddddd       g d}g d}| j                  | j	                  t        j                  ||      d       y )N   r&  l    )r   r$  r%  r&  )r   r   r#  A   r  r   @6a411f08ce25adcdfb02aba641451cec53c598b24f4fc787fbdc88797f4c1dfe)r  r   rN   r   r  )r^   
b2s_md_len
b2s_in_lens      r!   test_blake2szHashLibTestCase.test_blake2s  sP    '//1aRC%
.
ZHN	Pr    c                 *    | j                  ddd       y )NrN   r    @69217a3079908094e11121d042354a7c1f55b6482ca1a51e1b250dfd1ed0eef9rD  r   s    r!   test_case_blake2s_0z#HashLibTestCase.test_case_blake2s_0$  s    

9c
L	Nr    c                 *    | j                  ddd       y )NrN   rG  @508c5e8c327c14e2e1a72ba34eeb452f37458b209ed63a294d999b4c86675982rD  r   s    r!   test_case_blake2s_1z#HashLibTestCase.test_case_blake2s_1)  s    

9f
L	Nr    c                 B    | j                  ddddddddd	d
dddd       y )NrN   r   bf2a8f7fe3c555012a6f8046e646bc75r   r  r  r  r   r   r&   rM  r  r  Tr  rD  r   s    r!    test_case_blake2s_all_parametersz0HashLibTestCase.test_case_blake2s_all_parameters.  r  r    c                     t        d      D ]0  \  }}}t        j                  |      }| j                  d|||       2 y )NrN   r  r  r  s       r!   test_blake2s_vectorsz$HashLibTestCase.test_blake2s_vectors@  r  r    c                 *    | j                  ddd       y )NrO   r    86b4e03423667dbb73b6e15454f0eb1abd4597f9a1b078e3f5b5a6bc7rD  r   s    r!   test_case_sha3_224_0z$HashLibTestCase.test_case_sha3_224_0F  s    

:s
D	Fr    c                 P    t        d      D ]  \  }}| j                  d||        y )NrO   rB   r   r^   r  r  s      r!   test_case_sha3_224_vectorz)HashLibTestCase.test_case_sha3_224_vectorK  *    #J/ 	,GCJJz3+	,r    c                 *    | j                  ddd       y )NrP   r    @a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434arD  r   s    r!   test_case_sha3_256_0z$HashLibTestCase.test_case_sha3_256_0P  s    

:s
L	Nr    c                 P    t        d      D ]  \  }}| j                  d||        y )NrP   r  r  s      r!   test_case_sha3_256_vectorz)HashLibTestCase.test_case_sha3_256_vectorU  r  r    c                 *    | j                  ddd       y )NrQ   r    `0c63a75b845e4f7d01107d852e4c2485c51a50aaaa94fc61995e71bbee983a2ac3713831264adb47fb6bd1e058d5f004rD  r   s    r!   test_case_sha3_384_0z$HashLibTestCase.test_case_sha3_384_0Z  s    

:s-	.r    c                 P    t        d      D ]  \  }}| j                  d||        y )NrQ   r  r  s      r!   test_case_sha3_384_vectorz)HashLibTestCase.test_case_sha3_384_vector`  r  r    c                 *    | j                  ddd       y )NrR   r    ڀa69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26rD  r   s    r!   test_case_sha3_512_0z$HashLibTestCase.test_case_sha3_512_0e  s    

:sM	Nr    c                 P    t        d      D ]  \  }}| j                  d||        y )NrR   r  r  s      r!   test_case_sha3_512_vectorz)HashLibTestCase.test_case_sha3_512_vectork  r  r    c                 T    | j                  dddd       | j                  dddd       y )NrS   r    @7f9c2ba4e88f827d616045507605853ed73b8093f6efbc88eb1a6eacfa66ef26T7f9crD  r   s    r!   test_case_shake_128_0z%HashLibTestCase.test_case_shake_128_0p  ,    

;
L
	 	

;VT2r    c                 R    t        d      D ]  \  }}| j                  d||d        y )NrS   Tr  r  s      r!   test_case_shake128_vectorz)HashLibTestCase.test_case_shake128_vectorv  ,    #K0 	3GCJJ{CT2	3r    c                 T    | j                  dddd       | j                  dddd       y )NrT   r    @46b9dd2b0ba88d13233b3feb743eeb243fcd52ea62b81b82b50c27646ed5762fT46b9rD  r   s    r!   test_case_shake_256_0z%HashLibTestCase.test_case_shake_256_0z  r  r    c                 R    t        d      D ]  \  }}| j                  d||d        y )NrT   Tr  r  s      r!   test_case_shake256_vectorz)HashLibTestCase.test_case_shake256_vector  r  r    c                 4   d}| j                   D ]_  } |d      }|j                  d       |j                  d|z         |j                  d        |d|z  d      }|j                  d       a t        j                         }|j                  d       |j                  d|z         |j                  d       | j	                  |j                         d       t        j                  dd|z  z   dz         }| j	                  |j                         d       y )Ni   Fr      1   #   x@1cfceca95989f51f658e3f3ffe7f1cd43726c9e088c13ee10b46f57cef135b94)r   r~   r   r   r   r   )r^   gil_minsizer   r   s       r!   test_gilzHashLibTestCase.test_gil  s     ** 	DU+AHHTNHHTK'(HHTNTK'?AHHTN	 NN		#$	KKMN	

 NN4$"44t;<KKMN	
r    c                 .  	
 t        j                         
d}d}|dz  	t        j                  	|z        j                         }	
fd}g }t        |      D ]l  }t	        	      d|z  z  }| j                  |d       | j                  |t	        |      z  d       t        j                  ||f      }|j                  |       n |D ]  }|j                           |D ]  }|j                           | j                  |
j                                y )NrM  s   swineflui@ c                 ~    d}|t              k  r,j                  ||| z           || z  }|t              k  r+y y r   )r   r~   )
chunk_sizeindexrh   hashers     r!   hash_in_chunksz=HashLibTestCase.test_threaded_hashing.<locals>.hash_in_chunks  sD    E#d)#d5);<=# #d)#r    r   r   )targetr   )r   r   r   r   r   assertGreaterr   	threadingThreadappendstartjoin)r^   num_threadssmallest_dataexpected_hashr(  threads	threadnumr%  threadrh   r'  s            @@r!   test_threaded_hashingz%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                 N    | j                   }|| j                  |t               y y rf   )r   r   int)r^   	fips_modes     r!   test_get_fips_modez"HashLibTestCase.test_get_fips_mode  s(    %%	 !!)S1 !r    c           	      4   | j                   j                         D ]`  \  }}|j                  d      r|D ]D  }	  |       }| j	                  |      5  t        j                  | t        |             d d d        F b y # t        $ r Y Uw xY w# 1 sw Y   bxY w)N)rd   r   blake)ru   )rr   r   r:   r   subTestr   check_disallow_instantiationtype)r^   r   r   ru   r,   s        r!   test_disallow_instantiationz+HashLibTestCase.test_disallow_instantiation  s    '+'@'@'F'F'H 	H#I|##$?@+ H#A \\k\: H88tAwGH HH	H " H Hs   A? B?	B
BBzneed _hashlibc                 l    t        j                  | t               t        j                  | t               y rf   )r   r>  r   r   r   s    r!    test_hash_disallow_instantiationz0HashLibTestCase.test_hash_disallow_instantiation  s$     	,,T48,,T7;r    c           	      H   | j                   j                         D ]^  \  }}|D ]T  }	 t         |             }| j	                  |      5  | j                  t        d      5  d|_        d d d        d d d        V ` y # t        $ r Y ew xY w# 1 sw Y   %xY w# 1 sw Y   ~xY w)N)	hash_typezimmutable typeF)rr   r   r?  r   r=  assertRaisesRegexr   value)r^   r   r   ru   rD  s        r!   test_readonly_typesz#HashLibTestCase.test_readonly_types  s    '+'@'@'F'F'H 
	0#I|+ 0 $[] 3I \\I\6 0//	;KL 0*/	00 00
	0 " 0 00 0s5   A=	B B	(B=	B	B	BBB!)F)r   r   N)p__name__
__module____qualname__r|   r   r  rt   r   Py_DEBUGrZ   ra   r   propertyr   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r   r   r   r   r  r  requires_blake2r  requires_sha3r  r!  r*  r1  r9  r?  rA  rE  rI  rL  r7   skipIfr   maxsizer   r   rU  rY  r\  r_  rc  rh  rk  rn  rq  rt  rw  rz  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r
   reap_threadsrequires_working_threadingr6  r:  cpython_onlyr@  
skipUnlessr   rB  rG  __classcell__)r   s   @r!   rD   rD   a   s   7 ;'F "$G!3!Gw7G7GI?V ; ;  '
><	=5?L4D' :@ ul l ul l:2(4J( ) ) + + DE+/?&5 ; ;
0 9 9 5 5


 X__S[[37*,OPS1WQ6I 7 QI X__S[[37*,OPS1WQ6I 7 QI???
?FFF
F
NNN
N
.
.
..N
N
NN
M
^!, 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02!< 3 #!<F2
 H H XT)?;< <<
0r    rD   c            
       N   e Zd Zg dZddddd ed      fdddd	d ed
      fdddd	d ed      fgZej                  d      dfej                  d      dfej                  d      dfej                  d      dfej                  d      dfgej                  d      dfej                  d      dfej                  d      dfej                  d      dfej                  d      dfgej                  d      dfej                  d      dfej                  d      dfej                  d      d fej                  d!      dfgd"Zd# Z	 e
j                  edu d$      d%        Z e
j                   eed&      d'       e
j                   e       d()      d*               Zd+ Zd, Zy)-KDFTests))   password   saltr   N)rX  rY  r   N)rX  rY  r   N)s   passwordPASSWORDpasswords$   saltSALTsaltSALTsaltSALTsaltSALTsaltr   r  )s	   pass words   sa ltr   r   r    r   r   ڀ77d6576238657b203b19ca42c18a0497f16b4844e3074ae8dfdffa3fede21442fcd0069ded0948f8326a753a0fc81f17e8d3e0fb2e0d3628cf35e20c38d18906rX  s   NaClr   r  ڀfdbabe1c9d3472007856e7190d01e9fe7c6ad7cbc8237830e77376634b3731622eaf30d92e22a3886ff109279d9830dac727afb94a83ee6d8360cbdfa2cc0640s   pleaseletmeins   SodiumChloridei @  ڀ7023bdcb3afd7348461c06cd81fd38ebfda8fbba904f8e3ea9b543f6545da1f2d5432955613f0fcf62d49705242a9af9e61e85dc0d651e40dfcf017b45575887(0c60c80f961f0e71f3a9b524af6012062fe037a6N(ea6c014dc72d6f8ccd1ed92ace1d41f0d8de8957(4b007901b765489abead49d926f721d065a429c123d2eec4fe41c849b80c8d83662c0e44a8b291a964cf2f07038    56fa6aa75548099dcc37d7f03425e0c3@120fb6cffcf8b32c43e7225256c4f837a86548c92ccc35480805987cb70be17b@ae4d0c95af6b46d32d0adff928f06dd02a303f8ef3c251dfd6e2d85a95474c43@c5e478d59288c841aa530db6845c4c8d962893a001ce4e11a4963873aa98134aP348c89dbcbd32b2f32d814b8116e84cf2b17347ebc1800181c4e2a1fb8dd53e1c635518c7dac47e9(    89b69d0516f829893c696226650a8687ڀ867f70cf1ade02cff3752599a3a53dc4af34c7a669815ae5d513554e1c8cf252c02d470a285a0501bad999bfe943c08f050235d7d68b1da55e63f73b60a57fceڀe1d9c16aa681708a45f5c7c4e215ceb66e011a2e9f0040713f18aefdb866d53cf76cab2868a39b9f7840edce4fef5a82be67335c77a6068e04112754f27ccf4eڀd197b1b33db0143e018b12f3d1d1479e6cdebdcc97c5c0f87f6902e072f457b5143f30602641b3d55cd335988cb36b84376060ecd532e039b742a239434af2d5ڀ8c0511f4c6e597c6ac6315d8f0362e225f3c501495ba23b868c005174dc4ee71115b59f9e60cd9532fa33e0f75aefe30225c583a186cd82bd4daea9724a3d3b8r#   9d9e9c4cd21fe4be24d5b8244c759665)r   r   r   c                    | j                   j                         D ]  \  }}||vrt        | j                        D ]  \  }}|\  }}}	}
||   \  }}|r|}
 |||||	|
      }| j	                  ||||||	|
f        ||t        |      t        |      |	|
      }| j	                  ||        ||t        |      t        |      |	|
      }| j	                  ||       |
 |||||	      }| j	                  ||||||	f         | j                  t        d      5   |dddd       d d d        d|v r| j                  t        |dddd       | j                  t        |ddd	d       | j                  t        |dddd
       | j                  t        |dddd       | j                  t        |ddddd
       | j                  t        |ddddd        |ddddd       }| j	                  || j                   d   d
   d
          y y # 1 sw Y   xY w)Nz.*unsupported.*unknowns   passrY  r   r   s   sha1passr  r   r  rX  )r=   passwordr  
iterationsdklen)pbkdf2_resultsr   	enumeratepbkdf2_test_vectorsr   
memoryviewr  rE  r   r   r   )r^   pbkdf2	supporteddigest_nameresultsr.   vectorrq  r  roundsrs  expectedoverwrite_dklenr  s                 r!   _test_pbkdf2_hmaczKDFTests._test_pbkdf2_hmac(  sk   $($7$7$=$=$? 	L K)+&t'?'?@ L	606-$,3AJ)/"+E[(D&%H  h"-xvu!MO[*X*>'-vu>  h/[)H*=&t_fe=  h/= hfEC$$S(&18T6%JL!L	L, ##J0AB 	39gw2	3 Y67GWa 66661 FFGWa FFGWb FFGWa FFGWa 6KgD*CS$"5"5f"=a"@"CD+ 	3 	3s   HH
zrequires OpenSSL bindingsc                 L    | j                  t        j                  t               y rf   )r  openssl_hashlibpbkdf2_hmacr   r   s    r!   test_pbkdf2_hmac_czKDFTests.test_pbkdf2_hmac_cY  s    ::<QRr    scryptz   test requires OpenSSL > 1.1zscrypt is blocked in FIPS mode)reasonc           
         | j                   D ]5  \  }}}}}}t        j                  |||||      }| j                  ||       7 t        j                  ddddd       | j	                  t
              5  t        j                  ddddd       d d d        | j	                  t
              5  t        j                  ddddd       d d d        | j	                  t
              5  t        j                  d       d d d        | j	                  t
              5  t        j                  dd       d d d        | j	                  t
              5  t        j                  ddddd	       d d d        d
D ]E  }| j	                  t        t        t
        f      5  t        j                  dd|dd       d d d        G dD ]E  }| j	                  t        t        t
        f      5  t        j                  ddd|d       d d d        G dD ]E  }| j	                  t        t        t
        f      5  t        j                  dddd|       d d d        G dD ]F  }| j	                  t        t        t
        f      5  t        j                  ddddd|       d d d        H dD ]F  }	| j	                  t        t        t
        f      5  t        j                  ddddd|	       d d d        H y # 1 sw Y   VxY w# 1 sw Y   +xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   DxY w# 1 sw Y   xY w# 1 sw Y   xY w)N)r  nr-   prX  rY  r   r  r   rq  r  r  )r  r   r   N)r  r   N)r  N)r  r  r-   r  maxmem)r  r  r-   r  rs  )scrypt_test_vectorsr   r  r   r   r   r   r   )
r^   rq  r  r  r-   r  r~  resultr  rs  s
             r!   test_scryptzKDFTests.test_scrypt]  s2    261I1I 	/-HdAq!X^^H41QGFVX.	/
 	{Aa@y) 	DNN:GqAC	Dy) 	DNN;VqAC	D y) 	(NN;'	(y) 	1NN;0	1y) 	?NN;1ag>	?! 	IA""Jy#IJ I{AaHI I	I  	IA""Jy#IJ I{AaHI I	I  	IA""Jy#IJ I{AaHI I	I ! 	.F""Jy#IJ .{Aa&,.. .	.   	,E""Jy#IJ ,{Aa%*,, ,	,1	D 	D	D 	D	( 	(	1 	1	? 	?I II II I. ., ,sx   4K#,K0$K=L
LL$L1'L>1M<M#K-0K:=L
LL!$L.	1L;	>M	M	M!	c                     | j                  dt        j                         | j                  dt        j                         y )N
blake2b512zsha3-512)r   r   r   r   s    r!   test_normalized_namezKDFTests.test_normalized_name  s.    w'C'CDW%A%ABr    c                 ,   ddz  }t        j                         }| j                  t        j                  t
        j                         t        t
        j                  d      5 }t        d      D ]$  }|j                  |       |j                  |       & 	 d d d        t        t
        j                  d      5 }t        j                  |t         j                        }d d d        | j                  |j                         j                                | j                  |j                  |j                         | j                  t!        |      t!        |             | j#                  t$              5  t        j                  d d       d d d        | j#                  t$              5  t        t
        j                  d      5 }t        j                  |d       d d d        d d d        | j#                  t$              5  t        t
        j                  d      5 }t        j                  |d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   rxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   PxY w# 1 sw Y   y xY w)Nre  i   r  r   r  r   r-   )r   r   
addCleanupr  r  r   r  r  r   r~   r  r  r   r   rt   r   r?  r   r   )r^   rh   d1r  r  d2s         r!   test_file_digestzKDFTests.test_file_digest  s   e|^^		9#3#34)""D) 	Q2Y 		$	
 )""D) 	8Q$$Q7B	8 	8"''*d2hR)z* 	0h/	0 z* 	1i&&, 1##Ax01	1 z* 	1i&&- 1##Ax01	1 	1'	 	
	8 	8	0 	01 1	1 	1
1 1	1 	1sl   "3I 8%I2I&I2I&I2=J
I>/J
 I
II#&I/	+I22I;>J	J

J)rH  rI  rJ  rv  r   r  r)   r<   rt  r  r7   rO  r  r  rT  r   r   r   r  r  r  r   r    r!   rW  rW    sw   	 
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 X___,.IJS KS X(357X__]_-MN#, O7#,JC1r    rW  __main__)6r   binasciir   r   rW   r  r   r  r   	sysconfigr+  r7   r\   r   r   test.supportr   r   test.support.import_helperr   r   r	   r
   http.clientr   default_builtin_hashesget_config_varr[   r9   r}   r;   r  builtin_hashlibr   r   r   r   r   r   	frozensetrc   rT  rM  check_sanitizerr   rN  r/   r3   rB   TestCaserD   rW  rH  main)r   s   0r!   <module>r     s       	  	 
      ( : " * ) % O )))*EF+N *//4::<BB3G	N &i
|D++))j\JOOLL &(%%g/AB $G##t,	###	M3CD 1 K0h'' K0\s1x   s1l zHMMO G$  DG%K  Gs*   *E8#E= 0F =FFF F 