Viewing File: /usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyo

ó
Ÿ;Xc@€s•dZddlmZddlZddlZddlmZddlZddlm	Z	m
Z
ddlmZm
Z
ddlmZmZmZddljjZddlmZmZdd	lmZeeƒZd
„Zdefd„ƒYZd
efd„ƒYZdefd„ƒYZ dej!fd„ƒYZ"dej#ej$fd„ƒYZ%edƒZ&defd„ƒYZ'defd„ƒYZ(dS(s>tests for passlib.hash -- (c) Assurance Technologies 2003-2009iÿÿÿÿ(twith_statementN(t	getLogger(tldap_md5tsha256_crypt(tMissingBackendErrortPasslibHashWarning(t
str_to_uasciit
uascii_to_strtunicode(tHandlerCasetTestCase(tuc€s"‡‡fd†‰tˆ|ƒƒS(s1generate all strings of given size using alphabetc3€s^|dkr%xKˆD]}|VqWn5x2ˆD]*}x!ˆ|dƒD]}||VqCWq,WdS(Nii((tsizetcharttail(talphabetthelper(sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyRs

(tset(RR((RRsE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyt	_makelangstSkeletonTestcB€szeZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z	d„Z
d	„Zd
„Zd„Z
d„ZRS(
stest hash support classesc€sAdtjf‡fd†ƒY‰|jˆjtdƒƒƒ|jˆjdƒƒ|jˆjtdƒƒƒ|jˆjtdƒƒƒ|jˆjdƒƒ|jˆjtdƒƒƒ|jˆjtdƒƒƒ|jˆjtdƒƒƒ|jtˆjd
ƒ|jtˆjd	ƒ|j	ˆj
ƒˆjd
ƒƒ|jˆjddƒƒ|jˆjdtdƒƒƒ|jˆjddƒƒ|jˆjdtdƒƒƒ|jˆjdddt
ƒƒ|jtˆjddƒ|jtˆjdtdƒƒ|j	ˆjdƒdƒ|j	ˆjddt
ƒdƒd
S(stest StaticHandler classtd1c€sMeZdZdZedƒZedƒZdZe‡fd†Z	d„Z
RS(Rtflagt_tabic€s#tˆ|ƒj|||_dS(N(tsupert__init__R(tselfRtkwds(R(sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyR9scS€s|jrtdƒStdƒS(Ntbta(RR(Rtsecret((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyt_calc_checksum=s(sflag(t__name__t
__module__tnametcontext_kwdsRt_hash_prefixtchecksum_charst
checksum_sizetFalseRR((R(sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyR2st_at_bt_cRRtcittsRN(tuht
StaticHandlert
assertTruetidentifyRtassertFalsetassertRaisest	TypeErrortNonetassertEqualt	genconfigthashtverifytTruet
ValueError(R((RsE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyttest_00_static_handler/s*cC€s dtjfd„ƒY}|jdƒ|jdƒ}WdQX|j|dƒ|j|jd|ƒƒ|j|jd|ƒƒ|`|j	t
|jdƒdS(stest StaticHandler legacy attrRcB€s;eZdZed„ƒZed„ƒZed„ƒZRS(RcS€sG|st|ƒdkrtSyt|dƒWntk
rBtSXtS(Ni(i(tlenR'tintR;R:(tclsR8((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyR1fs
cS€s~|dkrtdƒ‚nt|tƒr<|jdƒ}n|dk	rg|j|ƒrgtdƒ‚ntjd|ƒj	ƒS(Nsno secret providedsutf-8sinvalid hashtxyz(
R5R4t
isinstanceRtencodeR1R;thashlibtsha1t	hexdigest(R?RR8((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pytgenhashpscS€s7|dkrtdƒ‚n|j||ƒ|jƒkS(Nsno hash specified(R5R;RFtlower(R?RR8((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyR9{s(R R!R"tclassmethodR1RFR9(((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyRcs
s%d1.*should be updated.*_calc_checksumttestNt(7c622762588a0e5cc786ad0a143156f9fd38eea3txtest(R.R/tassertWarningListR8R6R0R9R2RFR3tNotImplementedError(RRR8((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyttest_01_calc_checksum_hack]scC€sndtjfd„ƒY}|jt|jdƒ|jt|jdƒ|j|jdƒƒ|j|jdƒƒ|j|jdƒƒtj	t
dƒƒ|_|jt|jdƒ|jt|jdƒ|j|jdƒƒ|j|jdƒƒ|`t
d	ƒ|_|jt|jdƒ|jt|jdƒ|j|jd
ƒƒ|j|jdƒƒ|`dS(stest GenericHandler.identify()RcB€seZed„ƒZRS(cS€sJt|tƒr!|jdƒ}n|tdƒkr@|d|ƒSt‚dS(NtasciiRtchecksum(RAtbytestdecodeRR;(R?R8((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pytfrom_string“s

(R R!RHRS(((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyR’siR,RRs@.s@at!s!aN(
R.tGenericHandlerR3R4R1R5R2R0tretcompileRt_hash_regextident(RR((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyttest_10_identifys$c€sídtjfd„ƒY‰d	‡fd†}|jt|tdƒƒ|j|tdƒƒtdƒƒ|j|tdƒƒtdƒƒ|jt|tdƒƒ|jt|tdƒƒ|jt|dƒ|jˆƒjtdƒƒd	S(
s%test GenericHandler checksum handlingRcB€s eZdZdZedƒZRS(Ritxz(R R!R"R&RR%(((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyR¶sc€sˆd||jS(NRP(RP(RPtk(R(sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyt
norm_checksum»stxxxtxxxxtxzxztxxxxxtxxyxN(	R.RUR5R3R;RR6R4t_stub_checksum(RR]((RsE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyttest_11_norm_checksum³s""	c€swdtjtjfd„ƒY‰‡fd†}|j|dƒdƒ|jt|tdƒƒ|jˆƒjd	ƒdS(
s*test GenericHandler + HasRawChecksum mixinRcB€seZdZdZRS(Ri(R R!R"R&(((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyRÙsc€sˆ||ŽjS(N(RP(RR\(R(sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyR]Ýst1234RbtiNt(R.tHasRawChecksumRUR6R3R4RRc(RR]((RsE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyttest_12_norm_checksum_raw×s
c
€s¼dtjtjfd„ƒY‰‡fd†}‡fd†}tddƒ}tddƒ}tddƒ}|jt|ƒ|jt|d	dƒ|j|d
tƒ|ƒt	j
dtƒ»}|jt|d	dƒ|jt|d	d
ƒ|j|ƒ|j
|d	dƒdƒ|j
|d	dƒdƒ|j
|d	dƒdƒ|j|ƒ|jt|d	dƒ|j|ƒWdQXt	j
dtƒØ}|jt|dƒ|jt|dƒ|j|ƒ|j|dƒ|ƒ|j|dƒ|ƒ|j|dƒ|ƒ|j|ƒ|jt|dƒ|j|ƒ|j|ddtƒ|ƒ|j|dgƒWdQXˆ`|jgƒ=|j
t|dƒƒdƒ|j
t|dƒƒdƒWdQXdS(s#test GenericHandler + HasSalt mixinRcB€s,eZdZdZdZdZdZdZRS(RtsaltiiiR(ssalt(R R!R"tsetting_kwdst
min_salt_sizet
max_salt_sizetdefault_salt_sizet
salt_chars(((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyRïsc€s
ˆ|jS(N(Rj(R\(R(sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyt	norm_salt÷sc€sˆjd||dtƒjS(Nt	salt_sizetuse_defaults(tusingR:Rj(tszR\(R(sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pytgen_saltúsRiiiRjRrtrecordR,RtabatabbataaaabbNiiitrelaxedssalt_size.*above max_salt_size(R.tHasSaltRURR3R4R5tassertInR:twarningstcatch_warningsR;tconsumeWarningListR6RmRLR=(RRpRutsalts2tsalts3tsalts4twlog((RsE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyttest_20_norm_saltìsF




c	€s_dtjtjfd„ƒY‰‡fd†}|jt|ƒ|jt|dd
ƒ|j|dtƒdƒ|jt|ddƒtj	dtƒ¥}|jt
|dd	ƒ|j|ƒ|j|dd
ƒd
ƒ|j|ddƒdƒ|j|ddƒdƒ|j|ƒ|jt
|ddƒ|j|ƒWd
QXd
ˆ_|jt|dtƒd
S(s%test GenericHandler + HasRounds mixinRcB€s&eZdZdZdZdZdZRS(Rtroundsiii(srounds(R R!R"Rkt
min_roundst
max_roundstdefault_rounds(((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyR8s
c€s
ˆ|jS(N(R…(R\(R(sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pytnorm_rounds@sR…Rrigø?RviiiiN(
R.t	HasRoundsRUR3R4R5R6R:R}R~R;RRˆ(RR‰Rƒ((RsE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyttest_30_init_rounds5s"

	cC€sÏdtjtjfd„ƒY}|jt|jƒ|jt|jƒ|jt|jdƒ|jt|jdƒ|j|jƒƒt	|_
|ƒ}|j|jdƒdƒ|jdƒ|jdƒ|j|jdƒdƒ|jt|jdƒ|j
|jdƒƒ|j|jdƒƒt	|_|j
|jƒƒ|jdƒ|j|jdƒdƒ|jt|jdƒ|jt|jdƒ|jdƒd	|fd
„ƒY}|jt|jdƒdS(s+test GenericHandler + HasManyBackends mixinRcB€sVeZdZdZdZeZeZed„ƒZ	ed„ƒZ
d„Zd„ZRS(	RRRcS€s%|jr|j|jƒtStSdS(N(t	_enable_at_set_calc_checksum_backendt_calc_checksum_aR:R'(R?((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyt_load_backend_ajs	cS€s%|jr|j|jƒtStSdS(N(t	_enable_bRt_calc_checksum_bR:R'(R?((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyt_load_backend_brs	cS€sdS(NR((RR((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyRŽzscS€sdS(NR((RR((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyR‘}s((RR(
R R!R"RktbackendsR'RŒRRHRR’RŽR‘(((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyRas	tanytdefaultR-RRR+td2cB€seZeZRS((R R!R:t_has_backend_a(((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyR–¦sN(R.tHasManyBackendsRUR3Rtget_backendtset_backendR2thas_backendR:RR6RR0RŒR;tAssertionError(RRtobjR–((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyttest_40_backends_s0 		

	

cC€s¯tjddtddƒdtjtjfd„ƒY}|jt|jƒ|jt|j	ƒ|jt|j	dƒ|jt|j	dƒ|j
|jƒƒt|_
|ƒ}|j|jd	ƒd
ƒ|j	d
ƒ|j	dƒ|j|jd	ƒd
ƒ|jt|j	dƒ|j|jd
ƒƒ|j
|jdƒƒt|_|j|jƒƒ|j	dƒ|j|jd	ƒdƒ|jt|j	dƒ|jt|jdƒd
S(s<test GenericHandler + HasManyBackends mixin (deprecated api)tignoretcategorytmessages0.* support for \._has_backend_.* is deprecated.*RcB€s8eZdZdZdZeZeZd„Zd„Z	RS(RRRcS€sdS(NR((RR((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyRŽºscS€sdS(NR((RR((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyR‘½s((RR(
R R!R"RkR“R'R—t_has_backend_bRŽR‘(((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyR±s	R”R•R-RRR+N(R}tfilterwarningstDeprecationWarningR.R˜RUR3RR™RšR2R›R:R¢R6RR0R—R;(RRR((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyttest_41_backendsªs0		

	
c€sõdtjtjfd„ƒY‰‡fd†}|jt|ƒ|jt|ddƒ|j|dtƒtdƒƒ|j|dtdƒƒtdƒƒ|j|dtdƒƒtdƒƒ|jt	|dtdƒƒ|j|dtd	ƒƒtdƒƒ|jt	|dtd
ƒƒ|j
ˆjtdƒƒƒ|j
ˆjtdƒƒƒ|jˆjtd
ƒƒƒ|jˆjtd	ƒƒƒ|jˆjtdƒƒƒ|jtˆjdƒ|jtˆjdƒdˆ_
|jt|dtƒdS(s#test GenericHandler + HasManyIdentsRcB€sQeZdZdZedƒZedƒedƒfZiedƒedƒ6ZRS(RRYs!As!BtA(sident(R R!R"RkRt
default_identtident_valuest
ident_aliases(((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyRçs
c€s
ˆ|jS(N(RY(R\(R(sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyt
norm_identîsRYRrs!As!Bs!CR¦tBs!Axxxs!Bxxxs!CxxxR,iN(R.t
HasManyIdentsRUR3R4R5R6R:RR;R0R1R2R§Rœ(RRª((RsE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyttest_50_norm_identäs&%%%	cC€sddlm}|jjdƒ}|j|itdƒd6tdƒd6ƒd}td	ƒ}td
ƒ}|jj|ƒ}|j|td|ddd
td|ƒƒ|jj|dt	ƒ}|j|td|ddd
tƒƒ|jj|dtƒ}|j|tddd
tdtdƒdtdƒƒƒ|jjdƒ}|j|tdtdƒdtdƒddƒƒd}|j
j|ƒ}|j|tddddddƒƒ|j
j|dtƒ}|j|tdtdƒdddtdƒƒƒdS(stest parsehash()iÿÿÿÿ(R8t
OgAwTx2l6NADItAwTx2l6NADIRPtOgRjs?$5$LKO/Ute40T3FNF95$U0prpBQd4PloSGU0pnpM4z9wKn4vZ1.jsrzQfPqxph9sLKO/Ute40T3FNF95s+U0prpBQd4PloSGU0pnpM4z9wKn4vZ1.jsrzQfPqxph9R…iˆtimplicit_roundstsanitizesLK**************s+U0pr***************************************sL$5$rounds=10428$uy/jIAhCetNCTtb0$YWvUOXbkqlqhyoPMpN8BMe.ZGsGx2aBvxTvDFI613c3s+YWvUOXbkqlqhyoPMpN8BMe.ZGsGx2aBvxTvDFI613c3suy/jIAhCetNCTtb0i¼(s@$pbkdf2$60000$DoEwpvQeA8B4T.k951yLUQ$O26Y3/NJEiLCVaOVPxGXshyjW8ks;n˜ßóI"ÂU£•?—²£[Éi`ês0¦ôÀxOé=ç\‹QsO26************************sDo********************N(tpasslibR8t	des_cryptt	parsehashR6RRtdictR:R'tpbkdf2_sha1(RR8tresultthR-R+th1((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyttest_91_parsehashs>*%

cC€sòddlm}|j|jjƒidd6dd6ƒ|j|jjƒidd6dd6ƒ|j|jd	d
d>ƒ|j|jjƒid
d6dd6dd6ƒ|j|jd	d
d>ƒ|j|jjƒidd6dd6dd6ƒdS(stest bitsize()iÿÿÿÿ(R8iBRPiRjiºi„RˆiiiiR…i`i
i i€Nii(	R³R8R6R´tbitsizetbcryptt	patchAttrRR·(RR8((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyttest_92_bitsizeJs(R R!t__doc__R<RNRZRdRiR„R‹RžR¥R­R»R¿(((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyR)s	.	3	#	$		I	*	K	:	.	8tdummy_handler_in_registrycB€s)eZdZd„Zd„Zd„ZRS(s6context manager that inserts dummy handler in registrycC€s;||_td|tjftd|ddƒƒ|_dS(Ntdummy_R"Rk((R"ttypeR.RUR¶tdummy(RR"((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyRps	cC€s=ddlm}|j|jdtƒ|j|jƒ|jS(Niÿÿÿÿ(tregistryt	locations(R³RÅt_unload_handler_nameR"R'tregister_crypt_handlerRÄ(RRÅ((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyt	__enter__wscG€s*ddlm}|j|jdtƒdS(Niÿÿÿÿ(RÅRÆ(R³RÅRÇR"R'(Rtexc_infoRÅ((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyt__exit__~s(R R!RÀRRÉRË(((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyRÁns		tPrefixWrapperTestcB€sVeZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z	d„Z
RS(	stest PrefixWrapper classcC€s–tjdddddtƒ}|j|jdƒ|j|jdƒ|j|jt	ƒ|j|jt	ƒt
dƒ}|j|jt	ƒWdQXdS(s*test PrefixWrapper lazy loading of handlerRRs{XXX}s{MD5}tlazyN(R.t
PrefixWrapperR:R6t
_wrapped_nametassertIst_wrapped_handlerR5twrappedRRÁ(RRRÄ((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyttest_00_lazy_loading…scC€s}tjddddƒ}|j|jdƒ|j|jtƒ|j|jtƒtdƒ}|j|jtƒWdQXdS(s,test PrefixWrapper active loading of handlerRRs{XXX}s{MD5}N(	R.RÎR6RÏRÐRÑRRÒRÁ(RRRÄ((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyttest_01_active_loading•scC€s}tjdtddƒ}|j|jdƒ|j|jtƒ|j|jtƒt	dƒ}|j|jtƒWdQXdS(s4test PrefixWrapper with explicitly specified handlerRs{XXX}s{MD5}RN(
R.RÎRR6RÏR5RÐRÑRÒRÁ(RRRÄ((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyttest_02_explicit¢scC€s¢tjddddƒ}|j|jdƒ|j|jtjƒ|jdt|ƒkƒtjdddƒ}|j|jt	jƒ|j
dt|ƒkƒdS(NRRs{XXX}s{MD5}R‡R–R(R.RÎR6R"RÐRkRR2tdirRR0(RRR–((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyttest_10_wrapped_attributes°scC€stjddddƒ}d}d}|j|jƒdƒ|jt|jddƒ|j|jd|ƒ|ƒ|jt|jd|ƒ|j|j	dƒ|ƒ|j
|j|ƒƒ|j|j|ƒƒ|jt|j
d|ƒ|j
|j
d|ƒƒdS(	NRRs{XXX}s{MD5}s{XXX}X03MO1qnZdYdgyfeuILPmQ==s{MD5}X03MO1qnZdYdgyfeuILPmQ==s{XXX}1B2M2Y8AsgTpgAmY7PhCfg==tpassword(R.RÎR6R7R3R4RFR5R;R8R0R1R2R9(RRtdphtlph((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyttest_11_wrapped_methodsºscC€sqtjdddƒ}|j|jtdƒƒ|j|jdƒtjdddƒ}|j|jdƒ|j|jdƒtjddddƒ}|j|jdƒ|j|jdƒtjdddd	d
ƒ}|j|jtd
ƒƒ|j|jdƒtjdddd	dƒ}|jt	tjdddd	dƒ|jt	tjdddd	d
ƒtjdddƒ}|j|jdƒ|j|jtdƒtdƒfƒtjdddd	t
ƒ}|j|jtdƒƒ|j|jdƒ|jt	tjddd	t
ƒ|jdƒ#tjddddddƒ}WdQX|j|jdƒ|j|jdƒdS(Nth2Rs{XXX}s
{XXX}{MD5}R´Rºs{MD5}th3RYs{Xs{XXX}As{XYs{XXXXth4tphpasss{XXX}$P$s{XXX}$H$th5th6s#orig_prefix.*may not work correctlyth7torig_prefixt$tprefixt?(R.RÎR6RYRRÐR¨R5R3R;R:RL(RR¹((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyt
test_12_identÒs8

%$cC€s5tjdddddƒ}|jt|ƒdƒdS(stest repr()RÜt	md5_crypts{XXX}Rãs$1$sÀ(?x)^PrefixWrapper\(
                ['"]h2['"],\s+
                ['"]md5_crypt['"],\s+
                prefix=u?["']{XXX}['"],\s+
                orig_prefix=u?["']\$1\$['"]
            \)$N(R.RÎtassertRegextrepr(RR¹((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyttest_13_reprscC€s2tjddddƒ}|jt|jdƒdS(stest orig_prefix sanity checkRÜRèRãs$6$RIN(R.RÎR3R;R8(RR¹((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyttest_14_bad_hashs(R R!RÀRÓRÔRÕR×RÛRçRëRì(((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyRÌ‚s		
		
		/	tUnsaltedHashcB€s,eZdZdZejZdZd„ZRS(s!test algorithm which lacks a salttunsalted_test_hashi(cC€sDt|tƒr!|jdƒ}nd|}ttj|ƒjƒƒS(Nsutf-8tboblious(RARRBRRCRDRE(RRtdata((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyRs
(	R R!RÀR"R.tLOWER_HEX_CHARSR%R&R(((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyRís
	t
SaltedHashcB€soeZdZdZd
ZdZdZdZej	Z
Zej
edƒƒZed„ƒZd„Zd	„ZRS(stest algorithm with a salttsalted_test_hashRjiii(s^@salt[0-9a-f]{42,44}$cC€sc|j|ƒs$tjj|ƒ‚nt|tƒrE|jdƒ}n|d|dd!d|dƒS(NRORjiiØÿÿÿRP(R1R.texctInvalidHashErrorRARQRR(R?R8((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyRS0s
cC€s&tdƒ|j|jf}t|ƒS(Ns	@salt%s%s(RRjRPR(RR8((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyt	to_string8scC€s`t|tƒr!|jdƒ}n|jjdƒ||jjdƒ}ttj|ƒjƒƒS(Nsutf-8RO(RARRBRjRRCRDRE(RRRð((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyR<s&(ssalt(R R!RÀR"RkRlRmR&R.RñRoR%RVRWRRXRHRSRöR(((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyRò$s
	s*\u0399\u03c9\u03b1\u03bd\u03bd\u03b7\u03c2tUnsaltedHashTestcB€s)eZeZdedfgZd„ZRS(RØt(61cfd32684c47de231f1f982c214e884133762c0t(96b329d120b97ff81ada770042e44ba87343ad2bcC€s3|jttddƒ|jttjddƒdS(NRjtxR…i(R3R4RíR7(R((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyt
test_bad_kwdsSs(spasswordRø(R R!Ríthandlert
UPASS_TEMPtknown_correct_hashesRû(((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyR÷KstSaltedHashTestcB€s)eZeZdedfgZd„ZRS(RØs/@salt77d71f8fe74f314dac946766c1ac4a2a58365482c0s1@salt9f978a9bfe360d069b0c13f2afecd570447407fa7e48cC€sNtdtƒj}|jttd|ddƒ|jttd|ddƒdS(NRrRPRjR^(RòR:RcR3R4R5R;(Rtstub((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyRû_s(spasswords/@salt77d71f8fe74f314dac946766c1ac4a2a58365482c0(R R!RòRüRýRþRû(((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyRÿWs()RÀt
__future__RRVRCtloggingRR}tpasslib.hashRRtpasslib.excRRtpasslib.utils.compatRRRtpasslib.utils.handlerstutilsthandlersR.tpasslib.tests.utilsR	R
RR tlogRRtobjectRÁRÌR/RíR{RURòRýR÷Rÿ(((sE/usr/lib/python2.7/site-packages/passlib/tests/test_utils_handlers.pyt<module>s.	ÿÿG–%
Back to Directory File Manager