
    gdI                     6   S r SSKr\R                  " \5      rSSKrSSKJr  SSKJ	r	  SSK
JrJr  SSKJr   " S S\5      r " S	 S
\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      rg)z?passlib.tests.test_handlers - tests for passlib hash algorithms    N)hash)u)TestCaseHandlerCase)	UPASS_WAVc                       \ rS rSrS rSrg)ldap_pbkdf2_test   c                    U R                  [        R                  R                  SS5      5        U R                  [        R                  R                  SS5      5        U R                  [        R
                  R                  SS5      5        g)ztest 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)
assertTruer   ldap_pbkdf2_sha1verifyldap_pbkdf2_sha256ldap_pbkdf2_sha512selfs    [/home/matz/Project1/venv/lib/python3.13/site-packages/passlib/tests/test_handlers_pbkdf2.pytest_wrappersldap_pbkdf2_test.test_wrappers   s     	!!((Q	
 	##**-	
 	##**T	
     N)__name__
__module____qualname____firstlineno__r   __static_attributes__r   r   r   r	   r	      s    
r   r	   c                   >    \ rS rSr\R
                  rS\S4/rS/r	Sr
g)atlassian_pbkdf2_sha1_test6   )adminzI{PKCS5S2}c4xaeTQM0lUieMS3V5voiexyX9XhqC2dBd5ecVy60IPksHChwoTAVYFrhsgoq8/pzI{PKCS5S2}cE9Yq6Am5tQGdHSHhky2XLeOnURwzaLBG2sur7FHKpvy2u0qDn6GcVGRjlmJoIUyz{PKCS5S2}c4xaeTQM0lUieMS3V5voiexyX9XhqC2dBd5ecVy!0IPksHChwoTAVYFrhsgoq8/p{PKCS5S2}c4xaeTQM0lUieMS3V5voiexyX9XhqC2dBd5ecVy60IPksHChwoTAVYFrhsgoq8/{PKCS5S2}c4xaeTQM0lUieMS3V5voiexyX9XhqC2dBd5ecVy60IPksHChwoTAVYFrhsgoq8/=r   N)r   r   r   r   r   atlassian_pbkdf2_sha1handlerr   known_correct_hashesknown_malformed_hashesr   r   r   r   r   r   6   s5    ((G 	_	]	_	T	r   r   c                   @    \ rS rSr\R
                  rS\S4/r/ SQr	Sr
g)pbkdf2_sha1_testM   )r   z?$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$r   N)r   r   r   r   r   pbkdf2_sha1r#   r   r$   r%   r   r   r   r   r'   r'   M   s,    GW	M	O	r   r'   c                   8    \ rS rSr\R
                  rS\S4/rSr	g)pbkdf2_sha256_test`   )r   zV$pbkdf2-sha256$1212$4vjV83LKPjQzk31VI4E0Vw$hsYF68OiOUPdDZ1Fg.fJPeq1h/gXXY7acBp9/6c.tmQzV$pbkdf2-sha256$1212$3SABFJGDtyhrQMVt1uABPw$WyaUoqCLgvz97s523nF4iuOqZNbp5Nt8do/cuaa7AiIr   N)
r   r   r   r   r   pbkdf2_sha256r#   r   r$   r   r   r   r   r+   r+   `   s'      G	 
d		r   r+   c                   8    \ rS rSr\R
                  rS\S4/rSr	g)pbkdf2_sha512_testk   )r   z$pbkdf2-sha512$1212$RHY0Fr3IDMSVO/RSZyb5ow$eNLfBK.eVozomMr.1gYa17k9B7KIK25NOEshvhrSX.esqY3s.FvWZViXz4KoLlQI.BzY/YTNJOiKc5gBYFYGwwz$pbkdf2-sha512$1212$KkbvoKGsAIcF8IslDR6skQ$8be/PRmd88Ps8fmPowCJttH9G3vgxpG.Krjt3KT.NP6cKJ0V4Prarqf.HBwz0dCkJ6xgWnSj2ynXSV7MlvMa8Qr   N)
r   r   r   r   r   pbkdf2_sha512r#   r   r$   r   r   r   r   r/   r/   k   s*      G	 
P		r   r/   c                   J    \ rS rSr\R
                  r\" S5      S4S\S4/r	Sr
g)cta_pbkdf2_sha1_testx   u   hashy the ☃z4$p5k2$1000$ZxK4ZBJCfQg=$jJZVscWtO--p1-xIZl6jhO2LKR0=)r   z%$p5k2$1$$h1TDLGSw9ST8UMAPeIE13i0t12c=z4$p5k2$4321$OTg3NjU0MzIx$jINJrSvZ3LXeIbUdrJkRpN62_WQ=r   N)r   r   r   r   r   cta_pbkdf2_sha1r#   r   r   r$   r   r   r   r   r3   r3   x   s7    ""G
 
"	#%[\
 	>	B	D
r   r3   c                   >    \ rS rSr\R
                  rSSSS\S4/rSr	g)	dlitz_pbkdf2_sha1_test   )cloadmz,$p5k2$$exec$r1EWMCMk7Rlv3L/RNcFXviDefYa0hlql)gnuz1$p5k2$c$u9HvcT4d$Sd1gwSVCLZYAuqZ25piRnbBEoAesaa/g)dclz1$p5k2$d$tUsch7fU$nqDkaxMDOFBeJsTSfABsyn.PYUXilHwL)spamz3$p5k2$3e8$H0NX9mT/$wk/sE8vv6OMKuMaqazCJYDSUhWY9YB2Jz0$p5k2$$KosHgqNo$9mjN8gqjt02hDoP0c2J0ABtLIwtot8cQr   N)
r   r   r   r   r   dlitz_pbkdf2_sha1r#   r   r$   r   r   r   r   r7   r7      s0    $$G
 	DHHJ	F	H

r   r7   c                   8    \ rS rSr\R
                  r\S4S/rSr	g)grub_pbkdf2_sha512_test   zgrub.pbkdf2.sha512.10000.BCAC1CEC5E4341C8C511C5297FA877BE91C2817B32A35A3ECF5CA6B8B257F751.6968526A2A5B1AEEE0A29A9E057336B48D388FFB3F600233237223C2104DE1752CEC35B0DD1ED49563398A282C0F471099C2803FBA47C7919CABC43192C68F60)toomanysecretsa  grub.pbkdf2.sha512.10000.9B436BB6978682363D5C449BBEAB322676946C632208BC1294D51F47174A9A3B04A7E4785986CD4EA7470FAB8FE9F6BD522D1FC6C51109A8596FB7AD487C4493.0FE5EF169AFFCB67D86E2581B1E251D88C777B98BA2D3256ECC9F765D84956FC5CA5C4B6FD711AA285F0A04DCF4634083F9A20F4B6F339A52FBD6BED618E527Br   N)
r   r   r   r   r   grub_pbkdf2_sha512r#   r   r$   r   r   r   r   r?   r?      s)    %%G 
%	&	5
r   r?   c                      ^  \ rS rSr\R
                  rSS\" S5      S4\" S5      S4\" S5      S4/r/ SQr	U 4S	 jr
S
 rS rS rS rS rS rSS jrS rS rS rS rSrU =r$ )
scram_test   )pencil>$scram$4096$QSXCR.Q6sek8bf92$sha-1=HZbuOlKbWl.eR8AfIposuKbhX30)rF   $scram$4096$QSXCR.Q6sek8bf92$sha-1=HZbuOlKbWl.eR8AfIposuKbhX30,sha-256=qXUXrlcvnaxxWG00DdRgVioR2gnUpuX5r.3EZ1rdhVY,sha-512=lzgniLFcvglRLS0gt.C4gy.NurS3OIOVRAU1zZOV4P.qFiVFO2/edGQSu/kD1LwdX0SNV/KsPdHSwEl5qRTuZQu   IX à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.eR8AfIposuKbhX30c                 x   > [         [        U ]  5         U R                  5         [        R
                  " SS5        g )Nignorez norm_hash_name\(\): unknown hash)superrD   setUprequire_stringprepwarningsfilterwarnings)r   	__class__s    r   rL   scram_test.setUp   s1    j$%' 	! 	*MNr   c                   ^ ^ [        SSS9mUU 4S jnT R                  U" SSS9[        R                  R                  5        T R                  [        US5        T R                  U" S5      S	/5        T R                  U" S
5      / SQ5        T R                  U" S	S/5      S	S/5        T R                  [        US/5        T R                  [        U/ SS9  T R                  [        US	S/5        T R                  [        US	/S	S0S9  g)ztest parsing of 'algs' settings
   AAAAAAAAAA  )saltroundsc                 |   > T H  nUR                  UTU   5        M     TR                  " SSU 0UD6R                  $ )Nalgsr   )
setdefaultr#   rW   )rW   kwdskdefaultsr   s      r   parse&scram_test.test_90_algs.<locals>.parse  s<    8A;/ <<2T2T2777r   NT)use_defaultssha1sha-1zsha1, sha256, md5)md5r`   sha-256sha256rb   )rW   r^   z
shaxxx-190s                       )checksum)	dictassertEqualr   scramdefault_algsassertRaises	TypeError
ValueErrorRuntimeError)r   r\   r[   s   ` @r   test_90_algsscram_test.test_90_algs   s   WT2	8 	t$79P9PQ)UD1 	v	2235NO 	12WY4GH 	*ei[9*e"4H 	*egl-CD 	,y$+Z#8 	 	:r   c           	          U R                  [        U R                  SS[        S5      S-  0S9  U R                  [        U R                  SSS0S9  g)	z+test internal parsing of 'checksum' keywordTr`   X   )r^   rd   rb   s    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXN)ri   rj   r#   r   rk   r   s    r   test_90_checksumsscram_test.test_90_checksums  sX     	)T\\$+afRi#8 	 	: 	*dll$-#8 	 	:r   c                    U R                   R                  nSnSnU R                  U" US5      USS45        U R                  U" US5      USS45        U R                  U" US5      USS	45        U R                  [        XS
5        SnU R                  [
        XS5        U R                  [
        XS5        U R                  [
        XS
5        g)z test scram.extract_digest_info()z'$scram$10$AAAAAA$sha-1=AQ,bbb=Ag,ccc=Aws       SHA1
      bbb   ccc   dddz$scram$10$....$sha-1,bbb,cccr`   N)r#   extract_digest_inforf   ri   KeyErrorrk   )r   edihscs        r   test_91_extract_digest_info&scram_test.test_91_extract_digest_info*  s    ll.. 6Qv2w8Qu"g7Qu"g7(CE2 +*cg6*ce4*ce4r   c                     U R                   R                  nU R                  U" S5      S/5        U R                  U" SSS9S/5        U R                  U" S5      / SQ5        g)	z test scram.extract_digest_algs()rG   r`   hashlib)formatr_   rH   )r`   rb   zsha-512N)r#   extract_digest_algsrf   )r   edas     r   test_92_extract_digest_algs&scram_test.test_92_extract_digest_algs<  sw    ll.. 7 8:A	D 	 7?HJ 	# 	 = >
 8	9r   c                 8   U R                   R                  nSnSnU R                  U" [        S5      USS5      U5        U R                  U" SUSS5      U5        U R                  U" [        S5      USS	5      U5        U R                  U" S
USS5      U5        U R                  U" SUSS5      S5        U R	                  [
        USUSS5        U R	                  [
        USUSS5        U R                  U" [        S5      UR                  S5      SS	5      U5        g)ztest scram.derive_digest()s   s   [tNuPnIZZn   ⅨrS   r`   s   ⅨzSHA-1IXr_   s   IXru   ra   s   3/Modzsha-666r   zlatin-1N)r#   derive_digestrf   r   ri   rk   decode)r   r   s1d1s       r   test_93_derive_digest scram_test.test_93_derive_digestN  s    ||)) Bak2tW=rBor4A2Fagr48"=eRv6; 	dBe4M	O*dD"dIF 	*dD"aA 	agryy';T6JBOr   c                 f   U R                  [        S5      5      nU R                  U R                  [        S5      U5      5        U R                  U R                  [        S5      U5      5        U R                  [        S5      5      nU R                  U R                  [        S5      U5      5        U R                  U R                  [        S5      U5      5        U R	                  [
        U R                   [        S5      5        U R	                  [
        U R                  [        S5      U5        g)	ztest hash/verify use saslprepu   I­Xr   r      óu   óu   ‍óu   ﷐N)
do_encryptr   r   	do_verifyri   rk   )r   r   s     r   test_94_saslprepscram_test.test_94_saslprepg  s     OOAjM*qw23q{A67 OOAfI&q|Q78q'91=> 	*dooq{C*dnnak1Er   c                 J   U R                   n[        UR                  5      nUR                  " S0 US0D6nU R	                  UR                  U5        U R	                  UR                  SS/5        UR                  S5      nU R	                  UR                  U5      SS/5        g)z#using() -- 'default_algs' parametersha1,md5ra   r`   dummyNr   )r#   listrh   usingrf   r   r   )r   paramr#   origsubclsh1s         r   test_94_using_w_default_algs'scram_test.test_94_using_w_default_algs{  s     ,,G(()5%!45 	--t4 	,,ug.>? [[!44R85':JKr   c                 "    U R                  SS9  g)zusing() -- 'algs' parameterrW   )r   N)r   r   s    r   test_94_using_w_algsscram_test.test_94_using_w_algs  s    )))7r   c                 T   U R                   R                  SS9nUR                  S5      nU R                  UR	                  U5      5        UR                  SS9nU R                  UR	                  U5      5        UR                  SS9nU R                  UR	                  U5      5        g)zneeds_update() -- algs settingr   )rW   r   r_   sha1,sha256N)r#   r   r   assertFalseneeds_updater   )r   handler1r   handler2handler3s        r   test_94_needs_update_algs$scram_test.test_94_needs_update_algs  s    <<%%:%6 ]]7#..r23 >>v>...r23 >>}>5--b12r   c                    U R                   nSSKJn  U" S/SS9nUR                  S5      nU R	                  UR                  U5      SS/5        U R                  UR                  U5      5        UR                  S	S9nU R                  UR                  U5      5        UR                  S
S9nU R                  UR                  U5      5        g)z)test handling of 'algs' in context objectr   )CryptContextrg   r   )scram__algsr   ra   r`   r_   r   N)
r#   passlib.contextr   r   rf   r   r   r   copyr   )r   r#   r   c1r   c2s         r   test_95_context_algsscram_test.test_95_context_algs  s    ,,07)<GGG44Q7%9IJ+,WWW(+,WWW/*+r   c                   ^  U 4S jnU 4S jnSnT R                  U" SU5      5        T R                  U" SU5      5        SnT R                  [        USU5        SnT R                  [        USU5        SnT R                  U" SU5      5        T R                  U" SU5      5        T R                  [        USU5        T R                  [        USU5        g	)
ztest verify(full=True) flagc                 :   > TR                   R                  X5      $ )Nr#   r   r   r   r   s     r   vpart-scram_test.test_96_full_verify.<locals>.vpart  s    <<&&q,,r   c                 8   > TR                   R                  XSS9$ )NT)fullr   r   s     r   vfull-scram_test.test_96_full_verify.<locals>.vfull  s    <<&&q$&77r   rH   rF   tapez$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   r   ri   rk   )r   r   r   r   s   `   r   test_96_full_verifyscram_test.test_96_full_verify  s    	-	86
 	h*+vq)*6
 	*eXq96
 	*eXq9
6
 	fa()x+,*eXq9*eVQ7r   r   )rh   )r   r   r   r   r   rg   r#   r   r$   r%   rL   rm   rr   r   r   r   r   r   r   r   r   r   r   __classcell__)rP   s   @r   rD   rD      s    jjG	8	> 
9 $G 	H	
 	! $G 	H	
?	 $G 	H18!FO:<:5$9$P2F(L"83", +8 +8r   rD   )__doc__logging	getLoggerr   logrN   passlibr   passlib.utils.compatr   passlib.tests.utilsr   r   passlib.tests.test_handlersr   r	   r   r'   r+   r/   r3   r7   r?   rD   r   r   r   <module>r      s    E
 !   " 5 1
x 
> .{ &	 	 
; 
 
[ 

k 
:i8 i8r   