+
    idI                     8   R t ^ RIt]P                  ! ]4      t^ RIt^ RIHt ^ RIH	t	 ^ RI
HtHt ^ RIHt  ! R R]4      t ! R R	]4      t ! R
 R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      tR# )z?passlib.tests.test_handlers - tests for passlib hash algorithmsN)hash)u)TestCaseHandlerCase)	UPASS_WAVc                   &   a  ] tR t^t o R tRtV tR# )ldap_pbkdf2_testc                    V P                  \        P                  P                  RR4      4       V P                  \        P                  P                  RR4      4       V P                  \        P
                  P                  RR4      4       R# )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   &`/var/www/html/photoedit/myenv/lib/python3.14/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____classdictcell__)__classdict__s   @r   r   r      s     
 
r   r   c                   @    ] tR t^6t]P
                  tR]R3.tR.t	Rt
R# )atlassian_pbkdf2_sha1_testzI{PKCS5S2}cE9Yq6Am5tQGdHSHhky2XLeOnURwzaLBG2sur7FHKpvy2u0qDn6GcVGRjlmJoIUyz{PKCS5S2}c4xaeTQM0lUieMS3V5voiexyX9XhqC2dBd5ecVy!0IPksHChwoTAVYFrhsgoq8/p{PKCS5S2}c4xaeTQM0lUieMS3V5voiexyX9XhqC2dBd5ecVy60IPksHChwoTAVYFrhsgoq8/{PKCS5S2}c4xaeTQM0lUieMS3V5voiexyX9XhqC2dBd5ecVy60IPksHChwoTAVYFrhsgoq8/=r   N)adminzI{PKCS5S2}c4xaeTQM0lUieMS3V5voiexyX9XhqC2dBd5ecVy60IPksHChwoTAVYFrhsgoq8/p)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                   B    ] tR t^Mt]P
                  tR]R3.t. ROt	Rt
R# )pbkdf2_sha1_testz?$pbkdf2$1212$THDqatpidANpadlLeTeOEg$HV3oi1k5C5LQCgG1BMOL.BX4YZcr   N)r
   z?$pbkdf2$1212$OB.dtnSEXZK8U5cgxU/GYQ$y5LKPOplRmok7CZp/aqVDVg8zGI)z@$pbkdf2$01212$THDqatpidANpadlLeTeOEg$HV3oi1k5C5LQCgG1BMOL.BX4YZcz;$pbkdf2$$THDqatpidANpadlLeTeOEg$HV3oi1k5C5LQCgG1BMOL.BX4YZcz@$pbkdf2$1212$THDqatpidANpadlLeTeOEg$HV3oi1k5C5LQCgG1BMOL.BX4YZc$)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                   :    ] tR t^`t]P
                  tR]R3.tRt	R# )pbkdf2_sha256_testzV$pbkdf2-sha256$1212$3SABFJGDtyhrQMVt1uABPw$WyaUoqCLgvz97s523nF4iuOqZNbp5Nt8do/cuaa7AiIr   N)r
   zV$pbkdf2-sha256$1212$4vjV83LKPjQzk31VI4E0Vw$hsYF68OiOUPdDZ1Fg.fJPeq1h/gXXY7acBp9/6c.tmQ)
r   r   r   r   r   pbkdf2_sha256r"   r   r#   r   r   r   r   r)   r)   `   s'      G	 
d		r   r)   c                   :    ] tR t^kt]P
                  tR]R3.tRt	R# )pbkdf2_sha512_testz$pbkdf2-sha512$1212$KkbvoKGsAIcF8IslDR6skQ$8be/PRmd88Ps8fmPowCJttH9G3vgxpG.Krjt3KT.NP6cKJ0V4Prarqf.HBwz0dCkJ6xgWnSj2ynXSV7MlvMa8Qr   N)r
   z$pbkdf2-sha512$1212$RHY0Fr3IDMSVO/RSZyb5ow$eNLfBK.eVozomMr.1gYa17k9B7KIK25NOEshvhrSX.esqY3s.FvWZViXz4KoLlQI.BzY/YTNJOiKc5gBYFYGww)
r   r   r   r   r   pbkdf2_sha512r"   r   r#   r   r   r   r   r,   r,   k   s*      G	 
P		r   r,   c                   L    ] tR t^xt]P
                  t]! R4      R3R]R3.t	Rt
R# )cta_pbkdf2_sha1_testu   hashy the ☃z4$p5k2$1000$ZxK4ZBJCfQg=$jJZVscWtO--p1-xIZl6jhO2LKR0=z4$p5k2$4321$OTg3NjU0MzIx$jINJrSvZ3LXeIbUdrJkRpN62_WQ=r   N)r
   z%$p5k2$1$$h1TDLGSw9ST8UMAPeIE13i0t12c=)r   r   r   r   r   cta_pbkdf2_sha1r"   r   r   r#   r   r   r   r   r/   r/   x   s7    ""G
 
"	#%[\
 	>	B	D
r   r/   c                   @    ] tR t^t]P
                  tRRRR]R3.tRt	R# )dlitz_pbkdf2_sha1_testz0$p5k2$$KosHgqNo$9mjN8gqjt02hDoP0c2J0ABtLIwtot8cQr   N)cloadmz,$p5k2$$exec$r1EWMCMk7Rlv3L/RNcFXviDefYa0hlql)gnuz1$p5k2$c$u9HvcT4d$Sd1gwSVCLZYAuqZ25piRnbBEoAesaa/g)dclz1$p5k2$d$tUsch7fU$nqDkaxMDOFBeJsTSfABsyn.PYUXilHwL)spamz3$p5k2$3e8$H0NX9mT/$wk/sE8vv6OMKuMaqazCJYDSUhWY9YB2J)
r   r   r   r   r   dlitz_pbkdf2_sha1r"   r   r#   r   r   r   r   r2   r2      s0    $$G
 	DHHJ	F	H

r   r2   c                   :    ] tR t^t]P
                  t]R3R.tRt	R# )grub_pbkdf2_sha512_testzgrub.pbkdf2.sha512.10000.BCAC1CEC5E4341C8C511C5297FA877BE91C2817B32A35A3ECF5CA6B8B257F751.6968526A2A5B1AEEE0A29A9E057336B48D388FFB3F600233237223C2104DE1752CEC35B0DD1ED49563398A282C0F471099C2803FBA47C7919CABC43192C68F60r   N)toomanysecretsa  grub.pbkdf2.sha512.10000.9B436BB6978682363D5C449BBEAB322676946C632208BC1294D51F47174A9A3B04A7E4785986CD4EA7470FAB8FE9F6BD522D1FC6C51109A8596FB7AD487C4493.0FE5EF169AFFCB67D86E2581B1E251D88C777B98BA2D3256ECC9F765D84956FC5CA5C4B6FD711AA285F0A04DCF4634083F9A20F4B6F339A52FBD6BED618E527B)
r   r   r   r   r   grub_pbkdf2_sha512r"   r   r#   r   r   r   r   r9   r9      s)    %%G 
%	&	5
r   r9   c                      a a ] tR t^t o]P
                  tRR]! R4      R3]! R4      R3]! R4      R3.t. ROt	V 3R lt
R tR tR tR	 tR
 tR tRR ltR tR tR tR tRtVtV ;t# )
scram_testu   IX àz>$scram$6400$0BojBCBE6P2/N4bQ$sha-1=YniLes.b8WFMvBhtSACZyyvxeCcu	   Ⅸ　àu   ­IX àc                z   < \         \        V `  4        V P                  4        \        P
                  ! R R4       R# )ignorez norm_hash_name\(\): unknown hashN)superr=   setUprequire_stringprepwarningsfilterwarnings)r   	__class__s   &r   rA   scram_test.setUp   s1    j$%' 	! 	*MNr   c                .  a a \        RRR7      oVV 3R lpS P                  V! RRR7      \        P                  P                  4       S P                  \        VR4       S P                  V! R4      R.4       S P                  V! R	4      . RO4       S P                  V! RR.4      RR
.4       S P                  \        VR
.4       S P                  \        V. RR7       S P                  \        VRR.4       S P                  \        VR.RR/R7       R# )ztest parsing of 'algs' setting  )saltroundsc                    < S F  pVP                  VSV,          4       K  	  SP                  ! RR V /VB P                  # )algsr   )
setdefaultr"   rL   )rL   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sha-256sha256)rL   rS   z
shaxxx-190)checksums
   AAAAAAAAAA)md5rU   rV   s                       )	dictassertEqualr   scramdefault_algsassertRaises	TypeError
ValueErrorRuntimeError)r   rQ   rP   s   f @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           	         V P                  \        V P                  RR\        R4      ^,          /R7       V P                  \        V P                  RRR/R7       R# )z+test internal parsing of 'checksum' keywordTrU   X)rS   rX   rV   Ns    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX)r^   r_   r"   r   r`   r   s   &r   test_90_checksumsscram_test.test_90_checksums  sX     	)T\\$+afRi#8 	 	: 	*dll$-#8 	 	:r   c                   V P                   P                  pRpRpV P                  V! VR4      V^
R34       V P                  V! VR4      V^
R34       V P                  V! VR4      V^
R34       V P                  \        WR4       R	pV P                  \
        WR
4       V P                  \
        WR4       V P                  \
        WR4       R# )z test scram.extract_digest_info()z'$scram$10$AAAAAA$sha-1=AQ,bbb=Ag,ccc=AwSHA1   bbb   ccc   dddz$scram$10$....$sha-1,bbb,cccrU   Ns       )r"   extract_digest_infor[   r^   KeyErrorr`   )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                    V P                   P                  pV P                  V! R4      R.4       V P                  V! RRR7      R.4       V P                  V! R4      . RO4       R# )	z test scram.extract_digest_algs()>$scram$4096$QSXCR.Q6sek8bf92$sha-1=HZbuOlKbWl.eR8AfIposuKbhX30rU   hashlib)formatrT   $scram$4096$QSXCR.Q6sek8bf92$sha-1=HZbuOlKbWl.eR8AfIposuKbhX30,sha-256=qXUXrlcvnaxxWG00DdRgVioR2gnUpuX5r.3EZ1rdhVY,sha-512=lzgniLFcvglRLS0gt.C4gy.NurS3OIOVRAU1zZOV4P.qFiVFO2/edGQSu/kD1LwdX0SNV/KsPdHSwEl5qRTuZQN)rU   rV   zsha-512)r"   extract_digest_algsr[   )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                :   V P                   P                  pRpRpV P                  V! \        R4      VRR4      V4       V P                  V! RVRR4      V4       V P                  V! \        R4      VRR	4      V4       V P                  V! R
VRR4      V4       V P                  V! RVRR4      R4       V P	                  \
        VRVRR4       V P	                  \
        VRV^ R4       V P                  V! \        R4      VP                  R4      RR	4      V4       R# )ztest scram.derive_digest()s   s   [tNuPnIZZn   ⅨrH   rU   s   ⅨzSHA-1IXrT   s   IXri   rY   s   3/Modzsha-666zlatin-1N)r"   derive_digestr[   r   r^   r`   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                h   V P                  \        R4      4      pV P                  V P                  \        R4      V4      4       V P                  V P                  \        R4      V4      4       V P                  \        R4      4      pV P                  V P                  \        R4      V4      4       V P                  V P                  \        R4      V4      4       V P	                  \
        V P                   \        R4      4       V P	                  \
        V P                  \        R4      V4       R# )	ztest hash/verify use saslprepu   I­Xr   r      óu   óu   ‍óu   ﷐N)
do_encryptr   r   	do_verifyr^   r`   )r   rs   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                L   V P                   p\        VP                  4      pVP                  ! R/ VR/B pV P	                  VP                  V4       V P	                  VP                  RR.4       VP                  R4      pV P	                  VP                  V4      RR.4       R# )z#using() -- 'default_algs' parametersha1,md5rY   rU   dummyNr   )r"   listr]   usingr[   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                *    V P                  RR7       R# )zusing() -- 'algs' parameterrL   )r   N)r   r   s   &r   test_94_using_w_algsscram_test.test_94_using_w_algs  s    )))7r   c                h   V P                   P                  RR7      pVP                  R4      pV P                  VP	                  V4      4       VP                  RR7      pV P                  VP	                  V4      4       VP                  RR7      pV P                  VP	                  V4      4       R# )zneeds_update() -- algs settingr   )rL   r   rT   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                   V P                   p^ RIHp V! R.RR7      pVP                  R4      pV P	                  VP                  V4      RR.4       V P                  VP                  V4      4       VP                  RR7      pV P                  VP                  V4      4       VP                  R	R7      pV P                  VP                  V4      4       R
# )z)test handling of 'algs' in context object)CryptContextr\   r   )scram__algsr   rY   rU   rT   r   N)
r"   passlib.contextr   r   r[   r}   r   r   copyr   )r   r"   r   c1rs   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                  a  V 3R lpV 3R lpRpS P                  V! RV4      4       S P                  V! RV4      4       RpS P                  \        VRV4       RpS P                  \        VRV4       RpS P                  V! RV4      4       S P                  V! RV4      4       S P                  \        VRV4       S P                  \        VRV4       R	# )
ztest verify(full=True) flagc                 :   < SP                   P                  W4      # )Nr"   r   rt   rs   r   s   &&r   vpart-scram_test.test_96_full_verify.<locals>.vpart  s    <<&&q,,r   c                 >   < SP                   P                  WR R7      # )T)fullr   r   s   &&r   vfull-scram_test.test_96_full_verify.<locals>.vfull  s    <<&&q$&77r   r|   pencil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   r^   r`   )r   r   r   rs   s   f   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   )r   ry   )r   r|   )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.eR8AfIposuKbhX30)r]   )r   r   r   r   r   r\   r"   r   r#   r$   rA   rb   rf   rv   r   r   r   r   r   r   r   r   r   r   __classcell__)rE   r   s   @@r   r=   r=      s     jjG	8	> 
9 $G 	H	
 	! $G 	H	
?	 $G 	H18!FO:<:5$9$P2F(L"83", +8 +8r   r=   )__doc__logging	getLoggerr   logrC   passlibr   passlib.utils.compatr   passlib.tests.utilsr   r   passlib.tests.test_handlersr   r   r   r&   r)   r,   r/   r2   r9   r=   r   r   r   <module>r      s    E
 !   " 5 1
x 
> .{ &	 	 
; 
 
[ 

k 
:i8 i8r   