asda?‰PNG  IHDR ? f ??C1 sRGB ??é gAMA ±? üa pHYs ? ??o¨d GIDATx^íüL”÷e÷Y?a?("Bh?_ò???¢§?q5k?*:t0A-o??¥]VkJ¢M??f?±8\k2íll£1]q?ù???T a bYh@sddlZddlmZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl m Z ddlmZmZmZddlmZeedZhdZedZedureZnd d ed d DZed dgdZeekred dgdZndZzddlmZm Z m!Z!m"Z"Wn*e#y@dZdZ e$Z!ddZ"Yn0z ddl%Z%Wne#yfdZ%Yn0e &e%dZ'z ddl(Z(Wne#ydZ(Yn0e j)ddZ*e &e* oe(dZ+ddZ,dZ-ddZ.Gddde j/Z0Gdd d e j/Z1e2d!kre 3dS)"N) unhexlify)support)_4G bigmemtestimport_fresh_module) HTTPExceptionZgettotalrefcount>Zsha3sha512Zblake2md5sha1sha256ZPY_BUILTIN_HASHLIB_HASHEScCsh|] }|qS)strip).0mr r -/usr/local/lib/python3.9/test/test_hashlib.py "sr",hashlib_hashlib)Zfresh)Zblocked)HASHHASHXOFopenssl_md_meth_names get_fips_modecCsdSNrr r r r rr6srzrequires _blake2T)Zubzrequires _sha3cCsLt|tsJt|d}d}|D]$}|||d?d@||d@7}q"|S)NZ0123456789abcdef) isinstancebytesrepr)shrir r rhexstrJs "r%z(http://www.pythontest.net/hashlib/{}.txtc cst|}zt|}Wn&ttfy>td|Yn0|T|D]>}|}| dsJ|sfqJ| d}t |d|d<|VqJWdn1s0YdS)NzCould not retrieve {}#rr) URLformatrZopen_urlresourceOSErrorrunittestZSkipTestr startswithsplitrfromhex) hash_nameurlZtestdatalinepartsr r r read_vectorsUs  r2cseZdZdZddhZejdkp eZddZ fddZ e d d Z e d d Z d dZddZddZddZddZddZddZddZddZdd Zd!d"Zd#d$Zdd&d'Zd(d)Zd*d+Zed,d-Zed.d/Z dd2d3Z!d4d5Z"ed6d7Z#d8d9Z$ed:d;Z%edd?Z'd@dAZ(dBdCZ)e*+e,j-e.dDkdEe/e.dDdFd%dGdHdIZ0e*+e,j-e.dFkdEe/e.dFdFd%dGdJdKZ1e*+e,j-e.dFkdEe/e.dFdFd%dGdLdMZ2dNdOZ3dPdQZ4dRdSZ5dTdUZ6dVdWZ7dXdYZ8dZd[Z9d\d]Z:d^d_Z;d`daZdfdgZ?dhdiZ@djdkZAdldmZBdndoZCdpdqZDdrdsZEdtduZFdvdwZGdxdyZHedzd{ZIed|d}ZJed~dZKeddZLeddZMeddZNeddZOeddZPeddZQeddZReddZSeddZTeddZUeddZVeddZWeddZXeddZYeddZZeddZ[eddZ\eddZ]eddZ^ddZ_e`jaddZbddZce*deed1udddZfZgS)HashLibTestCase)r MD5r ZSHA1sha224ZSHA224r SHA256sha384ZSHA384rZSHA512blake2bblake2ssha3_224sha3_256sha3_384sha3_512 shake_128 shake_256r>r?posixc CsRz t|WStyL}z(|jr8|tvr8td|WYd}~n d}~00dS)z@Import a module and return a reference to it or None on failure.z%Did a C extension fail to compile? %sN) importlib import_moduleModuleNotFoundError_warn_on_extension_importbuiltin_hasheswarningswarn)self module_nameerrorr r r_conditional_import_modulers  $z*HashLibTestCase._conditional_import_modulec st}jD]}||q d}|r<|ddhi_|D] }trZ|drZqFtj|<qFj D]0\}}|t t |d|fdd}||qrd}|_ |r, t|d t|d j D]F\}}t |d |d} | rz | WntyYq0|| qfd d } d } | rP| dd} | rh| dd} | r| d| dd}|r| d| d|r| d| dtsd}|r| d| d| d| d| d| dttj|i|dS)N_blake2r8r9Zsha3_c[s.|durtj|fi|Stj||fi|SN)rnew)dataZ_algkwargsr r r_test_algorithm_via_hashlib_newszAHashLibTestCase.__init__.._test_algorithm_via_hashlib_newr openssl_md5Z openssl_sha1Zopenssl_cs"ttd|}j||dS)N__get_builtin_constructor)getattrrconstructors_to_testadd)name constructorrHr radd_builtin_constructorsz9HashLibTestCase.__init__..add_builtin_constructor_md5r _sha1r _sha256r5r _sha512r7r_sha3r:r;r<r=r>r?)setsupported_hash_namesrVlowerrKupdaterU SKIP_SHA3r+itemsrTrr assertTruehasattr ValueErrorsuperr3__init__)rHargsrPZ algorithms algorithmrL constructorsrQrrXrZr[r\r]r^r_ __class__rYrrj{sp            zHashLibTestCase.__init__cCs|j}tj|SrM)rUvalues itertoolschain from_iterable)rHrmr r rhash_constructorss z!HashLibTestCase.hash_constructorscCstSrM)rrYr r r is_fips_modeszHashLibTestCase.is_fips_modecCsLtdtd}|jD]0}||dd}|j|jvr>|dq|qdS)Nb FZusedforsecurity)arrayrangertrWshakes hexdigest)rHaconscr r rtest_hash_arrays     zHashLibTestCase.test_hash_arraycCs"|tjtdd|jDdS)Ncss|]}|r|VqdSrM)islower)rZ_algor r r sz=HashLibTestCase.test_algorithms_guaranteed..) assertEqualralgorithms_guaranteedr`rarYr r rtest_algorithms_guaranteedsz*HashLibTestCase.test_algorithms_guaranteedcCsD|ttjtj|dtjtjD]}tj|dd}q,dS)NZ undefinedFrx)rfr`rrissubsetalgorithms_available assertNotInrN)rHrWdigestr r rtest_algorithms_availables  z)HashLibTestCase.test_algorithms_availablecCstjddd|jr|d|jD]}|dd|dddq$tjdddtjdd|jdur|jjddd|jjdddS)Nr Trxzskip in FIPS moder )rrNruskipTestrtr rrRrHrr r rtest_usedforsecurity_trues     z)HashLibTestCase.test_usedforsecurity_truecCsvtjddd|jD]}|dd|dddqtjdddtjdd|jdurr|jjddd|jjdddS)Nr Frxrr )rrNrtr rrRrr r rtest_usedforsecurity_falses    z*HashLibTestCase.test_usedforsecurity_falsecCs$|ttjd|ttjddS)Nzspam spam spam spam spam) assertRaisesrhrrN TypeErrorrYr r rtest_unknown_hashsz!HashLibTestCase.test_unknown_hashcCs|tdjddS)Nr6r )rrrNrWrYr r rtest_new_upper_to_lowersz'HashLibTestCase.test_new_upper_to_lowerc Csttd}ttd}|t|dz ddl}WntyJ|dYn0dtjd<| z0|t|dWdt vr|tjd<qtjd=n dt vr|tjd<ntjd=0|t |d|d}| ||j |t|d dgdS) NrSZ__builtin_constructor_cachetestrz_md5 module not availabler[r r4)rTrrrhr[ ImportErrorrsysmodulesclearlocalsrZassertIsr rsorted)rHZget_builtin_constructorZbuiltin_constructor_cacher[rXr r rtest_get_builtin_constructors2        z,HashLibTestCase.test_get_builtin_constructorcCs~|jD]r}|dd}|j|jvrP||dt|t|d|dq||t|t||qdS)NFrxry) rtrWr|assertIsInstancerrrr%r}rHrr"r r rtest_hexdigest s   zHashLibTestCase.test_hexdigestc Csd}|jD]}|dd}|j|jvr&q tdur:t|tr:q |j|jfD]R}|t|d|D]:}|tt f||Wdq\1s0Yq\qFq dS)N)i ll lll Frxi) rtrWr|rrrr}rrh OverflowError)rHZ large_sizesrr"rlengthr r rtest_digest_length_overflow*s   z+HashLibTestCase.test_digest_length_overflowcCsr|jD]f}|dd}||jt|j|jvr@||j|jn||j|j||jtj |jddjqdS)NFrx) rtrrWstrraassertInrrrrNrr r rtest_name_attribute:s   z#HashLibTestCase.test_name_attributec Cs,d}d}d}d}|jD]}|dd}|||||||||j|jvr`d}nd}|dd}|||||||j||j||||||dd} ||j|| j|||||dd} | j|} | } | |||j|| j||| j|| qdS) Nsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbs~ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccsddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddFrx)ryr )rtrcrWr|rrcopy) rHZaasZbeesZceesZdeesrZm1rkZm2Zm3Zm4Z m4_digestZm4_copyr r rtest_large_updateGs0          z!HashLibTestCase.test_large_updateFc Kst|d}|}|j|}|t|d|D]}||fi|} |sR| n| |} || |d||| t||f|s| n| |} t|} || | |s2|t| | j q2dS)NzrHash algorithm %s constructed using %s returned hexdigest %r for %d byte input data that should have hashed to %r.) lenrbrUZassertGreaterEqualr}rrrr- digest_size) rHrWrOr}ZshakerPrrmhash_object_constructorrZcomputedrr r rcheckgs(     zHashLibTestCase.checkcCs&|j|}|D]}|t|dqdS)NZspam)rUrr)rHZalgorithm_namermrr r rcheck_no_unicode|s z HashLibTestCase.check_no_unicodecCs@|d|d|d|d|d|ddS)Nr r r5r r7rrrYr r rtest_no_unicodes      zHashLibTestCase.test_no_unicodecCs|d|ddS)Nr8r9rrYr r rtest_no_unicode_blake2s z&HashLibTestCase.test_no_unicode_blake2cCs@|d|d|d|d|d|ddS)Nr:r;r<r=r>r?rrYr r rtest_no_unicode_sha3s      z$HashLibTestCase.test_no_unicode_sha3rNcCs|j|}|D]}|dd}||j|||j||rn|t||||t||d|n,|t|||t|d|||j||| ddt |qdS)NFrxr_r) rUr block_sizerrrr}rWrr,r )rHrWrrZ digest_lengthrmrrr r rcheck_blocksize_names   z$HashLibTestCase.check_blocksize_namecCsX|ddd|ddd|ddd|ddd |d d d |d d ddS)Nr @ryr r5r r70rrrYr r rtest_blocksize_names z#HashLibTestCase.test_blocksize_namecCs\|ddd|ddd|ddd |d d d |d ddd|dddd dS)Nr:rr;rr<hrr=Hrr>rr?rrYr r rtest_blocksize_name_sha3s z(HashLibTestCase.test_blocksize_name_sha3cCsl|j|}|D]X}|}tdur,t|tr,q|||d||j|||j|||j|qdS)Ni@)rUrrrZ_capacity_bitsZ _rate_bitsZ_suffix)rHrWZcapacityZratesuffixrmrrr r r check_sha3s zHashLibTestCase.check_sha3cCsd|dddd|dddd|dd d d|d d d d|dddd|dddddS)Nr:iir;i@r<ii@r=i@r>i@r?)rrYr r rtest_extra_sha3s zHashLibTestCase.test_extra_sha3cCs |ddd|ddddS)Nr8rrr9rrrYr r rtest_blocksize_name_blake2sz*HashLibTestCase.test_blocksize_name_blake2cCs|jddddddS)Nr rZ d41d8cd98f00b204e9800998ecf8427eFrxrrYr r rtest_case_md5_0szHashLibTestCase.test_case_md5_0cCs|jddddddS)Nr abcZ 900150983cd24fb0d6963f7d28e17f72FrxrrYr r rtest_case_md5_1szHashLibTestCase.test_case_md5_1cCs|jddddddS)Nr s>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789Z d174ab98d277d9f5a5611c2c9f419d9fFrxrrYr r rtest_case_md5_2s zHashLibTestCase.test_case_md5_2z!test cannot run on 32-bit systemsr)sizeZmemusedry_runcCs|dd|ddS)Nr AZ c9af2dff37468ce5dfee8f2cfc0a9c6drrHrr r rtest_case_md5_hugesz"HashLibTestCase.test_case_md5_hugecCs|dd|ddS)Nr rZ 28138d306ff1b8281f1a9067e1a1a2b3rrr r rtest_case_md5_uintmaxsz%HashLibTestCase.test_case_md5_uintmaxcCs4t}|d|dd||ddS)z,Regression test for gh-98517 CVE-2022-37454.Z880762e8ce6700f114fec0f621fd97c4b9c00147fa052215294cceeedN)rr:rcrr})rHrr"r r rtest_sha3_update_overflows z)HashLibTestCase.test_sha3_update_overflowcCs|ddddS)Nr rZ(da39a3ee5e6b4b0d3255bfef95601890afd80709rrYr r rtest_case_sha1_0sz HashLibTestCase.test_case_sha1_0cCs|ddddS)Nr rZ(a9993e364706816aba3e25717850c26c9cd0d89drrYr r rtest_case_sha1_1sz HashLibTestCase.test_case_sha1_1cCs|ddddS)Nr 8abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopqZ(84983e441c3bd26ebaae4aa1f95129e5e54670f1rrYr r rtest_case_sha1_2 sz HashLibTestCase.test_case_sha1_2cCs|dddddS)Nr a@BZ(34aa973cd4c4daa4f61eeb2bdbad27316534016frrYr r rtest_case_sha1_3s z HashLibTestCase.test_case_sha1_3cCs|ddddS)Nr5rZ8d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42frrYr r rtest_case_sha224_0sz"HashLibTestCase.test_case_sha224_0cCs|ddddS)Nr5rZ823097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7rrYr r rtest_case_sha224_1sz"HashLibTestCase.test_case_sha224_1cCs|ddddS)Nr5rZ875388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525rrYr r rtest_case_sha224_2sz"HashLibTestCase.test_case_sha224_2cCs|dddddS)Nr5rrZ820794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67rrYr r rtest_case_sha224_3$s z"HashLibTestCase.test_case_sha224_3cCs|ddddS)Nr rZ@e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855rrYr r rtest_case_sha256_0)sz"HashLibTestCase.test_case_sha256_0cCs|ddddS)Nr rZ@ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015adrrYr r rtest_case_sha256_1-sz"HashLibTestCase.test_case_sha256_1cCs|ddddS)Nr rZ@248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1rrYr r rtest_case_sha256_21sz"HashLibTestCase.test_case_sha256_2cCs|dddddS)Nr rrZ@cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0rrYr r rtest_case_sha256_36s z"HashLibTestCase.test_case_sha256_3cCs|ddddS)Nr7rZ`38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95brrYr r rtest_case_sha384_0;sz"HashLibTestCase.test_case_sha384_0cCs|ddddS)Nr7rZ`cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7rrYr r rtest_case_sha384_1@sz"HashLibTestCase.test_case_sha384_1cCs|ddddS)Nr7pabcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstuZ`09330c33f71147e83d192fc782cd1b4753111b173b3b05d22fa08086e3b0f712fcc7c71a557e2db966c3e9fa91746039rrYr r rtest_case_sha384_2Esz"HashLibTestCase.test_case_sha384_2cCs|dddddS)Nr7rrZ`9d0e1809716474cb086e834e310a4a1ced149e9c00f248527972cec5704c2a5b07b8b3dc38ecc4ebae97ddd87f3d8985rrYr r rtest_case_sha384_3Ls z"HashLibTestCase.test_case_sha384_3cCs|ddddS)NrrZcf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3errYr r rtest_case_sha512_0Rsz"HashLibTestCase.test_case_sha512_0cCs|ddddS)NrrZddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49frrYr r rtest_case_sha512_1Wsz"HashLibTestCase.test_case_sha512_1cCs|ddddS)NrrZ8e959b75dae313da8cf4f72814fc143f8f7779c6eb9f7fa17299aeadb6889018501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909rrYr r rtest_case_sha512_2\sz"HashLibTestCase.test_case_sha512_2cCs|dddddS)NrrrZe718483d0ce769644e2e42c7bc15b4638e1f98b13b2044285632a803afa973ebde0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09brrYr r rtest_case_sha512_3cs z"HashLibTestCase.test_case_sha512_3c Cs"||j|t|dD]}|d|dqd|d}|jt||d||j|t|dD]}|d|dqdd|d} |jt|| d||j|td|dD]}||dq|jt|dd|jt|dd|jt||dd||j|t|dD]}|d|dqd|d} |jt|| d|||d dtdd D]}||d qf|jt|dd |jt|d d tdd D]}||d q|jt|dd |jt|dd |jt|d d tdd D]}||d q|jt|dd |jt|d d td|dD]}||dq.|jt|dd|jt||dd|dd|dd|jt|dd|jt |dd|dd||d|jt|dd|jt ||dd|jt |d d|jt |d d|t |d|d d d d dddd ddddd dS)Nrrsalt)personrrkeyrr)fanout)depth) node_depth) inner_size) leaf_sizerl) node_offset)rO)stringrrT) rrrrrrrrrr last_node) rZ SALT_SIZEr{rrhZ PERSON_SIZEZMAX_DIGEST_SIZEZ MAX_KEY_SIZEr}rr) rHrXZ salt_sizeZ person_sizeZkey_sizerZ max_offsetr$rrrr r r check_blake2hs          zHashLibTestCase.check_blake2c Csxdd}|dd}|D]X}|D]N}|||}|||} |||d} || ||| |d} || qq|S)NcSsTd}d||@}d}t|}t|D]*}|||@}||}}|d?d@||<q$|S)NrlKZ=r) bytearrayr{)rseedmaskr~rvoutr$tr r r selftest_seqs    z4HashLibTestCase.blake2_rfc7693..selftest_seqrr)rr)rcrr}) rHrXZmd_lenZin_lenrZouterZoutlenZinlenZindatarZunkeyedZkeyedr r rblake2_rfc7693s    zHashLibTestCase.blake2_rfc7693cCsB|tjdddddgd}gd}||tj||ddS)Nryrl)rrrr)rrrrrZ@c23a7800d98123bd10f506c61e29da5603d763b8bbad2e737f5e765a7bccd475)rrr8rr)rHZ b2b_md_lenZ b2b_in_lenr r r test_blake2bszHashLibTestCase.test_blake2bcCs|ddddS)Nr8rZ786a02f742015903c6c6fd852552d272912f4740e15847618a86e217f71f5419d25e1031afee585313896444934eb04b903a685b1448b755d56f701afe9be2cerrYr r rtest_case_blake2b_0sz#HashLibTestCase.test_case_blake2b_0cCs|ddddS)Nr8rZba80a53f981c4d0d6a2797b69f12f6e94c212f14685ac4b74b12bb6fdbffa2d17d87c5392aab792dc252d5de4533cc9518d38aa8dbf1925ab92386edd4009923rrYr r rtest_case_blake2b_1sz#HashLibTestCase.test_case_blake2b_1cCs*|jddddddddd d d d d dddS)Nr8fooZ 920568b0c5873b2f0ab67bedb6cf1b2brybarbazbingrrrrrT rrrrrrrrrrrrrYr r r test_case_blake2b_all_parameterssz0HashLibTestCase.test_case_blake2b_all_parameterscCs4tdD]&\}}}t|}|jd|||dqdS)Nr8rr2rr-rrHmsgrmdr r rtest_blake2b_vectorss z$HashLibTestCase.test_blake2b_vectorscCsB|tjdddddgd}gd}||tj||ddS)Nrl)ryrrr)rrrArrZ@6a411f08ce25adcdfb02aba641451cec53c598b24f4fc787fbdc88797f4c1dfe)rrr9rr)rHZ b2s_md_lenZ b2s_in_lenr r r test_blake2sszHashLibTestCase.test_blake2scCs|ddddS)Nr9rZ@69217a3079908094e11121d042354a7c1f55b6482ca1a51e1b250dfd1ed0eef9rrYr r rtest_case_blake2s_0sz#HashLibTestCase.test_case_blake2s_0cCs|ddddS)Nr9rZ@508c5e8c327c14e2e1a72ba34eeb452f37458b209ed63a294d999b4c86675982rrYr r rtest_case_blake2s_1sz#HashLibTestCase.test_case_blake2s_1cCs*|jddddddddd d d d d dddS)Nr9rZ bf2a8f7fe3c555012a6f8046e646bc75ryrrrrrrrrrTrrrYr r r test_case_blake2s_all_parameters sz0HashLibTestCase.test_case_blake2s_all_parameterscCs4tdD]&\}}}t|}|jd|||dqdS)Nr9rrrr r rtest_blake2s_vectorss z$HashLibTestCase.test_blake2s_vectorscCs|ddddS)Nr:rZ86b4e03423667dbb73b6e15454f0eb1abd4597f9a1b078e3f5b5a6bc7rrYr r rtest_case_sha3_224_0%sz$HashLibTestCase.test_case_sha3_224_0cCs$tdD]\}}|d||qdS)Nr:r2rrHrrr r rtest_case_sha3_224_vector*sz)HashLibTestCase.test_case_sha3_224_vectorcCs|ddddS)Nr;rZ@a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434arrYr r rtest_case_sha3_256_0/sz$HashLibTestCase.test_case_sha3_256_0cCs$tdD]\}}|d||qdS)Nr;r(r)r r rtest_case_sha3_256_vector4sz)HashLibTestCase.test_case_sha3_256_vectorcCs|ddddS)Nr<rZ`0c63a75b845e4f7d01107d852e4c2485c51a50aaaa94fc61995e71bbee983a2ac3713831264adb47fb6bd1e058d5f004rrYr r rtest_case_sha3_384_09sz$HashLibTestCase.test_case_sha3_384_0cCs$tdD]\}}|d||qdS)Nr<r(r)r r rtest_case_sha3_384_vector?sz)HashLibTestCase.test_case_sha3_384_vectorcCs|ddddS)Nr=rZa69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26rrYr r rtest_case_sha3_512_0Dsz$HashLibTestCase.test_case_sha3_512_0cCs$tdD]\}}|d||qdS)Nr=r(r)r r rtest_case_sha3_512_vectorJsz)HashLibTestCase.test_case_sha3_512_vectorcCs$|dddd|dddddS)Nr>rZ@7f9c2ba4e88f827d616045507605853ed73b8093f6efbc88eb1a6eacfa66ef26TZ7f9crrYr r rtest_case_shake_128_0Os z%HashLibTestCase.test_case_shake_128_0cCs&tdD]\}}|d||dqdS)Nr>Tr(r)r r rtest_case_shake128_vectorVsz)HashLibTestCase.test_case_shake128_vectorcCs$|dddd|dddddS)Nr?rZ@46b9dd2b0ba88d13233b3feb743eeb243fcd52ea62b81b82b50c27646ed5762fTZ46b9rrYr r rtest_case_shake_256_0[s z%HashLibTestCase.test_case_shake_256_0cCs&tdD]\}}|d||dqdS)Nr?Tr(r)r r rtest_case_shake256_vectorbsz)HashLibTestCase.test_case_shake256_vectorcCsd}|jD]J}|dd}|d|d||d|d|dd}|dq t}|d|d||d||dtdd|d}||ddS)NiFrx1#xZ@1cfceca95989f51f658e3f3ffe7f1cd43726c9e088c13ee10b46f57cef135b94)rtrcrr rr})rHZ gil_minsizerrr r rtest_gilgs*       zHashLibTestCase.test_gilc std}d}|dt|}fdd}g}t|D]N}td|}||d||t|dtj||fd}| |qD|D] }| q|D] }| q||dS) Nrsswineflui@ cs4d}|tkr0|||||7}qdSr)rrc) chunk_sizeindexrOZhasherr rhash_in_chunkss z=HashLibTestCase.test_threaded_hashing..hash_in_chunksrwr)targetrk) rr r}r{rZ assertGreaterr threadingThreadappendstartjoin) rHZ num_threadsZ smallest_dataZ expected_hashr<threadsZ threadnumr9threadr r;rtest_threaded_hashings(     z%HashLibTestCase.test_threaded_hashingcCs|j}|dur||tdSrM)rurint)rHZ fips_moder r rtest_get_fips_modesz"HashLibTestCase.test_get_fips_modez need _hashlibcCsh|tdtWdn1s(0Y|tdtWdn1sZ0YdS)Nzcannot create 'HASH' instancez cannot create 'HASHXOF' instance)assertRaisesRegexrrrrYr r rtest_internal_typess$z#HashLibTestCase.test_internal_types)F)rrN)h__name__ __module__ __qualname__rar|osrWCOMPILED_WITH_PYDEBUGrDrKrjpropertyrtrurrrrrrrrrrrrrrrrequires_blake2r requires_sha3rrrrrrrrrrr*skipIfrmaxsizerrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr"r#r$r%r&r'r*r+r,r-r.r/r0r1r2r3r4r8rZ reap_threadsrErG skipUnlessrrI __classcell__r r rnrr3es M                   O                       #r3c @szeZdZgdZdddddedfdddd ded fd d d d dedfgZeddfeddfeddfeddfeddfgeddfeddfeddfeddfeddfgeddfeddfeddfedd fed!dfgd"Zd#d$Z e e dud%d&d'Z e eed(d)d*d+Ze eed,d-e j ed.d/d0d1Zd2d3ZdS)4KDFTests))passwordsaltrN)rWrXrN)rWrXN)spasswordPASSWORDpasswords$saltSALTsaltSALTsaltSALTsaltSALTsaltrYr)s passwordssaltrYryrryrZ77d6576238657b203b19ca42c18a0497f16b4844e3074ae8dfdffa3fede21442fcd0069ded0948f8326a753a0fc81f17e8d3e0fb2e0d3628cf35e20c38d18906rWsNaClrr Zfdbabe1c9d3472007856e7190d01e9fe7c6ad7cbc8237830e77376634b3731622eaf30d92e22a3886ff109279d9830dac727afb94a83ee6d8360cbdfa2cc0640s pleaseletmeinsSodiumChloridei@Z7023bdcb3afd7348461c06cd81fd38ebfda8fbba904f8e3ea9b543f6545da1f2d5432955613f0fcf62d49705242a9af9e61e85dc0d651e40dfcf017b45575887Z(0c60c80f961f0e71f3a9b524af6012062fe037a6NZ(ea6c014dc72d6f8ccd1ed92ace1d41f0d8de8957Z(4b007901b765489abead49d926f721d065a429c1Z23d2eec4fe41c849b80c8d83662c0e44a8b291a964cf2f07038Z 56fa6aa75548099dcc37d7f03425e0c3Z@120fb6cffcf8b32c43e7225256c4f837a86548c92ccc35480805987cb70be17bZ@ae4d0c95af6b46d32d0adff928f06dd02a303f8ef3c251dfd6e2d85a95474c43Z@c5e478d59288c841aa530db6845c4c8d962893a001ce4e11a4963873aa98134aZP348c89dbcbd32b2f32d814b8116e84cf2b17347ebc1800181c4e2a1fb8dd53e1c635518c7dac47e9(Z 89b69d0516f829893c696226650a8687Z867f70cf1ade02cff3752599a3a53dc4af34c7a669815ae5d513554e1c8cf252c02d470a285a0501bad999bfe943c08f050235d7d68b1da55e63f73b60a57fceZe1d9c16aa681708a45f5c7c4e215ceb66e011a2e9f0040713f18aefdb866d53cf76cab2868a39b9f7840edce4fef5a82be67335c77a6068e04112754f27ccf4eZd197b1b33db0143e018b12f3d1d1479e6cdebdcc97c5c0f87f6902e072f457b5143f30602641b3d55cd335988cb36b84376060ecd532e039b742a239434af2d5Z8c0511f4c6e597c6ac6315d8f0362e225f3c501495ba23b868c005174dc4ee71115b59f9e60cd9532fa33e0f75aefe30225c583a186cd82bd4daea9724a3d3b8rZ 9d9e9c4cd21fe4be24d5b8244c759665)r r rc Cs|jD]\}}||vrq t|jD]\}}|\}}} } ||\} } | rN| } ||||| | } || | |||| | f||t|t|| | } || | ||t|t|| | } || | | dur&||||| } || | |||| fq&q |td|ddddWdn1s 0Yd|vr| t |dddd| t |ddd d| t|dddd | t|dddd | t|ddddd | t|ddddd |dd dddd } || |jdd d dS)Nz.*unsupported.*unknownspassrXrr ssha1passrrrrW)r.passwordrZ iterationsdklen) pbkdf2_resultsre enumeratepbkdf2_test_vectorsr memoryviewr rHrhrr)rHZpbkdf2Z supportedZ digest_nameresultsr$Zvectorr^rroundsr_expectedZoverwrite_dklenr r r r_test_pbkdf2_hmacsd          .     zKDFTests._test_pbkdf2_hmacztest requires builtin_hashlibcCs|tjtdSrM)rgbuiltin_hashlib pbkdf2_hmacrErYr r rtest_pbkdf2_hmac_py$szKDFTests.test_pbkdf2_hmac_pyriz test requires OpenSSL > 1.0cCs|tjtdSrM)rgopenssl_hashlibrirrYr r rtest_pbkdf2_hmac_c(szKDFTests.test_pbkdf2_hmac_cscryptz test requires OpenSSL > 1.1zscrypt is blocked in FIPS mode)reasonc Cs|jD]0\}}}}}}tj|||||d}|||qtjdddddd|t$tjddddddWdn1s0Y|t$tjddddddWdn1s0Y|ttdWdn1s0Y|ttddWdn1s*0Y|t$tjdddddd Wdn1sj0Yd D]L}|tttf$tjdd|dddWdn1s0Yqxd D]L}|tttf$tjddd|ddWdn1s 0Yqd D]L}|tttf$tjdddd|dWdn1s\0Yqd D]N}|tttf&tjddddd|d Wdn1s0Yqnd D]N} |tttf&tjddddd| dWdn1s0YqdS)N)rnr#prWrXrr rr^rr)rrrN)rrN)rN)rror#rpmaxmem)rror#rpr_)scrypt_test_vectorsrrmrrrrhr) rHr^rror#rprfresultrqr_r r r test_scrypt-sB 2 2 ( , 4888*zKDFTests.test_scryptcCs |dtj|dtjdS)NZ blake2b512zsha3-512)rrrrYr r rtest_normalized_nameUszKDFTests.test_normalized_name)rJrKrLrbrrrrr-r`rgr*rRrhrjrTrgrkrlrrrtrur r r rrVsn         &1     %rV__main__)4rzZbinasciirrrArqrMrZ sysconfigr>r*rFrrZ test.supportrrrZ http.clientrrgrNZdefault_builtin_hashesZget_config_varrEr rbr,rkrhrrrrrr frozensetrLrTrPr_Zcheck_sanitizerrdrQr%r'r2ZTestCaser3rVrJmainr r r r sr            [!