{G_Tc@sddlZddlZddlZddlZyddlZWnek rYeZnXddlZddlZddl m Z ddl m Z ddl mZmZeedZdZdejfdYZd ejfd YZd Zed krendS( iN(t unhexlify(t test_support(t_4GtprecisionbigmemtesttgettotalrefcountcCs^ddl}|j}d}x<|D]4}t|}|||d?d@||d@}q"W|S(Nitii(tstringt hexdigitstord(tsRthtrtcti((s-/usr/local/lib/python2.7/test/test_hashlib.pythexstrs    &tHashLibTestCasec BseZd<ZeZd Zd ZdZdZdZ dZ dZ dZ dZ dZdZdZdZdZdZejejedkdededddd ed!Zejejedkdededddd ed"Zejejedkdededddd ed#Zd$Zd%Zd&Z d'Z!ededddd(Z"ededddd)Z#d*Z$d+Z%d,Z&d-Z'd.Z(d/Z)d0Z*d1Z+d2Z,d3Z-d4Z.d5Z/d6Z0d7Z1d8Z2d9Z3ej4e5d:e6j7d;Z8RS(=tmd5tMD5tsha1tSHA1tsha224tSHA224tsha256tSHA256tsha384tSHA384tsha512tSHA512cBsSyd|dUWn0ek rB}|jrCejd|qCnXej|S(s@Import a module and return a reference to it or None on failure.simport Ns%Did a C extension fail to compile? %s(t ImportErrort_warn_on_extension_importtwarningstwarntlocalstget(tselft module_nameterror((s-/usr/local/lib/python2.7/test/test_hashlib.pyt_conditional_import_module-s  c OsAt}x$|jD]}|j|jqWi|_x|D]}t|j|\}}|jtt|d|d}|j|qjW|j d}|r:t |dst t |dst xL|jjD]8\}}t|d|d}|r|j|qqWn|j d} | ri|jdj| j n|j d} | r|jd j| j n|j d } | r|jd j| j |jd j| jn|j d } | r$|jdj| j|jdj| jntt|j||dS(NcSs)|dkrtj|Stj||S(N(tNonethashlibtnew(tdatat_alg((s-/usr/local/lib/python2.7/test/test_hashlib.pyt_test_algorithm_via_hashlib_newBs  t_hashlibt openssl_md5t openssl_sha1topenssl_t_md5Rt_shaRt_sha256RRt_sha512RR(tsettsupported_hash_namestaddtlowertconstructors_to_testtitemstgetattrR'R&R%thasattrtAssertionErrorR(RRRRtsuperRt__init__( R"targstkwargst algorithmst algorithmt constructorsR+R,t constructorR0R1R2R3((s-/usr/local/lib/python2.7/test/test_hashlib.pyR>6sB   cCs^tjdtd}|jj}x0tjj|D]}||}|jq:WdS(Ntbi (tarraytrangeR8t itervaluest itertoolstchaint from_iterablet hexdigest(R"taRCtconsR ((s-/usr/local/lib/python2.7/test/test_hashlib.pyttest_hash_arrayds  cCs?|jtjtg|jD]}|jr|^qdS(N(t assertEqualR'RAttupleR5tislower(R"t_algo((s-/usr/local/lib/python2.7/test/test_hashlib.pyttest_algorithms_attributeks cCs0|jttjd|jttjddS(Nsspam spam spam spam spami(t assertRaisest ValueErrorR'R(t TypeError(R"((s-/usr/local/lib/python2.7/test/test_hashlib.pyttest_unknown_hashpscCstjd}|jt|dyddl}Wntk rCnXdtjdABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789t d174ab98d277d9f5a5611c2c9f419d9f(Rq(R"((s-/usr/local/lib/python2.7/test/test_hashlib.pyttest_case_md5_2s is!test cannot run on 32-bit systemstsizetmemuseitdry_runcCs|jdd|ddS(NRtAt c9af2dff37468ce5dfee8f2cfc0a9c6d(Rq(R"R((s-/usr/local/lib/python2.7/test/test_hashlib.pyttest_case_md5_hugescCs|jdd|ddS(NRRR(Rr(R"R((s-/usr/local/lib/python2.7/test/test_hashlib.pyttest_case_md5_huge_updatescCs|jdd|ddS(NRRt 28138d306ff1b8281f1a9067e1a1a2b3(Rq(R"R((s-/usr/local/lib/python2.7/test/test_hashlib.pyttest_case_md5_uintmaxscCs|jddddS(NRRt(da39a3ee5e6b4b0d3255bfef95601890afd80709(Rq(R"((s-/usr/local/lib/python2.7/test/test_hashlib.pyttest_case_sha1_0s cCs|jddddS(NRRzt(a9993e364706816aba3e25717850c26c9cd0d89d(Rq(R"((s-/usr/local/lib/python2.7/test/test_hashlib.pyttest_case_sha1_1s cCs|jddddS(NRt8abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopqt(84983e441c3bd26ebaae4aa1f95129e5e54670f1(Rq(R"((s-/usr/local/lib/python2.7/test/test_hashlib.pyttest_case_sha1_2s cCs|jdddddS(NRRMi@Bt(34aa973cd4c4daa4f61eeb2bdbad27316534016f(Rq(R"((s-/usr/local/lib/python2.7/test/test_hashlib.pyttest_case_sha1_3scCsF|tdkrBy|jdd|dWqBtk r>qBXndS(NiRRt(87d745c50e6b2879ffa0fb2c930e9fbfe0dc9a5b(RRqt OverflowError(R"R((s-/usr/local/lib/python2.7/test/test_hashlib.pyttest_case_sha1_huges   cCsF|tdkrBy|jdd|dWqBtk r>qBXndS(NiRRR(RRrR(R"R((s-/usr/local/lib/python2.7/test/test_hashlib.pyttest_case_sha1_huge_updates   cCs|jddddS(NRRt8d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f(Rq(R"((s-/usr/local/lib/python2.7/test/test_hashlib.pyttest_case_sha224_0 s cCs|jddddS(NRRzt823097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7(Rq(R"((s-/usr/local/lib/python2.7/test/test_hashlib.pyttest_case_sha224_1s cCs|jddddS(NRRt875388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525(Rq(R"((s-/usr/local/lib/python2.7/test/test_hashlib.pyttest_case_sha224_2s cCs|jdddddS(NRRMi@Bt820794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67(Rq(R"((s-/usr/local/lib/python2.7/test/test_hashlib.pyttest_case_sha224_3scCs|jddddS(NRRt@e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855(Rq(R"((s-/usr/local/lib/python2.7/test/test_hashlib.pyttest_case_sha256_0s cCs|jddddS(NRRzt@ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad(Rq(R"((s-/usr/local/lib/python2.7/test/test_hashlib.pyttest_case_sha256_1#s cCs|jddddS(NRRt@248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1(Rq(R"((s-/usr/local/lib/python2.7/test/test_hashlib.pyttest_case_sha256_2's cCs|jdddddS(NRRMi@Bt@cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0(Rq(R"((s-/usr/local/lib/python2.7/test/test_hashlib.pyttest_case_sha256_3,scCs|jdddddS(NRRt@38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1dat 274edebfe76f65fbd51ad2f14898b95b(Rq(R"((s-/usr/local/lib/python2.7/test/test_hashlib.pyttest_case_sha384_01s cCs|jdddddS(NRRzt@cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bedt 8086072ba1e7cc2358baeca134c825a7(Rq(R"((s-/usr/local/lib/python2.7/test/test_hashlib.pyttest_case_sha384_16s cCs|jddddddS(NRt8abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnt8hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstut@09330c33f71147e83d192fc782cd1b4753111b173b3b05d22fa08086e3b0f712t fcc7c71a557e2db966c3e9fa91746039(Rq(R"((s-/usr/local/lib/python2.7/test/test_hashlib.pyttest_case_sha384_2;s  cCs|jddddddS(NRRMi@Bt@9d0e1809716474cb086e834e310a4a1ced149e9c00f248527972cec5704c2a5bt 07b8b3dc38ecc4ebae97ddd87f3d8985(Rq(R"((s-/usr/local/lib/python2.7/test/test_hashlib.pyttest_case_sha384_3BscCs|jdddddS(NRRt@cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9cet@47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e(Rq(R"((s-/usr/local/lib/python2.7/test/test_hashlib.pyttest_case_sha512_0Hs cCs|jdddddS(NRRzt@ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39at@2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f(Rq(R"((s-/usr/local/lib/python2.7/test/test_hashlib.pyttest_case_sha512_1Ms cCs|jddddddS(NRRRt@8e959b75dae313da8cf4f72814fc143f8f7779c6eb9f7fa17299aeadb6889018t@501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909(Rq(R"((s-/usr/local/lib/python2.7/test/test_hashlib.pyttest_case_sha512_2Rs  cCs|jddddddS(NRRMi@Bt@e718483d0ce769644e2e42c7bc15b4638e1f98b13b2044285632a803afa973ebt@de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b(Rq(R"((s-/usr/local/lib/python2.7/test/test_hashlib.pyttest_case_sha512_3Yss!Threading required for this test.c stjd}d}|dtj|j}fd}g}xt|D]}td|}|dkst|t|dksttj}|j|tj d|d||fj q`Wx|D]}|j qW|j |jdS( Nitswineflui@ csOd}x8|tkr@j|||!||7}q W|jdS(Ni(RnRdR4(t chunk_sizeteventtindex(R)thasher(s-/usr/local/lib/python2.7/test/test_hashlib.pythash_in_chunksms i ittargetR?( R'RRLtxrangeRnR<t threadingtEventtappendtThreadtstarttwaitRP( R"t num_threadst smallest_datat expected_hashRteventst threadnumRR((R)Rs-/usr/local/lib/python2.7/test/test_hashlib.pyttest_threaded_hashing^s$     ( smd5Rssha1Rssha224Rssha256Rssha384Rssha512R(9t__name__t __module__R5tCOMPILED_WITH_PYDEBUGRR%R>RORTRXR_RcRlRqRrRvRwRyR|RtunittesttskipIfR\tmaxsizeRRtFalseRRRRRRRRRRRRRRRRRRRRRRRRRt skipUnlessRRt reap_threadsR(((s-/usr/local/lib/python2.7/test/test_hashlib.pyR&sb .           +++    " "                tKDFTestscBs"eZd"d#d$d%d&gZied d!fed d!fed d!feddfedd!fgd6edd!fedd!fedd!feddfedd!fgd6edd!fedd!fedd!feddfedd!fgd6Zd ZRS('tpasswordtsaltiiitpasswordPASSWORDpasswordt$saltSALTsaltSALTsaltSALTsaltSALTsaltit passwordtsaltit(0c60c80f961f0e71f3a9b524af6012062fe037a6t(ea6c014dc72d6f8ccd1ed92ace1d41f0d8de8957t(4b007901b765489abead49d926f721d065a429c1t23d2eec4fe41c849b80c8d83662c0e44a8b291a964cf2f07038it 56fa6aa75548099dcc37d7f03425e0c3Rt@120fb6cffcf8b32c43e7225256c4f837a86548c92ccc35480805987cb70be17bt@ae4d0c95af6b46d32d0adff928f06dd02a303f8ef3c251dfd6e2d85a95474c43t@c5e478d59288c841aa530db6845c4c8d962893a001ce4e11a4963873aa98134atP348c89dbcbd32b2f32d814b8116e84cf2b17347ebc1800181c4e2a1fb8dd53e1c635518c7dac47e9i(t 89b69d0516f829893c696226650a8687Rt867f70cf1ade02cff3752599a3a53dc4af34c7a669815ae5d513554e1c8cf252c02d470a285a0501bad999bfe943c08f050235d7d68b1da55e63f73b60a57fcete1d9c16aa681708a45f5c7c4e215ceb66e011a2e9f0040713f18aefdb866d53cf76cab2868a39b9f7840edce4fef5a82be67335c77a6068e04112754f27ccf4etd197b1b33db0143e018b12f3d1d1479e6cdebdcc97c5c0f87f6902e072f457b5143f30602641b3d55cd335988cb36b84376060ecd532e039b742a239434af2d5t8c0511f4c6e597c6ac6315d8f0362e225f3c501495ba23b868c005174dc4ee71115b59f9e60cd9532fa33e0f75aefe30225c583a186cd82bd4daea9724a3d3b8i@t 9d9e9c4cd21fe4be24d5b8244c759665Rc Csx|jjD]\}}xt|jD]z\}}|\}}}}||\} } | ri| }ntj|||||} |j| | |||||fq,WqWdS(N(tpbkdf2_resultsR9t enumeratetpbkdf2_test_vectorsR't pbkdf2_hmacRP( R"t digest_nametresultsR tvectorRRtroundstdklenRutoverwrite_dklentout((s-/usr/local/lib/python2.7/test/test_hashlib.pyttest_pbkdf2_hmacs  N(spasswordssaltiN(spasswordssaltiN(spasswordssaltiN(RRii(RRii(RRR&RRRR(((s-/usr/local/lib/python2.7/test/test_hashlib.pyRs@          cCstjttdS(N(Rt run_unittestRR(((s-/usr/local/lib/python2.7/test/test_hashlib.pyt test_mainst__main__(RFR'RIR\RRR&RRtbinasciiRRZRttest.test_supportRRR;RRtTestCaseRRRR(((s-/usr/local/lib/python2.7/test/test_hashlib.pyt s(         _?