a fŸWc¡/ã@stdZddlmZddlZddlZddlmZmZddlm Z m Z Gdd„de ƒZ Gdd „d e ƒZ Gd d „d e ƒZ dS) a­ passlib.tests -- tests for passlib.utils.pbkdf2 .. warning:: This module & it's functions have been deprecated, and superceded by the functions in passlib.crypto. This file is being maintained until the deprecated functions are removed, and is only present prevent historical regressions up to that point. New and more thorough testing is being done by the replacement tests in ``test_utils_crypto.py``. é)Úwith_statementN)ÚuÚJYTHON)ÚTestCaseÚhbcs<eZdZdZdZddgZgd¢Z‡fdd„Zdd „Z‡Z S) Ú UtilsTestztest various utils functionszpasslib.utils.pbkdf2ÚhashlibZiana))Úmd5r zSCRAM-MD5-PLUSzMD-5)Úsha1zsha-1z SCRAM-SHA-1ZSHA1)Zsha256zsha-256ZSHA_256zsha2-256)Z ripemd160z ripemd-160zSCRAM-RIPEMD-160Z RIPEmd160Zripemdz SCRAM-RIPEMD)Ztest128ztest-128ZTEST128)Útest2r zTEST-2)Z test3_128z test3-128z TEST-3-128cs tt|ƒ ¡t ddt¡dS©NÚignorez".*passlib.utils.pbkdf2.*deprecated)ÚsuperrÚsetUpÚwarningsÚfilterwarningsÚDeprecationWarning©Úself©Ú __class__©úC/usr/lib/python3.9/site-packages/passlib/tests/test_utils_pbkdf2.pyr/szUtilsTest.setUpc Csddlm}ddlm}ddlm}|jD]}|d|ƒq*| t|dd¡| t|dd¡|  |t dƒƒd¡|  |d ƒd¡| t |d¡t   ¡�tt  d d ¡|||jƒD]J}t|jƒD]:\}}||}|D]$}|||ƒ} |  | |d ||f¡qÐq¼q®Wdƒn1�s0YdS) znorm_hash_name()r)Úchain)Únorm_hash_name)Ú_known_hash_namesÚmd4NZfakeZMD4sMD4r z.*unknown hashzname=%r, format=%r:)Ú itertoolsrÚpasslib.utils.pbkdf2rZpasslib.crypto.digestrÚ ndn_formatsÚ assertRaisesÚ ValueErrorÚ assertEqualrÚ TypeErrorrÚcatch_warningsrÚ ndn_valuesÚ enumerate) rrrrÚformatÚrowÚidxÚcorrectÚvalueÚresultrrrÚtest_norm_hash_name3s,        ÿÿzUtilsTest.test_norm_hash_name) Ú__name__Ú __module__Ú __qualname__Ú__doc__ÚdescriptionPrefixrr%rr-Ú __classcell__rrrrrs  rc sÈeZdZdZdZdedƒdddedƒfd dd dd d ed ƒfdd ddd edƒfdd ddd edƒfdd ddd edƒfdd dddedƒfgZes¤e dd dddedƒf¡‡fdd„Z dd„Z dd„Z ‡Z S)Ú Pbkdf1_Testztest kdf helperszpasslib.utils.pbkdf2.pbkdf1()ópasswordZ78578E5A5D63CB06éèér Z dc19847e05c64d2faf10ebfb4a3d2a20)r5ósaltr6rr ór8ér Z84éZ8475c6a8531a5d27Z 8475c6a8531a5d27e386cd496457812cNZ(4a8fd48e426ed081b535be5769892fa396293efbrZ f7f2e91100a8f96190f2dd177cb26453cs tt|ƒ ¡t ddt¡dSr )rr4rrrrrrrrrnszPbkdf1_Test.setUpc CsDddlm}|jD],\}}}}}}||||||ƒ}| ||¡qdS)útest reference vectorsr©Úpbkdf1N)rr>Ú pbkdf1_testsr") rr>ÚsecretÚsaltÚroundsÚkeylenÚdigestr*r,rrrÚ test_knownrs zPbkdf1_Test.test_knowncs¦ddlm‰d‡fdd„ }|ƒ|jt|dd �|jt|dd �|jt|d d �|jt|dd �|jt|dd �|jt|dd�|jt|ddd�|jt|dd�dS)útest border casesrr=ósecretr8r:r csˆ|||||ƒS©Nr)r@rArBrCÚhashr=rrÚhelper|sz'Pbkdf1_Test.test_border..helper©r@©rAÚmissing)rI©rBÚ1éÿÿÿÿ©rCé)rCrIN)rGr8r:r:r )rr>r r#r!©rrJrr=rÚ test_borderys zPbkdf1_Test.test_border) r.r/r0r1r2rr?rÚappendrrErTr3rrrrr4Ss"ðÿ r4csBeZdZdZdZedƒddddfedƒddd dfed ƒddd d fed ƒddd d fedƒdddd fedƒddd d fedƒddd d fedƒddddfedƒddd dfedƒddddfedƒdddd fed!ƒd"d#ddfed$ƒd%ed&ƒd'd(d)fed*ƒd+dd,dd-fed.ƒd+dd,d/d-fgZ‡fd0d1„Zd2d3„Zd4d5„Z d6d7„Z d8d9„Z ‡Z S):Ú Pbkdf2_Testztest pbkdf2() supportzpasslib.utils.pbkdf2.pbkdf2()Z cdedb5281bb2f801565a1122b2563515r5sATHENA.MIT.EDUraeburnr:r7Z 01dbee7f4a9e243e988b62c73cda935déZ@01dbee7f4a9e243e988b62c73cda935da05378b93244ec8f48a99e61ad799d86é Z@5c08eb61fdf71e4e4ec3cf6ba1f5512ba7e52ddbc5e5142f708a31e2e62b1e13i°Z@d1daa78615f287e6a1c8b120d7062a493f98d203e6be49a6adf4fa574b6e64ees4VxxV4éZ@139c30c0966bc32ba55fdbf212530ac9c5ec59f1a452f5cc9ad940fea0598ed1s@XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXspass phrase equals block sizeZ@9ccad6d468770cd51b10e6a68721be611a8b4d282601db3b36be9246915ec82asAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXspass phrase exceeds block sizeZ(0c60c80f961f0e71f3a9b524af6012062fe037a6r8éZ(ea6c014dc72d6f8ccd1ed92ace1d41f0d8de8957Z(4b007901b765489abead49d926f721d065a429c1iZ23d2eec4fe41c849b80c8d83662c0e44a8b291a964cf2f07038spasswordPASSWORDpasswords$saltSALTsaltSALTsaltSALTsaltSALTsaltéZ 56fa6aa75548099dcc37d7f03425e0c3s passwordssaltZ€887CFF169EA8335235D8004242AA7D6187A41E3187DF0CE14E256D85ED97A97357AAA8FF0A3871AB9EEFF458392F462F495487387F685B7472FC6C29E293F0A0shelloZ€9290F727ED06C38BA4549EF7DE25CF5642659211B7FC076F2D28FEFD71784BB8D8F6FB244A8CC5C06240631B97008565A120764C0EE9C2CB0073994D79080136i'é@z hmac-sha512Z e248fb6b13365146f8ac6307cc222812rGé ú hmac-sha1Z(e248fb6b13365146f8ac6307cc2228127872da6dNcs tt|ƒ ¡t ddt¡dSr )rrVrrrrrrrrr szPbkdf2_Test.setUpc Csfddlm}|jD]N}|dd…\}}}}}t|ƒdkr@|dnd}||||||ƒ} | | |¡qdS)r<r©Úpbkdf2NrYér^)rr`Úpbkdf2_test_vectorsÚlenr") rr`r(r*r@rArBrCÚprfr,rrrrE s   zPbkdf2_Test.test_knowncsîddlm‰d‡fdd „ }|ƒ|jt|d d �|jt|dd �|jt|d d �|jt|d d �|jt|dd �|dd �|jt|dd �|jt|d d �|jt|dd�|jt|dd�|jt|dd�|jt|dd�|jt|dd�dS)rFrr_r5r8r:Nr^csˆ|||||ƒSrHr©r@rArBrCrdr_rrrJsz'Pbkdf2_Test.test_border..helperrPrNÚxrQlíÿOrYrLrKzhmac-foo©rdZfoo)r5r8r:Nr^)rr`r r!r#Ú OverflowErrorÚNotImplementedErrorrSrr_rrTs   zPbkdf2_Test.test_bordercsJddlm‰d‡fdd „ }| t|dd �ƒd ¡| t|d d �ƒd ¡dS)ztest keylen==Nonerr_r5r8r:Nr^csˆ|||||ƒSrHrrer_rrrJ5sz/Pbkdf2_Test.test_default_keylen..helperrgrZz hmac-sha256rX)r5r8r:Nr^)rr`r"rcrSrr_rÚtest_default_keylen2s zPbkdf2_Test.test_default_keylenc Cs.ddlm}dd„}| t|dddd|¡d S) ztest custom prf functionrr_cSst ||d¡ ¡S)Nsfooey)rr rD)ÚkeyÚmsgrrrrd=sz(Pbkdf2_Test.test_custom_prf..prfrGr8r6rZN)rr`r ri)rr`rdrrrÚtest_custom_prf:s zPbkdf2_Test.test_custom_prf) r.r/r0r1r2rrbrrErTrjrmr3rrrrrV“sr þþþþþþþ þþþ üþ ø þ þ•r  rV)r1Z __future__rrrZpasslib.utils.compatrrZpasslib.tests.utilsrrrr4rVrrrrÚs 7@