a fŸWcdIã@sædZddlZe e¡ZddlZddlmZddlm Z ddl m Z m Z ddl mZGdd„de ƒZGd d „d e ƒZGd d „d e ƒZGd d„de ƒZGdd„de ƒZGdd„de ƒZGdd„de ƒZGdd„de ƒZGdd„de ƒZdS)z?passlib.tests.test_handlers - tests for passlib hash algorithmséN)Úhash)Úu)ÚTestCaseÚ HandlerCase)Ú UPASS_WAVc@seZdZdd„ZdS)Úldap_pbkdf2_testcCs@| tj dd¡¡| tj dd¡¡| tj dd¡¡dS)ztest ldap pbkdf2 wrappersÚpasswordz?{PBKDF2}1212$OB.dtnSEXZK8U5cgxU/GYQ$y5LKPOplRmok7CZp/aqVDVg8zGIzV{PBKDF2-SHA256}1212$4vjV83LKPjQzk31VI4E0Vw$hsYF68OiOUPdDZ1Fg.fJPeq1h/gXXY7acBp9/6c.tmQz�{PBKDF2-SHA512}1212$RHY0Fr3IDMSVO/RSZyb5ow$eNLfBK.eVozomMr.1gYa17k9B7KIK25NOEshvhrSX.esqY3s.FvWZViXz4KoLlQI.BzY/YTNJOiKc5gBYFYGwwN)Ú assertTruerZldap_pbkdf2_sha1ÚverifyZldap_pbkdf2_sha256Zldap_pbkdf2_sha512©Úself©r úF/usr/lib/python3.9/site-packages/passlib/tests/test_handlers_pbkdf2.pyÚ test_wrapperss$þÿþÿþÿzldap_pbkdf2_test.test_wrappersN)Ú__name__Ú __module__Ú __qualname__rr r r rrsrc@s$eZdZejZdedfgZdgZdS)Úatlassian_pbkdf2_sha1_test)ZadminzI{PKCS5S2}c4xaeTQM0lUieMS3V5voiexyX9XhqC2dBd5ecVy60IPksHChwoTAVYFrhsgoq8/pzI{PKCS5S2}cE9Yq6Am5tQGdHSHhky2XLeOnURwzaLBG2sur7FHKpvy2u0qDn6GcVGRjlmJoIUyzÚ{PKCS5S2}c4xaeTQM0lUieMS3V5voiexyX9XhqC2dBd5ecVy!0IPksHChwoTAVYFrhsgoq8/p{PKCS5S2}c4xaeTQM0lUieMS3V5voiexyX9XhqC2dBd5ecVy60IPksHChwoTAVYFrhsgoq8/{PKCS5S2}c4xaeTQM0lUieMS3V5voiexyX9XhqC2dBd5ecVy60IPksHChwoTAVYFrhsgoq8/=N) rrrrZatlassian_pbkdf2_sha1ÚhandlerrÚknown_correct_hashesÚknown_malformed_hashesr r r rr6sÿû þrc@s&eZdZejZdedfgZgd¢ZdS)Úpbkdf2_sha1_test)rz?$pbkdf2$1212$OB.dtnSEXZK8U5cgxU/GYQ$y5LKPOplRmok7CZp/aqVDVg8zGIz?$pbkdf2$1212$THDqatpidANpadlLeTeOEg$HV3oi1k5C5LQCgG1BMOL.BX4YZc)z@$pbkdf2$01212$THDqatpidANpadlLeTeOEg$HV3oi1k5C5LQCgG1BMOL.BX4YZcz;$pbkdf2$$THDqatpidANpadlLeTeOEg$HV3oi1k5C5LQCgG1BMOL.BX4YZcz@$pbkdf2$1212$THDqatpidANpadlLeTeOEg$HV3oi1k5C5LQCgG1BMOL.BX4YZc$N) rrrrZ pbkdf2_sha1rrrrr r r rrMsÿþrc@seZdZejZdedfgZdS)Úpbkdf2_sha256_test)rzV$pbkdf2-sha256$1212$4vjV83LKPjQzk31VI4E0Vw$hsYF68OiOUPdDZ1Fg.fJPeq1h/gXXY7acBp9/6c.tmQzV$pbkdf2-sha256$1212$3SABFJGDtyhrQMVt1uABPw$WyaUoqCLgvz97s523nF4iuOqZNbp5Nt8do/cuaa7AiIN)rrrrZ pbkdf2_sha256rrrr r r rr`s ÿürc@seZdZejZdedfgZdS)Úpbkdf2_sha512_test)rz�$pbkdf2-sha512$1212$RHY0Fr3IDMSVO/RSZyb5ow$eNLfBK.eVozomMr.1gYa17k9B7KIK25NOEshvhrSX.esqY3s.FvWZViXz4KoLlQI.BzY/YTNJOiKc5gBYFYGwwz�$pbkdf2-sha512$1212$KkbvoKGsAIcF8IslDR6skQ$8be/PRmd88Ps8fmPowCJttH9G3vgxpG.Krjt3KT.NP6cKJ0V4Prarqf.HBwz0dCkJ6xgWnSj2ynXSV7MlvMa8QN)rrrrZ pbkdf2_sha512rrrr r r rrks ÿûrc@s(eZdZejZedƒdfdedfgZdS)Úcta_pbkdf2_sha1_testu hashy the ☃z4$p5k2$1000$ZxK4ZBJCfQg=$jJZVscWtO--p1-xIZl6jhO2LKR0=)rz%$p5k2$1$$h1TDLGSw9ST8UMAPeIE13i0t12c=z4$p5k2$4321$OTg3NjU0MzIx$jINJrSvZ3LXeIbUdrJkRpN62_WQ=N) rrrrZcta_pbkdf2_sha1rrrrr r r rrxs ÿörc@s$eZdZejZddddedfgZdS)Údlitz_pbkdf2_sha1_test)Zcloadmz,$p5k2$$exec$r1EWMCMk7Rlv3L/RNcFXviDefYa0hlql)Zgnuz1$p5k2$c$u9HvcT4d$Sd1gwSVCLZYAuqZ25piRnbBEoAesaa/g)Zdclz1$p5k2$d$tUsch7fU$nqDkaxMDOFBeJsTSfABsyn.PYUXilHwL)Zspamz3$p5k2$3e8$H0NX9mT/$wk/sE8vv6OMKuMaqazCJYDSUhWY9YB2Jz0$p5k2$$KosHgqNo$9mjN8gqjt02hDoP0c2J0ABtLIwtot8cQN)rrrrZdlitz_pbkdf2_sha1rrrr r r rrˆsÿørc@seZdZejZedfdgZdS)Úgrub_pbkdf2_sha512_testzÚgrub.pbkdf2.sha512.10000.BCAC1CEC5E4341C8C511C5297FA877BE91C2817B32A35A3ECF5CA6B8B257F751.6968526A2A5B1AEEE0A29A9E057336B48D388FFB3F600233237223C2104DE1752CEC35B0DD1ED49563398A282C0F471099C2803FBA47C7919CABC43192C68F60)Ztoomanysecretsagrub.pbkdf2.sha512.10000.9B436BB6978682363D5C449BBEAB322676946C632208BC1294D51F47174A9A3B04A7E4785986CD4EA7470FAB8FE9F6BD522D1FC6C51109A8596FB7AD487C4493.0FE5EF169AFFCB67D86E2581B1E251D88C777B98BA2D3256ECC9F765D84956FC5CA5C4B6FD711AA285F0A04DCF4634083F9A20F4B6F339A52FBD6BED618E527BN)rrrrZgrub_pbkdf2_sha512rrrr r r rr–s ÿòrcsªeZdZejZddedƒdfedƒdfedƒdfgZgd¢Z‡fdd „Z d d „Z d d „Z dd„Z dd„Z dd„Zdd„Zd!dd„Zdd„Zdd„Zdd„Zdd „Z‡ZS)"Ú scram_test)Úpencilú>$scram$4096$QSXCR.Q6sek8bf92$sha-1=HZbuOlKbWl.eR8AfIposuKbhX30)rúÑ$scram$4096$QSXCR.Q6sek8bf92$sha-1=HZbuOlKbWl.eR8AfIposuKbhX30,sha-256=qXUXrlcvnaxxWG00DdRgVioR2gnUpuX5r.3EZ1rdhVY,sha-512=lzgniLFcvglRLS0gt.C4gy.NurS3OIOVRAU1zZOV4P.qFiVFO2/edGQSu/kD1LwdX0SNV/KsPdHSwEl5qRTuZQuIX àz>$scram$6400$0BojBCBE6P2/N4bQ$sha-1=YniLes.b8WFMvBhtSACZyyvxeCcu Ⅸ aÌ€u­IX à) z?$scram$04096$QSXCR.Q6sek8bf92$sha-1=HZbuOlKbWl.eR8AfIposuKbhX30z>$scram$409A$QSXCR.Q6sek8bf92$sha-1=HZbuOlKbWl.eR8AfIposuKbhX30z>$scram$4096$QSXCR.Q6sek8bf9-$sha-1=HZbuOlKbWl.eR8AfIposuKbhX30z>$scram$4096$QSXCR.Q6sek8bf92$sha-1=HZbuOlKbWl.eR8AfIposuKbhX3-z$scram$4096$QSXCR.Q6sek8bf92z$scram$4096$QSXCR.Q6sek8bf92$z?$scram$4096$QSXCR.Q6sek8bf92$sha-1=HZbuOlKbWl.eR8AfIposuKbhX30$zq$scram$4096$QSXCR.Q6sek8bf92$sha-1=HZbuOlKbWl.eR8AfIposuKbhX30sha-256=qXUXrlcvnaxxWG00DdRgVioR2gnUpuX5r.3EZ1rdhVYze$scram$4096$QSXCR.Q6sek8bf92$sha-1=HZbuOlKbWl.eR8AfIposuKbhX30,shaxxx-190=HZbuOlKbWl.eR8AfIposuKbhX30z@$scram$4096$QSXCR.Q6sek8bf92$sha-256=HZbuOlKbWl.eR8AfIposuKbhX30z=$scram$4096$QSXCR.Q6sek8bf92$sha1=HZbuOlKbWl.eR8AfIposuKbhX30cs&tt|ƒ ¡| ¡t dd¡dS)NÚignorez norm_hash_name\(\): unknown hash)ÚsuperrÚsetUpZrequire_stringprepÚwarningsÚfilterwarningsr ©Ú __class__r rr#÷szscram_test.setUpcsÎtddd�‰‡‡fdd„}ˆ |ddd�tjj¡ˆ t|d¡ˆ |d ƒd g¡ˆ |d ƒgd ¢¡ˆ |d d gƒd dg¡ˆ t|dg¡ˆjt|gdd�ˆ t|d dg¡ˆjt|d gd did�dS)ztest parsing of 'algs' settings AAAAAAAAAAéè)ZsaltÚroundscs0ˆD]}| |ˆ|¡qˆjfd|i|¤ŽjS)NÚalgs)Ú setdefaultrr*)r*ÚkwdsÚk©Údefaultsr r rÚparsesz&scram_test.test_90_algs..parseNT)Ú use_defaultsÚsha1úsha-1zsha1, sha256, md5)Úmd5r3úsha-256Zsha256r5)r*r1z shaxxx-190s)Úchecksum) ÚdictÚ assertEqualrÚscramÚ default_algsÚ assertRaisesÚ TypeErrorÚ ValueErrorÚ RuntimeError)r r0r r.rÚ test_90_algss  ÿzscram_test.test_90_algscCs<|jt|jddtdƒdid�|jt|jdddid�dS) z+test internal parsing of 'checksum' keywordTr3ÚXé)r1r6r5s XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXN)r;r<rrr=r r r rÚtest_90_checksumss  ÿ ÿzscram_test.test_90_checksumscCs |jj}d}d}| ||dƒ|ddf¡| ||dƒ|ddf¡| ||dƒ|dd f¡| t||d ¡d }| t||d ¡| t||d¡| t||d ¡d S)z test scram.extract_digest_info()z'$scram$10$AAAAAA$sha-1=AQ,bbb=Ag,ccc=AwsÚSHA1é óZbbbóZcccóZdddz$scram$10$....$sha-1,bbb,cccr3N)rZextract_digest_infor8r;ÚKeyErrorr=)r ZediÚhÚsÚcr r rÚtest_91_extract_digest_info*sz&scram_test.test_91_extract_digest_infocCsH|jj}| |dƒdg¡| |ddd�dg¡| |dƒgd¢¡dS) z test scram.extract_digest_algs()rr3Zhashlib)Úformatr2r )r3r5zsha-512N)rÚextract_digest_algsr8)r Zedar r rÚtest_92_extract_digest_algs<s ÿÿþ ûz&scram_test.test_92_extract_digest_algscCsÒ|jj}d}d}| |tdƒ|ddƒ|¡| |d|ddƒ|¡| |tdƒ|dd ƒ|¡| |d |dd ƒ|¡| |d|dd ƒd ¡| t|d|dd¡| t|d|dd¡| |tdƒ| d¡dd ƒ|¡dS)ztest scram.derive_digest()ss²û«‚[tNuPnIŠZZ‡ÎnéÓõâ…¨r(r3sâ…¨zSHA-1ÚIXr2sIXrCr4s3À/¨¿ä£ÂŽMèodzsha-666rzlatin-1N)rZ derive_digestr8rr;r=Údecode)r rÚs1Zd1r r rÚtest_93_derive_digestNsÿz scram_test.test_93_derive_digestcCs¢| tdƒ¡}| | tdƒ|¡¡| | tdƒ|¡¡| tdƒ¡}| | tdƒ|¡¡| | tdƒ|¡¡| t|jtdƒ¡| t|jtdƒ|¡dS) ztest hash/verify use saslprepuI­XrQrPõóuoÌ�uâ€�oÌ�uï·�N)Z do_encryptrr Z do_verifyr;r=)r rIr r rÚtest_94_saslprepgszscram_test.test_94_saslprepr:cCsh|j}t|jƒ}|jfi|di¤Ž}| |j|¡| |jddg¡| d¡}| | |¡ddg¡dS)z#using() -- 'default_algs' parameterúsha1,md5r4r3ÚdummyN)rÚlistr:Úusingr8rrN)r ÚparamrZorigÚsubclsÚh1r r rÚtest_94_using_w_default_algs{s  z'scram_test.test_94_using_w_default_algscCs|jdd�dS)zusing() -- 'algs' parameterr*)r[N)r^r r r rÚtest_94_using_w_algsŒszscram_test.test_94_using_w_algscCsd|jjdd�}| d¡}| | |¡¡|jdd�}| | |¡¡|jdd�}| | |¡¡dS)zneeds_update() -- algs settingrW)r*rXr2ú sha1,sha256N)rrZrÚ assertFalseÚ needs_updater )r Zhandler1r]Zhandler2Zhandler3r r rÚtest_94_needs_update_algs�s   z$scram_test.test_94_needs_update_algscCsŒ|j}ddlm}|dgdd�}| d¡}| | |¡ddg¡| | |¡¡|jd d�}| | |¡¡|jd d�}|  | |¡¡d S) z)test handling of 'algs' in context objectr)Ú CryptContextr9rW)Z scram__algsrXr4r3r2r`N) rZpasslib.contextrdrr8rNrarbÚcopyr )r rrdZc1rIZc2r r rÚtest_95_context_algs¡s    zscram_test.test_95_context_algscs¬‡fdd„}‡fdd„}d}ˆ |d|ƒ¡ˆ |d|ƒ¡d}ˆ t|d|¡d }ˆ t|d|¡d }ˆ |d|ƒ¡ˆ |d|ƒ¡ˆ t|d|¡ˆ t|d|¡d S) ztest verify(full=True) flagcsˆj ||¡S)N©rr ©rJrIr r rÚvpart³sz-scram_test.test_96_full_verify..vpartcsˆjj||dd�S)NT)Zfullrgrhr r rÚvfullµsz-scram_test.test_96_full_verify..vfullr rZtapezÐ$scram$4096$QSXCR.Q6sek8bf92$sha-1=HZbuOlKbWl.eR8AfIposuKbhX30,sha-256=qXUXrlcvnaxxWG00DdRgVioR2gnUpuX5r.3EZ1rdhV,sha-512=lzgniLFcvglRLS0gt.C4gy.NurS3OIOVRAU1zZOV4P.qFiVFO2/edGQSu/kD1LwdX0SNV/KsPdHSwEl5qRTuZQzÒ$scram$4096$QSXCR.Q6sek8bf92$sha-1=HZbuOlKbWl.eR8AfIposuKbhX30,sha-256=qXUXrlcvnaxxWG00DdRgVioR2gnUpuX5r.3EZ1rdhVYa,sha-512=lzgniLFcvglRLS0gt.C4gy.NurS3OIOVRAU1zZOV4P.qFiVFO2/edGQSu/kD1LwdX0SNV/KsPdHSwEl5qRTuZQzÑ$scram$4096$QSXCR.Q6sek8bf92$sha-1=HZbuOlKbWl.eR8AfIposuKbhX30,sha-256=R7RJDWIbeKRTFwhE9oxh04kab0CllrQ3kCcpZUcligc,sha-512=lzgniLFcvglRLS0gt.C4gy.NurS3OIOVRAU1zZOV4P.qFiVFO2/edGQSu/kD1LwdX0SNV/KsPdHSwEl5qRTuZQN)r rar;r=)r rirjrIr r rÚtest_96_full_verify±s  zscram_test.test_96_full_verify)r:)rrrrr9rrrrr#r?rBrLrOrTrVr^r_rcrfrkÚ __classcell__r r r&rr³s(   è#   r)Ú__doc__ZloggingZ getLoggerrÚlogr$ZpasslibrZpasslib.utils.compatrZpasslib.tests.utilsrrZpasslib.tests.test_handlersrrrrrrrrrrr r r rÚs