+
    i                       R t ^ RIHt ^ RIt]P                  ! ]4      t^ RIt^ RIt^ RI	t	^ RI
HtHt ^ RIHt ^ RIHtHtHtHt ^ RIHtHtHtHtHtHt ]! R4      t]! R4      t]! R	4      tR
t. RdOt. ReOt R t!. RfOt" ! R R]4      t# ! R R]4      t$ ! R R]4      t%]%PM                  R4      t']%PM                  R4      t( ! R R]4      t) ! R R]4      t*]*PM                  R4      t+]*PM                  R4      t, ! R R]4      t- ! R R]4      t. ! R R]4      t/ ! R R]4      t0 ! R  R!]4      t1 ! R" R#]4      t2 ! R$ R%]]4      t3 ! R& R']4      t4 ! R( R)]4      t5 ! R* R+]4      t6 ! R, R-]4      t7 ! R. R/]4      t8 ! R0 R1]4      t9 ! R2 R3]4      t: ! R4 R5]4      t;];PM                  R4      t<];PM                  R4      t= ! R6 R7]4      t>]>PM                  R4      t? ! R8 R9]]4      t@ ! R: R;]4      tA]APM                  R4      tB]APM                  R4      tC ! R< R=]]4      tD ! R> R?]]4      tE ! R@ RA]4      tF ! RB RC]4      tG ! RD RE]4      tH ! RF RG]4      tI ! RH RI]4      tJ ! RJ RK]4      tK ! RL RM]]4      tL ! RN RO]4      tM ! RP RQ]4      tN ! RR RS]4      tO ! RT RU]]4      tP ! RV RW]4      tQ]QPM                  R4      tR]QPM                  R4      tS ! RX RY]4      tT ! RZ R[]4      tU]UPM                  R4      tV]UPM                  R4      tW ! R\ R]]4      tX]XPM                  R4      tY]XPM                  R4      tZ ! R^ R_]4      t[ ! R` Ra]4      t\ ! Rb Rc]4      t]R# )gz?passlib.tests.test_handlers - tests for passlib hash algorithms)with_statementN)exchash)repeat_string)irangePY3uget_method_function)TestCaseHandlerCase
skipUnless	TEST_MODEUserHandlerMixinEncodingHandlerMixinu   Ιωαννηςu   €¥$u
   táБℓəs
   táБℓəc                   ^ RI Hp V! V 4      p\        VR4      '       d(   V \        9  d    VP	                  4       pT : RT: R2pM	RV ,          p\         F:  pRV,           p\        V4       \        P                  V,          p \        Wt4      u # 	  \        RV: RV : 24      h  \
        P                   d    T \        9   g   Q hh i ; i  \         d     K  i ; i)	aH  
return HandlerCase instance for scheme, used by other tests.

:param scheme: name of hasher to locate test for (e.g. "bcrypt")

:raises KeyError:
    if scheme isn't known hasher.

:raises MissingBackendError:
    if hasher doesn't have any available backends.

:returns:
    HandlerCase subclass (which derives from TestCase)
)get_crypt_handlerbackends__testz%s_testzpasslib.tests.zcan't find test case named z for )passlib.registryr   hasattr_omitted_backend_testsget_backendr   MissingBackendErrorconditionally_available_hashes_handler_test_modules
__import__sysmodulesgetattrAttributeErrorRuntimeError)schemer   handlerbackendnamemodulemodnamemods   &       Y/var/www/html/photoedit/myenv/lib/python3.14/site-packages/passlib/tests/test_handlers.pyget_handler_caser*   -   s     3'Gw
##6L(L	))+G  &w/6!'"V+7kk'"	3%% ( vN
OO! && 	;;;;	  		s   B( 
C($CCCc                   @    ] tR t^\t]P
                  tR]R3.tR.t	Rt
R# )apr_md5_crypt_testz%$apr1$bzYrOHUx$a1FcpXuQDJV3vPY20CS6N1z%$apr1$r31.....$HqJZimcKQFAMYayBlzkrA! N)
myPasswordz%$apr1$r31.....$HqJZimcKQFAMYayBlzkrA/)__name__
__module____qualname____firstlineno__r   apr_md5_cryptr#   UPASS_TABLEknown_correct_hashesknown_malformed_hashes__static_attributes__r-       r)   r,   r,   \   s3      G 	@ 
=>
  4
r8   r,   c                      a ] tR t^ut o]P
                  tRR]R3.tR.t	]
P                   U u. uF  p V ^ ,          R8w  g   K  V NK  	  up tR tRtVtR# u up i )	bigcrypt_testSEChBAyMbMNhgGLyP7kD1HZUz;qiyh4XPJGsOZ2MEAyLkfWqef8.SVpL2fvwjkAnxn8/rgTkwvrif6bjYB5cd	des_cryptc                f    V P                  \        \        P                  R \	        R4      R7       R# )T
yh4XPJGsOZ)use_defaultschecksumN)assertRaises
ValueErrorr   bigcryptr   selfs   &r)   test_90_internalbigcrypt_test.test_90_internal   s(     	*dmm$#$\? 	 	4r8   r-   N)
passphraseqiyh4XPJGsOZ2MEAyLkfWqeQ)zThis is very long passwdz#f8.SVpL2fvwjkAnxn8/rgTkwvrif6bjYB5c)r/   r0   r1   r2   r   rC   r#   r4   r5   known_unidentified_hashesr   known_other_hashesrF   r7   __classdictcell__)row__classdict__s   0@r)   r:   r:   u   sz     mmG 	AK 
01$	/! *5)G)G 4)G# V{2 #)G 44 44s   AAr:   c                      a a ] tR t^t oRt]P                  tRRR	R
RRRRRRRRRRRRR]R3.t	R.t
. ROtV 3R ltR tRtVtV ;t# )_bsdi_crypt_testztest BSDiCrypt algorithmz_7C/.ABw0WIKy0ILVqo2z_K1.!crsmZxOLzfJH8iwc                ^   < \         P                  ! R R4       \        \        V `  ! R/ VB  R# )ignorez!bsdi_crypt rounds should be odd.*Nr-   )warningsfilterwarningssuperrP   test_77_fuzz_inputrE   kwds	__class__s   &,r)   rV   #_bsdi_crypt_test.test_77_fuzz_input   s'    *MN8@4@r8   c                   V P                   pRpRpRpV P                  VP                  WB4      4       V P                  VP                  WC4      4       V P                  VP                  V4      4       V P	                  VP                  V4      4       VP                  R4      pV P	                  VP                  V4      4       R# )z&needs_update() should flag even roundsz_Y/../cG0zkJa6LY6k4cz_Z/..TgFg0/ptQtpAgwsteststubN)r#   
assertTrueverifyneeds_updateassertFalser   )rE   r#   	even_hashodd_hashsecretnew_hashs   &     r)   test_needs_update_w_even_rounds0_bsdi_crypt_test.test_needs_update_w_even_rounds   s    ,,*	) 	v9:v89 	,,Y78--h78 <<'--h78r8   r-   )U*U*U*U*z_J9..CCCCXBrJUJV154M)U*U***Uz_J9..CCCCXUhOBTXzaiE)U*U***U*z_J9..CCCC4gQ.mB/PffM)*U*U*U*Uz_J9..XXXXvlzQGqpPPdk)z	*U*U*U*U*z_J9..XXXXsqM/YSSP..Y)z*U*U*U*U*U*U*U*Uz_J9..XXXXVL7qJCnku0I)z*U*U*U*U*U*U*U*U*z_J9..XXXXAj8cFbP5scI)	ab1234567z_J9..SDizh.vll5VED9g)	cr1234567z_J9..SDizRjWQ/zePPHc)zxyDPWgydbQjgqz_J9..SDizxmRI1GjnQuE)z726 evenz_K9..SaltNrQgIYUAeoY) z_J9..SDSD5YGyRCr4W4c) z_K1..crsmZxOLzfJH8iw)myz_KR/.crsmykRplHbAvwA)zmy socraz_K1..crsmf/9NzZr1fLM)zmy socratesz_K1..crsmOv1rbde9A9o)zmy socrates notez_K1..crsm/2qeAhdISMA)zopenbsd[6789]Fopenbsd5NopenbsdT)zfreebsd|netbsd|darwinT)solarisFlinuxN)r/   r0   r1   r2   __doc__r   
bsdi_cryptr#   r4   r5   rJ   platform_crypt_supportrV   rf   r7   rL   __classcell__rY   rN   s   @@r)   rP   rP      s     "ooG 	-+,,-45--2,$
 	&&,/4 
,-7@ 	!	A
9 9r8   rP   os_cryptbuiltinc            	       F    ] tR t^t]P
                  tRRRRRR	R
]R3.tRt	R# )crypt16_testYeDc9tKkkmDvwP7buzpwhoqQr-   N)rH   zqi8H8R7OM4xMUNMPuRAZxlY.)printfaaCjFz4Sh8Eg2QSqAReePlq6)r   zAA/xje2RyeiSU0iBY3PDwjYo)LOLOAQICI82QB4IPz/.FcK3mad6JwYt8LVmDqz9Lc)	LOLOAQICIz/.FcK3mad6JwYSaRHJoTPzY2)LOLOAQICz/.FcK3mad6JwYelhbtlysKy6)Lz/.CIu/PzYCkl6elhbtlysKy6)
r/   r0   r1   r2   r   crypt16r#   r4   r5   r7   r-   r8   r)   r   r      s5    llG 	4338333 
01%
r8   r   c                   n    ] tR tRtRt]P                  tRRR	R
RRRRRRR]! R4      R3.t	. ROt
. ROtRtR# )_des_crypt_testi  ztest des-crypt algorithmu   hellÖsaykDgk3BPZ9ENr-   )rh   CCNf8Sbh3HDfQ)ri   zCCX.K.MFy4Ois)rj   zCC4rMpbg9AMZ.)rk   XXxzOu6maQKqQ)ro   SDbsugeBiC58A)ro   OgAwTx2l6NADI)rp   z/Hk.VPuwQTXbc)r\   N1tQbOFcM5fpg)Compl3X AlphaNu3mericzum.Wguz3eVCx2)%4lpHa N|_|M3r1K W/ Cur5Es: #$%(*)(*%#sNYqfOyauIyic)AlOtBsOlcEpWz5IUCShqM)z!gAwTx2l6NADIOgAwTx2l6NADOgAwTx2l6NADIj)rr   rs   ru   )z#freebsd|netbsd|linux|solaris|darwinT)r/   r0   r1   r2   rz   r   r<   r#   r   r5   rJ   r|   r7   r-   r8   r)   r   r     sY    "nnG 	&$%%
 	!2B% 
</*+
.!
r8   r   c                   d   a  ] tR tRt o Rt]P                  tR	R
RR]R3.t	RR.t
. ROtR tRtV tR# )	fshp_testi@  ztest fshp algorithmzP{FSHP1|16|16384}9v6/l3Lu/d9by5nznpOScqQo8eKu/b/CKli3RCkgYg4nRTgZu5y659YV8cCZ68ULz'{FSHX0|0|1}qUqP5cyxm6YcTAhz05Hph5gvu9M=z&FSHP0|0|1}qUqP5cyxm6YcTAhz05Hph5gvu9M=c                   V P                   p\        R^R7      pV! R
R^/VB  V! R
R\        R4      /VB  V! R
RR/VB  V! R
R\        R4      /VB  V! R
RR/VB  V P                  ! \        V3RR/VB  V P                  ! \        V3R\        ^^4      /VB  V P                  ! \        V3RR	/VB  V P                  ! \        V3R^	/VB  R# )ztest variant keyword   a)saltroundsvariant1   1sha256s   sha256N9r-   )r#   dictr   rA   	TypeErrorcomplexrB   )rE   r#   rX   s   &  r)   test_90_variantfshp_test.test_90_variantu  s    ,,a( 	""T" 	'#'$'%%% 	,(,t,*	*T* 	)WCdCdC 	)WKgalKdK 	*gCsCdC*gAqADAr8   r-   N)r\   z'{FSHP0|0|1}qUqP5cyxm6YcTAhz05Hph5gvu9M=)r\   zF{FSHP1|8|4096}MTIzNDU2NzjTdHcmoXwNc0ff9+ArUHoN0CvlbPZpxFi1C6RDM/MHSA==)OrpheanBeholderScryDoubtzF{FSHP1|8|4096}GVSUFDAjdh0vBosn1GUhzGLHP7BmkbCZVH/3TQqGIjADXpc+6NCg3g==)ExecuteOrder66z{{FSHP3|16|8192}0aY7rZQ+/PR+Rd5/I9ssRM7cjguyT8ibypNaSp/U1uziNO3BVlg5qPUng+zHUDQC3ao/JbzOnIBUtAeWHEy7a2vZeZ7jAwyJJa2EqOsq4Io=)z&{FSHP0|0|1}qUqP5cyxm6YcTAhz05Hph5gvu9Mz'{FSHP0|1|1}qUqP5cyxm6YcTAhz05Hph5gvu9M=z'{FSHP0|0|A}qUqP5cyxm6YcTAhz05Hph5gvu9M=)r/   r0   r1   r2   rz   r   fshpr#   r4   r5   rJ   r6   r   r7   rL   rN   s   @r)   r   r   @  sa     iiG 	<	
		 
 8 	99
D 	20!
	B Br8   r   c                   :    ] tR tRt]P
                  tR]R3.tRt	R# )hex_md4_testi   876078368c47817ce5f9115f3a42cf74r-   N)password 8a9d093f14f8701df17732b2bb182c74)
r/   r0   r1   r2   r   hex_md4r#   r4   r5   r7   r-   r8   r)   r   r     s    llG8	89r8   r   c                   J   a  ] tR tRt o ]P
                  tR]R3.tR t	Rt
V tR# )hex_md5_testi   05473f8a19f66815e737b33264a0d0b0c                0   ^ RI Hp ^ RIHpHp V! RRR7      P
                  pV P                  V P                  P
                  V4       V'       d   V! 4        V P                  VR4       ^ RI	H
p V! RRR7      pV P                  VP
                  4       RpRpV P                  VP                  V4      4       V P                  VP                  V4      4       R	p	V P                  WVP                  R
4       V P                  WVP                   R
V4       R# )zV
if md5 isn't available, a dummy instance should be created.
(helps on FIPS systems).
)UnknownHashError)lookup_hash_set_mock_fips_modemd5F)required)create_hex_hash 5f4dcc3b5aa765d61d8327deb882cf99xxxz'md5' hash disabled for fipsr   N)passlib.excr   passlib.crypto.digestr   r   	supportedassertEqualr#   
addCleanuppasslib.handlers.digestsr   ra   r^   identifyassertRaisesRegexr   r_   )
rE   r   r   r   r   r   hasherref1ref2pats
   &         r)   test_mock_fips_mode hex_md5_test.test_mock_fips_mode  s    
 	1J  6@@	//;!OO/7 	= 7))* 2-../ -/fkk:N/fmmZQUVr8   r-   N)r   r   )r/   r0   r1   r2   r   hex_md5r#   r4   r5   r   r7   rL   r   s   @r)   r   r     s.     llG8	89W Wr8   r   c                   :    ] tR tRt]P
                  tR]R3.tRt	R# )hex_sha1_testi  (e059b2628e3a3e2de095679de9822c1d1466e0f0r-   N)r   (5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8)
r/   r0   r1   r2   r   hex_sha1r#   r4   r5   r7   r-   r8   r)   r   r     s    mmG@	@Ar8   r   c                   :    ] tR tRt]P
                  tR]R3.tRt	R# )hex_sha256_testi  @6ed729e19bf24d3d20f564375820819932029df05547116cfc2cc868a27b4493r-   N)r   @5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8)
r/   r0   r1   r2   r   
hex_sha256r#   r4   r5   r7   r-   r8   r)   r   r     s    ooGX	XYr8   r   c                   :    ] tR tRt]P
                  tR]R3.tRt	R# )hex_sha512_testi  ڀd91bb0a23d66dca07a1781fd63ae6a05f6919ee5fc368049f350c9f293b078a18165d66097cf0d89fdfbeed1ad6e7dba2344e57348cd6d51308c843a06f29cafr-   N)r   ڀb109f3bbbc244eb82441917ed06d618b9008dd09b3befd1b5e07394c706a8bb980b1d7785e5976ec049b46df5f1326af5a2ea6d103fd07c95385ffab0cacbc86)
r/   r0   r1   r2   r   
hex_sha512r#   r4   r5   r7   r-   r8   r)   r   r     s'    ooG	 
  		r8   r   c                   ^   a  ] tR tRt o ]P
                  tR	]]]	3R3.t
RR.tR tR tRtV tR# )
htdigest_testi   4dabed2727d583178777fab468dd1f17 939e7578edAe3c518a452acee763bce9 939e7578edxe3c518a452acee763bce9c                $    V P                  R 4      h)z)test case doesn't support 'realm' keywordskipTestrD   s   &r)   test_80_userhtdigest_test.test_80_user  s    mmGHHr8   c                    \        V\        4      '       d   Vw  rpMRRrCVP                  RV4       VP                  RV4       V# )zinsert username into kwdsuserrealm)
isinstancetuple
setdefault)rE   rd   rX   r   r   s   &&&  r)   populate_contexthtdigest_test.populate_context  sA    fe$$"(F% '%%'r8   r-   N))zCircle Of LifeMufasaztestrealm@host.com 939e7578ed9e3c518a452acee763bce9)r/   r0   r1   r2   r   htdigestr#   r4   	UPASS_USD	UPASS_WAVr5   rJ   r   r   r7   rL   r   s   @r)   r   r     sQ     mmG	0 y)	,.	0
 	+ 	+!I r8   r   c                   :    ] tR tRt]P
                  tR]R3.tRt	R# )ldap_md5_testi  z{MD5}BUc/ihn2aBXnN7MyZKDQsA==r-   N)
helloworld{MD5}/F4DjTilcDIIVEHn/nAQsA==)
r/   r0   r1   r2   r   ldap_md5r#   r4   r5   r7   r-   r8   r)   r   r     s    mmG7	56r8   r   c                   :    ] tR tRt]P
                  tR]R3.tRt	R# )ldap_sha1_testi  z!{SHA}4FmyYo46Pi3glWed6YIsHRRm4PA=r-   N)r   z!{SHA}at+xg6SiyUovktq1redipHiJpaE=)
r/   r0   r1   r2   r   	ldap_sha1r#   r4   r5   r7   r-   r8   r)   r   r     s    nnG;	9:r8   r   c                   H    ] tR tRt]P
                  tR]R3RRR.t. R	Ot	Rt
R# )
ldap_salted_md5_testi  z"{SMD5}Z0ioJ58LlzUeRxm3K6JPGAvBGIM=r-   N)testing1234z"{SMD5}UjFY34os/pnZQ3oQOzjqGu4yeXE=)r\   z&{SMD5}LnuZPJhiaY95/4lmVFpg548xBsD4P4cw)r\   z2{SMD5}XRlncfRzvGi0FDzgR98tUgBg7B3jXOs9p9S615qTkg==)r\   z2{SMD5}FbAkzOMOxRbMp6Nn4hnZuel9j9Gas7a2lvI+x5hT6j0=)z"{SMD5}IGVhwK+anvspmfDt2t0vgGjt/Q==z%{SMD5}LnuZPJhiaY95/4lmVFpg548xBsD4P4czM{SMD5}LnuZPJhiaY95/4lmVFpg548xBsD4P4cw{SMD5}LnuZPJhiaY95/4lmVFpg548xBsD4P4cw=z&{SMD5}LnuZPJhiaY95/4lmV=pg548xBsD4P4cwz&{SMD5}LnuZPJhiaY95/4lmVFpg548xBsD4P===)r/   r0   r1   r2   r   ldap_salted_md5r#   r4   r5   r6   r7   r-   r8   r)   r   r     s4    ""G=	:; 	;FF
r8   r   c                   J    ] tR tRt]P
                  tRR]R3RRR	.t. R
Ot	Rt
R# )ldap_salted_sha1_testi+  z&{SSHA}3yCSD1nLZXznra4N8XzZgAL+s1sQYsx5r-   N)
testing123z&{SSHA}0c0blFTXXNuAMHECS4uxrj3ZieMoWImr)rd   z&{SSHA}0H+zTv8o4MR4H43n03eCsvw1luG8LdB7)r\   z.{SSHA}P90+qijSp8MJ1tN25j5o1PflUvlqjXHOGeOckw==)r\   z6{SSHA}/ZMF5KymNM+uEOjW+9STKlfCFj51bg3BmBNCiPHeW2ttbU0=)r\   z6{SSHA}Pfx6Vf48AT9x3FVv8znbo8WQkEVSipHSWovxXmvNWUvp/d/7)z&{SSHA}ZQK3Yvtvl6wtIRoISgMGPkcWU7Nfq5U=z+{SSHA}P90+qijSp8MJ1tN25j5o1PflUvlqjXHOGeOckz-{SSHA}P90+qijSp8MJ1tN25j5o1PflUvlqjXHOGeOckw=z.{SSHA}P90+qijSp8MJ1tN25j5o1Pf=UvlqjXHOGeOckw==z.{SSHA}P90+qijSp8MJ1tN25j5o1PflUvlqjXHOGeOck===)r/   r0   r1   r2   r   ldap_salted_sha1r#   r4   r5   r6   r7   r-   r8   r)   r  r  +  s8    ##G@<	>? 	CJJ		r8   r  c                   X    ] tR tRt]P
                  tRRR]! R4      R3R	R
R.t. ROt	Rt
R# )ldap_salted_sha256_testiD  	   letmèïnzA{SSHA256}km7UjUTBZN8a+gf1ND2/qn15N7LsO/jmGYJXvyTfJKAbI0RoLWWslQ==r-   N)r   zA{SSHA256}x1tymSTVjozxQ2PtT46ysrzhZxbcskK0o2f8hEFx7fAQQmhtDSEkJA==)r\   zA{SSHA256}xfqc9aOR6z15YaEk3/Ufd7UL9+JozB/1EPmCDTizL0GkdA7BuNda6w==)toomanysecretszA{SSHA256}RrTKrg6HFXcjJ+eDAq4UtbODxOr9RLeG+I69FoJvutcbY0zpfU+p1Q==)r\   z9{SSHA256}TFv2RpwyO0U9mA0Hk8FsXRa1I+4dNUtv27Qa8dzGVLinlDIm)r\   zI{SSHA256}J6MFQdkfjdmXz9UyUPb773kekJdm4dgSL4y8WQEQW11VipHSundOKaV0LsV4L6U=)r\   zI{SSHA256}uBLazLaiBaPb6Cpnvq2XTYDkvXbYIuqRW1anMKk85d1/j1GqFQIgpHSOMUYIIcS4)z9{SSHA256}Lpdyr1+lR+rtxgp3SpQnUuNw33ENivTl28nzF2ZI4Gm41/o=z9{SSHA256}TFv2RpwyO0U9mA0Hk8FsXRa1I+4dNUtv27Qa8dzGVLinlDI@z8{SSHA256}TFv2RpwyO0U9mA0Hk8FsXRa1I+4dNUtv27Qa8dzGVLinlDIz<{SSHA256}TFv2RpwyO0U9mA0Hk8FsXRa1I+4dNUtv27Qa8dzGVLinlDIm===)r/   r0   r1   r2   r   ldap_salted_sha256r#   r   r5   r6   r7   r-   r8   r)   r  r  D  sC    %%G 	ZU_	
?	`a 	N]]r8   r  c                   X    ] tR tRt]P
                  tR]! R4      R3RRR	R
R.t. ROt	Rt
R# )ldap_salted_sha512_testia  r  zi{SSHA512}mpNUSmZc3TNx+RnPwkIAVMf7ocEKLPrIoQNsg4Eu8dHvyCeb2xzHp5A6n4tF7ntknSvfvRZaJII4ImvNJlYsgiwAm0FMqR+3r-   N)r  zi{SSHA512}wExp4xjiCHS0zidJDC4UJq9EEeIebAQPJ1PWSwfhxWjfutI9XiiKuHm2AE41cEFfK+8HyI8bh+ztbczUGsvVFIgICWWPt7qu)r   ze{SSHA512}f/lFQskkl7PdMsTGJxHZq8LDt/l+UqRMm6/pj4pV7/xZkcOaKCgvQqp+KCeXc/Vd4RY6vEHWn4y0DnFcQ6wgyv9fyxk=)r\   zi{SSHA512}Tgx/uhHnlM9/GgQvI31dN7cheDXg7WypZwaaIkyRsgV/BKIzBG3G/wUd9o1dpi06p3SYzMedg0lvTc3b6CtdO0Xo/f9/L+Uc)r\   ze{SSHA512}Yg9DQ2wURCFGwobu7R2O6cq7nVbnGMPrFCX0aPQ9kj/y1hd6k9PEzkgWCB5aXdPwPzNrVb0PkiHiBnG1CxFiT+B8L8U=)r\   zu{SSHA512}5ecDGWs5RY4xLszUO6hAcl90W3wAozGQoI4Gqj8xSZdcfU1lVEM4aY8s+4xVeLitcn7BO8i7xkzMFWLoxas7SeHc23sP4dx77937PyeE0A==)r\   zu{SSHA512}6FQv5W47HGg2MFBFZofoiIbO8KRW75Pm51NKoInpthYQQ5ujazHGhVGzrj3JXgA7j0k+UNmkHdbJjdY5xcUHPzynFEII4fwfIySEcG5NKSU=)ze{SSHA512}zFnn4/8x8GveUaMqgrYWyIWqFQ0Irt6gADPtRk4Uv3nUC6uR5cD8+YdQni/0ZNij9etm6p17kSFuww3M6l+d6AbAeA==zh{SSHA512}Tgx/uhHnlM9/GgQvI31dN7cheDXg7WypZwaaIkyRsgV/BKIzBG3G/wUd9o1dpi06p3SYzMedg0lvTc3b6CtdO0Xo/f9/L+Uzi{SSHA512}Tgx/uhHnlM9/GgQvI31dN7cheDXg7WypZwaaIkyRsgV/BKIzBG3G/wUd9o1dpi06p3SYzMedg0lvTc3b6CtdO0Xo/f9/L+U@zk{SSHA512}Tgx/uhHnlM9/GgQvI31dN7cheDXg7WypZwaaIkyRsgV/BKIzBG3G/wUd9o1dpi06p3SYzMedg0lvTc3b6CtdO0Xo/f9/L+U===)r/   r0   r1   r2   r   ldap_salted_sha512r#   r   r5   r6   r7   r-   r8   r)   r  r  a  sR    %%G 	H	
?	  I  	J 	~} 	z 	J 	J$r8   r  c                       ] tR tRt]P
                  tR]]'       d   ]M]	3]	]'       d   ]M]	3.t
RR.tR	.t ! R R]P                  4      tRtR# )
ldap_plaintext_testi  z{FOO}barro   c                   2   a a ] tR tRt oV 3R ltRtVtV ;t# )%ldap_plaintext_test.FuzzHashGeneratori  c                V   <  \         \        P                  V `  4       pV'       g   K'  V# )T)rU   r  FuzzHashGeneratorrandom_password)rE   pwdrY   s   & r)   r  5ldap_plaintext_test.FuzzHashGenerator.random_password  s&    /AA4XZ3Jr8   r-   )r/   r0   r1   r2   r  r7   rL   r}   r~   s   @@r)   r  r    s     	 	r8   r  r-   Nr   r   )r   r   )r/   r0   r1   r2   r   ldap_plaintextr#   r4   r   PASS_TABLE_UTF8r5   rJ   rK   r   r  r7   r-   r8   r)   r  r    sf    !!G 	Sko>	+/B 	 		! 	6K99  r8   r  c                   J    ] tR tRt]P
                  tRRRR	R
R]R3.tR.t	Rt
R# )_ldap_md5_crypt_testi  z){CRYPT}$1$d6/Ky1lU$/xpf8m7ftmWLF.TjHCqel0z){CRYPT}$1$dOHYPKoP$tnxS1T8Q6VVn3kpV8cN6o!r-   N)ro   z){CRYPT}$1$dOHYPKoP$tnxS1T8Q6VVn3kpV8cN6o.)rp   z){CRYPT}$1$m/5ee7ol$bZn0kIBFipq39e.KDXX8I0)r\   z){CRYPT}$1$ec6XvcoW$ghEtNK2U1MC5l.Dwgi3020)r   z){CRYPT}$1$nX1e7EeI$ljQn72ZUgt6Wxd9hfvHdV0)r   z){CRYPT}$1$jQS7o98J$V6iTcr71CGgwW2laf17pi1)r\   z){CRYPT}$1$SuMrG47N$ymvzYjr7QcEQjaK5m1PGx1)r/   r0   r1   r2   r   ldap_md5_cryptr#   r4   r5   r6   r7   r-   r8   r)   r  r    sC     !!G 	::=N^= 
AB
" 	4
r8   r  c                   \   a a ] tR tRt o]P
                  tR]R3.tV 3R lt	R t
RtVtV ;t# )_ldap_sha1_crypt_testi  z5{CRYPT}$sha1$10$rnqXlOsF$aGJf.cdRPewJAXo1Rn1BkbaYh0fPc                R   < VP                  R ^
4       \        \        V `  V4       R# )r   N)r   rU   r  populate_settingsrW   s   &&r)   r  '_ldap_sha1_crypt_test.populate_settings  s!    "%#T<TBr8   c                $    V P                  R 4      h)unneededr   )rE   ignoreds   &,r)   rV   (_ldap_sha1_crypt_test.test_77_fuzz_input  s    mmJ''r8   r-   )r   z5{CRYPT}$sha1$10$c.mcTzCw$gF8UeYst9yXX7WNZKc5Fjkq0.au7)r/   r0   r1   r2   r   ldap_sha1_cryptr#   r4   r5   r  rV   r7   rL   r}   r~   s   @@r)   r  r    s9      ""G 	N	MN
C( (r8   r  c                      a  ] tR tRt o ]P
                  tRtRRRRRRR]! R4      R3]! R4      R3]! R4      R3R3]! R4      R	3R3]! R4      R
3R3]! R4      R3R3.t	R.t
R tRtV tR# )lmhash_testi  Tu   ENCYCLOPÆDIA fed6416bffc9750d48462b9d7aaac065u   encyclopædia   ÆN 25d8ab4a0659c97aaad3b435b51404eecp437zlatin-1 184eecbbe9991b44aad3b435b51404eezutf-8 00dd240fcfab20b8aad3b435b51404ee 855c3697d9979e78ac404c4ba2c6653Xc                *   ^ RI Hp ^ RIHp V P                  pV P
                   FI  w  rE/ pV P                  WF4      pV! V! V4      4      pV P                  VP                  ! V3/ VB V4       KK  	  V P                  \        VP                  ^4       R# )ztest lmhash.raw() method)	unhexlify)str_to_basciiN)binasciir0  passlib.utils.compatr1  r#   r5   r   r   rawrA   r   )rE   r0  r1  lmhashrd   r   rX   datas   &       r)   test_90_rawlmhash_test.test_90_raw  s}    &6 55LFD**68F]401DVZZ7$7>	 6
 	)VZZ3r8   r-   )OLDPASSWORD c9b81d939d6fd80cd408e6b105741864)NEWPASSWORD 09eeab5aa415d6e4d408e6b105741864)welcome c23413a8a1e7665faad3b435b51404ee)ro    aad3b435b51404eeaad3b435b51404ee)zzZZZzz a5e6066de61c3e35aad3b435b51404ee)rH    855c3697d9979e78ac404c4ba2c66533)Yokohama 5ecd9236d21095ce7584248b8d2c9f9e)r/   r0   r1   r2   r   r5  r#   secret_case_insensitiver   r5   rJ   r7  r7   rL   r   s   @r)   r'  r'    s     kkG" 	<;7
 	17:8 
	AB	
	AB F)T	>?
F)W	AB
F)Y	!CD
F)W	AB1: 	+!

4 
4r8   r'  c                   r    ] tR tRt]P
                  tR	R
RRRRRRRRRR]! R4      R3]R3.t	RR.t
. ROtRtR# )_md5_crypt_testi  sz"$1$ssssssss$YgmLTApYTv12qgTwBoj8i/z"$1$d6/Ky1lU$/xpf8m7ftmWLF.TjHCqel0z"$1$dOHYPKoP$tnxS1T8Q6VVn3kpV8cN6o!z#$1$dOHYPKoP$tnxS1T8Q6VVn3kpV8cN6o.$Nr-   )rh   z"$1$dXc3I7Rw$ctlgjDdWJLMT.qwHsWhXR1)ri   z"$1$dXc3I7Rw$94JPyQc/eAgQ3MFMCoMF.0)rj   z"$1$dXc3I7Rw$is1mVIAEtAhIzSdfn5JOO0)rk   z"$1$eQT9Hwbt$XtuElNJD.eW5MN5UCWyTQ0)ro   z"$1$Eu.GHtia$CFkL/nE1BYTlEPiVx1VWX0)ro   z"$1$dOHYPKoP$tnxS1T8Q6VVn3kpV8cN6o.)rp   z"$1$m/5ee7ol$bZn0kIBFipq39e.KDXX8I0)r\   z"$1$ec6XvcoW$ghEtNK2U1MC5l.Dwgi3020)r   z"$1$nX1e7EeI$ljQn72ZUgt6Wxd9hfvHdV0)r   z"$1$jQS7o98J$V6iTcr71CGgwW2laf17pi1)r\   "$1$SuMrG47N$ymvzYjr7QcEQjaK5m1PGx1)s   testrI  )rr   rs   ru   )zfreebsd|netbsd|linux|solarisT)darwinF)r/   r0   r1   r2   r   	md5_cryptr#   r   r4   r5   r6   r|   r7   r-   r8   r)   rG  rG    sn    nnG 	;9::2 	336GW67	
356 
:;7
@ 0 	.
r8   rG  c                       ] tR tRt]P
                  tRtRRRRRRRRRRR]! R4      ]! R4      3R3]! R4      ]! R4      3R3]! R4      R3R	3]	R
3R3.t
R.tRtR# )
msdcc_testi=  Tr      ü 48f84e6f73d6d5305f6558a33fa2c9bb   üü 593246a8335cf0261799bda2a2a9c623   €€ 9121790702dda0fa5d353014c334c2cebob fcb82eb4212865c7ac3503156ca3f349r-   N)Asdf999sevans b1176c2587478785ec1037e5abc916d0))	ASDqwe123jdoe 592cdfbc3f1ef77ae95c75f851e37166)test1r^   64cd29e36a8431a2b111378564a10631))test2r`   ab60bdb4493822b175486810ac2abe63)test3rc   14dd041848e12fc48c0aa7a416a4a00c)test4rf   b945d24866af4b01a6d89b9d932a153c))z1234qwer!@#$Administrator 7b69d06ef494621e3f47b9802fe7776d))r   r    2d9f0b052932ad18b87f315641921cda))ro   root 176a4c2bd45ac73687676c2f09045353))r^  TEST1r_  ))okoladanineteen_characters 290efa10307e36a79b3eebf2a6b29455) B1176C2587478785EC1037E5ABC916D0rV  rY  )r/   r0   r1   r2   r   msdccr#   user_case_insensitiver   r4   r5   known_alternate_hashesr7   r-   r8   r)   rM  rM  =  s    jjG  	D
 	D
 	A@@@
 	P
 	C
 	;@P
H+q{	#%GH
N
Q~.	/1ST
N
V	$&HI u	AB[.d	0r8   rM  c                       ] tR tRt]P
                  tRtRRRRRRRRRRRR]! R4      R3R3]! R4      R3R3]! R4      R	3R
3]	R3R3.t
RtR# )msdcc2_testiw  TrN  joe bdb80f2c4656a8b8591bd27d39064a54rR   1e1e20f482ff748038e47d801d0d1bdarP  admin 0839e4a07c00f18a8c65cf5b985b9e73rT   cad511dc9edefcf69201da72efb6bb55r-   N)r]   607bbe89611e37446e736f7856515bf8))qerwtJoe e09b38f84ab0be586b730baf61781e30))12345r   6432f517a900b3fc34ffe57f0f346e16))ro   bin c0cbe0313a861062e29f92ede58f9b36))w00tro   87136ae0a18b2dafe4a41d555425b2ed))r  eighteencharacters fc5df74eca97afd7cd5abb0032496223))longpasswordtwentyXXX_characters cfc6a1e33eb36c3d4f84e4c2606623d2))r  twentyoneX_characters 99ff74cea552799da8769d30b2684bee))r  twentytwoXX_characters 0a721bdc92f27d7fb23b87a445ec562f))r`  TEST2 c6758e5be7fc943d00b97972a8a97620)rb   360e51304a2d383ea33467ab0b639cc4)re   6f79ee93518306f071c47185998566ae)r/   r0   r1   r2   r   msdcc2r#   rs  r   r4   r5   r7   r-   r8   r)   rv  rv  w  s    kkG  	A>>9MLVWX@@@
H+u	AB
N
U	#%GH
N
W	%'IJ u	AB3r8   rv  c                   x    ] tR tRt]P
                  tRtR	R
RRRRRRRR]R3]	R3.t
R.t. ROtR]! R4      .tRtR# )mssql2000_testi  zverify-only^0x0100624C0961B28E39FEE13FD0C35F57B4523F0DA1861C11D5A5B28E39FEE13FD0C35F57B4523F0DA1861C11D5A5^0x010083104228FAD559BE52477F2131E538BE9734E5C4B0ADEFD7F6D784B03C98585DC634FE2B8CA3A6DFFEC729B4s^   0x01005B200543327G2E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B332752E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B3^0x01005B200543327G2E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B332752E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B3r-   N)Test^0x010034767D5C0CFA5FDCA28C4A56085E65E882E71CB0ED2503412FD54D6119FFF04129A1D72E7C3194F7284A7F3A)TEST^0x010034767D5C2FD54D6119FFF04129A1D72E7C3194F7284A7F3A2FD54D6119FFF04129A1D72E7C3194F7284A7F3A)x^0x010086489146C46DD7318D2514D1AC706457CBF6CD3DF8407F071DB4BBC213939D484BF7A766E974F03C96524794)AAAA^0x0100CF465B7B12625EF019E157120D58DD46569AC7BF4118455D12625EF019E157120D58DD46569AC7BF4118455D)123^0x01002D60BA07FE612C8DE537DF3BFCFA49CD9968324481C1A8A8FE612C8DE537DF3BFCFA49CD9968324481C1A8A8)r  ^0x01005B20054332752E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B332752E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B3)foo^0x0100A607BA7C54A24D17B565C59F1743776A10250F581D482DA8B6D6261460D3F53B279CC6913CE747006A2E3254)bar^0x01000508513EADDF6DB7DDD270CCA288BF097F2FF69CC2DB74FBB9644D6901764F999BAB9ECB80DE578D92E3F80D)canard^0x01008408C523CF06DCB237835D701C165E68F9460580132E28ED8BC558D22CEDF8801F4503468A80F9C52A12C0A3)lapin^0x0100BF088517935FC9183FE39FDEC77539FD5CB52BA5F5761881E5B9638641A79DBF0F1501647EC941F3355440A2)^0x01005b20054332752e1bc2e7c5df0f9ebfe486e9bee063e8d3b332752e1bc2e7c5df0f9ebfe486e9bee063e8d3b3r  r  )^0X01005B20054332752E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B332752E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B3^0x02005B20054332752E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B332752E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B3\0x01005B20054332752E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B332752E1BC2E7C5DF0F9EBFE486E9BEE063E8D3`0x01005B20054332752E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B332752E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B3AF60x01005B20054332752E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B3)r/   r0   r1   r2   r   	mssql2000r#   rE  r   r4   r5   rt  rJ   r   r6   r7   r-   r8   r)   r  r    s    nnG+ 	sr
 	p
 	s
 	r
 	t 	rqts 
vw	vw_1j	t!" 	j	
jkr8   r  c                   t    ] tR tRt]P
                  tRRR	R
RRRRRRRRRRRRR]R3]R3.t	R.t
. ROtR.tRtR# )mssql2005_testi  60x0100624C0961B28E39FEE13FD0C35F57B4523F0DA1861C11D5A560x010083104228FAD559BE52477F2131E538BE9734E5C4B0ADEFD760x010036D726AE86G34E97F20B198ACD219D60B446AC5E48C54F30r-   N)r  60x010034767D5C2FD54D6119FFF04129A1D72E7C3194F7284A7F3A)toto60x01004086CEB6BF932BC4151A1AF1F13CD17301D70816A8886908)r  60x01004A335DCEDB366D99F564D460B1965B146D6184E4E1025195)r  60x0100E11D573F359629B344990DCD3D53DE82CF8AD6BBA7B638B6)r  60x010036D726AE86834E97F20B198ACD219D60B446AC5E48C54F30)titi60x01004086CEB60ED526885801C23B366965586A43D3DEAC6DD3FD)r  60x0100A607BA7C54A24D17B565C59F1743776A10250F581D482DA8)r  60x01000508513EADDF6DB7DDD270CCA288BF097F2FF69CC2DB74FB)r  60x01008408C523CF06DCB237835D701C165E68F9460580132E28ED)r  60x0100BF088517935FC9183FE39FDEC77539FD5CB52BA5F5761881)r  60x010034767D5C0CFA5FDCA28C4A56085E65E882E71CB0ED250341)r  60x0100993BF2315F36CC441485B35C4D84687DC02C78B0E680411F)r  60x010086489146C46DD7318D2514D1AC706457CBF6CD3DF8407F07)r  60x0100CF465B7B12625EF019E157120D58DD46569AC7BF4118455D)r  60x01002D60BA07FE612C8DE537DF3BFCFA49CD9968324481C1A8A8)r  r  )60x01005b20054332752e1bc2e7c5df0f9ebfe486e9bee063e8d3b3r  r  )60X010036D726AE86834E97F20B198ACD219D60B446AC5E48C54F3060x020036D726AE86834E97F20B198ACD219D60B446AC5E48C54F3040x010036D726AE86834E97F20B198ACD219D60B446AC5E48C54F80x010036D726AE86834E97F20B198ACD219D60B446AC5E48C54F3012r  )r/   r0   r1   r2   r   	mssql2005r#   r   r4   r5   rt  rJ   r6   r7   r-   r8   r)   r  r    s    nnG 	K
 	K
 	JI 	K
 	KJIILK
 	LKKKKK 
NO	NOm7v	L!" 	Ar8   r  c                   ~   a  ] tR tRt o ]P
                  tR	R
R]R3.tR.t	R t
 ! R R]P                  4      tRtV tR# )mysql323_testiF  4ef327ca5491c8d76z8c114b58f2ce9ec                l    V P                  R4      pV P                  R4      pV P                  W4       R# )z$check whitespace is ignored per specmypasszmy passN)
do_encryptr   )rE   hh2s   &  r)   test_90_whitespace mysql323_test.test_90_whitespace^  s,    OOH%__Y'r8   c                   &   a  ] tR tRt o R tRtV tR# )mysql323_test.FuzzHashGeneratorid  c                L    VP                  R R4      VP                  R R4      8g  # )rp   ro   )replace)rE   rd   others   &&&r)   accept_password_pair4mysql323_test.FuzzHashGenerator.accept_password_pairf  s#    >>#b)U]]3r-BBBr8   r-   N)r/   r0   r1   r2   r  r7   rL   r   s   @r)   r  r  d  s     	C 	Cr8   r  r-   N)drew697a7de87c5390b2)r   5d2e19393cc5ef67)r  6f8c114b58f2ce9e)r/   r0   r1   r2   r   mysql323r#   r4   r5   rJ   r  r   r  r7   rL   r   s   @r)   r  r  F  sZ     mmG 	%(
 	' 
()$ 	!
 CK99 C Cr8   r  c                   F    ] tR tRt]P
                  tRRRR	]R3.tR.t	Rt
R# )
mysql41_testij  z)*E7AFE21A9CFA2FC9D15D942AE8FB5C240FE5837Bz)*6Z8989366EAF75BB670AD8EA7A7FC1176A95CEF4r-   N)verysecretpasswordz)*2C905879F74F28F8570989947D06A8429FB943E6) 12345678123456781234567812345678z)*F9F1470004E888963FB466A5452C9CBD9DF6239C)z
' OR 1 /*'z)*97CF7A3ACBE0CA58D5391AC8377B5D9AC11D46D9)r  z)*6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4)r/   r0   r1   r2   r   mysql41r#   r4   r5   rJ   r7   r-   r8   r)   r  r  j  s=    llG
 	LYC
 	@ 
AB$ 	4!r8   r  c            	       j    ] tR tRt]P
                  tR]! R4      3R]! R4      3R	R
RRRRR.	tR.t	Rt
R# )nthash_testi  r9   6677b2c394311355b54f25eec5bfacf5r;   256781a62031289d3c2c98c14f1efc8c 7f8fe03093cc84b267b109625f6bbfxbr-   N)ro    31d6cfe0d16ae931b73c59d7e0c089c0)tigger b7e0ea9fbffcf6dd83086e905089effd)   ü 8bd6e4fb88e01009818749c5443ea712)s   üü cc1260adb6985ca749f150c7e0b22063)s   € 030926b781938db4365d46adc7cfbcb8)s   €€ 682467b963bb4e61943e170a04f7db46)rH    7f8fe03093cc84b267b109625f6bbf4b)r/   r0   r1   r2   r   nthashr#   r   r5   rJ   r7   r-   r8   r)   r  r    sY    kkG 
<=>	<=> 	16 	:A=H
 	;1: 	+!r8   r  c                   <    ] tR tRt]P
                  tRR.tR.tRt	R# )bsd_nthash_testi  z$$3$$7f8fe03093cc84b267b109625f6bbfxbr-   N)rH   z$$3$$7f8fe03093cc84b267b109625f6bbf4b)r  z$$3$$8bd6e4fb88e01009818749c5443ea712)
r/   r0   r1   r2   r   
bsd_nthashr#   r5   rJ   r7   r-   r8   r)   r  r    s(    ooG 	?= 3!r8   r  c                   |    ] tR tRt]P
                  tRtRtR]	! R4      ]	! R4      3R3RRRRRRR]
R3R3.
tR.tR	tR
# )oracle10_testi  TttTiGGeRScO7AA1A84E31ED7771SystemB915A853F297B281F894844C34402B6Zr-   N))tigerscottF894844C34402B67))d_syspwSYSTEM1B9F1F9A5CB9EB31))strat_passwd
strat_userAEBEDBB4EFB5225B))z#95LWEIGHTSUSER000EA4D72A142E29))CIAO2010ALFREDOEB026A76F0650F7B))GLOUGlouBobCDC6B483874B875B))GLOUGLOUTERbOBEF1F9139DB2D5279))LONG_MOT_DE_PASSE_OUIBOBEC8147ABB3373D53)r/   r0   r1   r2   r   oracle10r#   rE  rs  r   r4   r5   rJ   r7   r-   r8   r)   r  r    sq    mmG"  	1
J-5	"$673<
 	65
 	24>
 x	 "457@  !r8   r  c                   D    ] tR tRt]P
                  tRRRRR	R
]R3.tRt	R# )oracle11_testi  z>S:51586343E429A6DF024B8F242F2E9F8507B1096FACD422E29142AA4974B0r-   N)abc123z>S:5FDAB69F543563582BA57894FE1C1361FB8ED57B903603F2C52ED1B4D642)zSyStEm123!@#z>S:450F957ECBE075D2FA009BA822A9E28709FBC3DA82B44D284DDABEC14C42)oraclez>S:3437FF72BD69E3FB4D10C750B92B8FB90B155E26227B9AB62D94F54E5951)11gz>S:61CE616647A4F7980AFD7C7245261AF25E0AFE9C9763FCF0D54DA667D4E6)r"  z>S:B9E7556F53500C8C78A58F50F24439D79962DE68117654B6700CE7CC71CF)SHAlalaz>S:2BFCFDF5895014EE9BB2B9BA067B01E0389BB5711B7B5F82B7235E9E182C)
r/   r0   r1   r2   r   oracle11r#   r4   r5   r7   r-   r8   r)   r  r    s6    mmG 	UZTQQ
 	V
 
VW%r8   r  c                   R    ] tR tRt]P
                  tRRRR	R
RRRRR]R3.tR.t	Rt
R# )phpass_testi  z"$P$7SMy8VxnfsIy2Sxm7fJxDSdil.h7TW.z"$P$9IQRaTwmfeRo7ud9Fh4E2PdI0S3r!L0r-   N)	test12345z"$P$9IQRaTwmfeRo7ud9Fh4E2PdI0S3r.L0)r^  z"$H$9aaaaaSXBjgypwqm.JsMssPLiS8YQ00)123456z"$H$9PE8jEklgZhgLmZl5.HYJAzfGCQtzi1)r(  z"$H$9pdx7dbOW3Nnt32sikrjAxYFjX8XoK1)thisisalongertestPWz"$P$912345678LIjjb6PhecupozNBmDndU0)
JohnRipperz"$P$612345678si5M0DDyPpmRCmcltU/YW/)r*  z"$H$712345678WhEyvy1YWzT4647jzeOmo0)r*  z"$P$B12345678L6Lpt4BxNotVIMILOa9u81)ro   z"$P$7JaFQsPzJSuenezefD/3jHgt5hVfNH0)zcompL3X!z"$P$FiS0N5L672xzQx1rt1vgdJQRYKnQM9/)r/   r0   r1   r2   r   phpassr#   r4   r5   r6   r7   r-   r8   r)   r&  r&    sO    kkG 	<
 	888E<<<
 	3: 
:;3
> 	-
r8   r&  c                   n    ] tR tRt]P
                  tRtRR]]	'       d   ]M]
3]
]	'       d   ]M]
3.tRtR# )plaintext_testi#  Tr-   N)ro   ro   r  )r/   r0   r1   r2   r   	plaintextr#   accepts_all_hashesr4   r   r  r5   r7   r-   r8   r)   r-  r-  #  s;    nnG 	  
Sko>	+/Br8   r-  c                   H    ] tR tRt]P
                  tRRR	]R3R3.tR.t	Rt
R# )
postgres_md5_testi4  postgres#md5cb9f11283265811ce076db86d18a22d2#md54zc31989b20437833f697e485811254br-   N))r  r2  #md55fba2ea04fd36069d2574ea71c8efe9d))r  rk  #md540c31989b20437833f697e485811254b))testpasswordtestuser#md5d4fc5129cc2c25465a5370113ae9835f)r/   r0   r1   r2   r   postgres_md5r#   r4   r5   rJ   r7   r-   r8   r)   r1  r1  4  s>    G 	HCL z	"$IJ& 	.!r8   r1  c                   L    ] tR tRt]P
                  tRR]R3.t. ROt	. ROt
RtR# )	_sha1_crypt_testiO  z1$sha1$40000$uJ3Sp7LE$.VEmLO5xntyRFYihC7ggd3297T/DNr-   )r   z1$sha1$19703$iVdJqfSE$v4qYKl1zqYThwpjJAoKX6UvlHq/a)r   z1$sha1$21773$uV7PTeux$I9oHnvwPZHMO0Nq6/WgyGV/tDJIH)z1$sha1$21773$u!7PTeux$I9oHnvwPZHMO0Nq6/WgyGV/tDJIHz1$sha1$01773$uV7PTeux$I9oHnvwPZHMO0Nq6/WgyGV/tDJIHz2$sha1$21773$uV7PTeux$I9oHnvwPZHMO0Nq6/WgyGV/tDJIH$z-$sha1$$uV7PTeux$I9oHnvwPZHMO0Nq6/WgyGV/tDJIH$))netbsdT)zfreebsd|openbsd|solaris|darwinFrx   )r/   r0   r1   r2   r   
sha1_cryptr#   r4   r5   r6   r|   r7   r-   r8   r)   r<  r<  O  s5    ooG 	JI	IJr8   r<  c                   ,   a  ] tR tRt o R tR tRtV tR# )RoundupTesti{  c                    V P                  VP                  W#4      4       V P                  VP                  R V,           V4      4       R# )r  N)r^   r_   ra   )rE   r  rd   r   s   &&&&r)   
_test_pairRoundupTest._test_pair}  s4    ./#f*d34r8   c                P   V P                  \        P                  R R4       V P                  \        P                  R R4       V P                  \        P                  R R4       V P                  \        P
                  R R4       V P                  \        P                  R R4       R# )sekritz-{SHA}8d42e738c7adee551324955458b5e2c0b49ee655z%{MD5}ccbc53f4464604e714f69dd11138d8b5z{CRYPT}nFia0rj2TT59Az{plaintext}sekritzD{PBKDF2}5000$7BvbBq.EZzz/O0HuwX3iP.nAG3s$g3oPnFFaga2BJaX5PoPRljl4XIEN)rB  r   ldap_hex_sha1ldap_hex_md5ldap_des_cryptroundup_plaintextldap_pbkdf2_sha1rD   s   &r)   
test_pairsRoundupTest.test_pairs  s    ;	=
 	3	5
 	"	$
 	""	!
 	!!R	Tr8   r-   N)r/   r0   r1   r2   rB  rK  r7   rL   r   s   @r)   r@  r@  {  s     5T Tr8   r@  c                       ] tR tRt]P
                  tRR	R
RRRRRRR]! R4      R3.t]	! R4      '       d   ]P                  . RO4       . ROt. ROtRt. ROtRtR# )_sha256_crypt_testi  u   with unicÖdezK$5$rounds=1000$IbG0EuGQXw5EkMdP$LQ5AfPf13KufFsKtmazqnzSGZ4pxtUNw3woQ.ELRDF4fullTNr-   )rh   z?$5$LKO/Ute40T3FNF95$U0prpBQd4PloSGU0pnpM4z9wKn4vZ1.jsrzQfPqxph9)ri   z?$5$LKO/Ute40T3FNF95$fdgfoJEBoMajNxCv3Ru9LyQ0xZgv0OBMQoq80LQ/Qd.)rj   z?$5$LKO/Ute40T3FNF95$8Ry82xGnnPI/6HtFYnvPBTYgOL23sdMXn8C29aO.x/A)rk   z?$5$9mx1HkCz7G1xho50$O7V7YgleJKLUhcfk9pgzdh3RapEaWqMtEp9UUBAKIPA)ro   z?$5$kc7lRD1fpYg0g.IP$d7CMTcEqJyTXyeq8hTdu/jB/I6DGkoo62NXbHIR7S43)ro   zL$5$rounds=10428$uy/jIAhCetNCTtb0$YWvUOXbkqlqhyoPMpN8BMe.ZGsGx2aBvxTvDFI613c3)rp   zL$5$rounds=10376$I5lNtXtRmf.OoMd8$Ko3AI1VvTANdyKhBPavaRjJzNpSatKU6QVN9uwS9MH.)r\   zL$5$rounds=11858$WH1ABM5sKhxbkgCK$aTQsjPkz0rBsH3lQlJxw9HDTDXPKBxC0LlVeV69P.t1)r   zL$5$rounds=10350$o.pwkySLCzwTdmQX$nCMVsnF3TXWcBPOympBUUSQi6LGGloZoOsVJMGJ09UB)r   zL$5$rounds=11944$9dhlu07dQMRWvTId$LyUI5VWkGFwASlzntk1RLurxX54LUhgAcJZIt0pYGT7)	)rd   z?$5$rounds=1004$nacl$oiWPbm.kQ7.jTCZoOtdv7/tO5mWv/vxw5yTqlBagVR7)rd   z?$5$rounds=1005$nacl$6Mo/TmGDrXxg.bMK9isRzyWH3a..6HnSVVsJMEX7ud/)rd   z?$5$rounds=1006$nacl$I46VwuAiUBwmVkfPFakCtjVxYYaOJscsuIeuZLbfKID)rd   z?$5$rounds=1007$nacl$9fY4j1AV3N/dV/YMUn1enRHKH.7nEL4xf1wWB6wfDD4)rd   z?$5$rounds=1008$nacl$CiFWCfn8ODmWs0I1xAdXFo09tM8jr075CyP64bu3by9)rd   z?$5$rounds=1009$nacl$QtpFX.CJHgVQ9oAjVYStxAeiU38OmFILWm684c6FyED)rd   z?$5$rounds=1010$nacl$ktAwXuT5WbjBW/0ZU1eNMpqIWY1Sm4twfRE1zbZyo.B)rd   z?$5$rounds=1011$nacl$QJWLBEhO9qQHyMx4IJojSN9sS41P1Yuz9REddxdO721)rd   z?$5$rounds=1012$nacl$mmf/k2PkbBF4VCtERgky3bEVavmLZKFwAcvxD1p3kV2)zL$5$rounds=10428$uy/:jIAhCetNCTtb0$YWvUOXbkqlqhyoPMpN8BMeZGsGx2aBvxTvDFI613c3zM$5$rounds=010428$uy/jIAhCetNCTtb0$YWvUOXbkqlqhyoPMpN8BMe.ZGsGx2aBvxTvDFI613c3zM$5$rounds=10428$uy/jIAhCetNCTtb0$YWvUOXbkqlqhyoPMpN8BMe.ZGsGx2aBvxTvDFI613c3$))z$5$saltstringHello world!z9$5$saltstring$5B8vYYiY.CVt1RlTTf8KbXBH3hsxY/GNooZaBBGWEc5)z$$5$rounds=10000$saltstringsaltstringrP  zL$5$rounds=10000$saltstringsaltst$3xv.VbSHBb41AL9AvLeujZkZRBAwqFMz2.opqey6IcA)z $5$rounds=5000$toolongsaltstringThis is just a testzK$5$rounds=5000$toolongsaltstrin$Un/5jzAHMgOGZ5.mWJpuVolil07guHPvOW8mGRcvxa5)z$$5$rounds=1400$anotherlongsaltstringTa very much longer text to encrypt.  This one even stretches over morethan one line.zK$5$rounds=1400$anotherlongsalts$Rx.j8H.h8HjEDGomFU8bDkXm3XIUnzyxf12oP84Bnq1)z$5$rounds=77777$short4we have a short salt string but not a short passwordzA$5$rounds=77777$short$JiO1O3ZpDAxGJeaDIuqCoEFysAe1mZNJRs3pw0KQRd/)z!$5$rounds=123456$asaltof16chars..a short stringzM$5$rounds=123456$asaltof16chars..$gP3VQ/6X7UUEW3HkBn2w1/Ptq2jxPyzV/cZKmF/wJvD)z$5$rounds=10$roundstoolow$the minimum number is still observedzG$5$rounds=1000$roundstoolow$yfvwcWrQ8l/K0DAWyuPMDNHpIVlTQebY9l/gL972bIC))zfreebsd(9|1\d)|linuxT)freebsd8N)zfreebsd|openbsd|netbsd|darwinF)rw   N)r/   r0   r1   r2   r   sha256_cryptr#   r   r5   r   extendr6   known_correct_configsfilter_config_warningsr|   r7   r-   r8   r)   rN  rN    s    G 	XVWWO
 	]]`q 	B	
	!no%
* 
 	## 
%
 
		< "r8   rN  c                   x    ] tR tRt]P
                  tRR	R
RRRRRRR]R3.tRR.t	. ROt
Rt]P                  tRtR# )_sha512_crypt_testi   zw$6$rounds=40000$PEZTJDiyzV28M3.m$GTlnzfzGB44DGd1XqlmC4erAJKCP.rhvLvrYxiT38htrNzVGBnplFOHjejUGVrCfusGWxLQCc3pFO0A/1jYYr0zx$6$rounds=011021$KsvQipYPWpr93wWP$v7xjI4X6vyVptJjB1Y02vZC5SaSijBkGmq1uJhPr3cvqvvkd42Xvo48yLVPFt8dvhCsnlUgpX.//Cxn91H4qy1zw$6$rounds=11021$KsvQipYPWpr9:wWP$v7xjI4X6vyVptJjB1Y02vZC5SaSijBkGmq1uJhPr3cvqvvkd42Xvo48yLVPFt8dvhCsnlUgpX.//Cxn91H4qy1Tr-   N)rh   zj$6$LKO/Ute40T3FNF95$6S/6T2YuOIHY0N3XpLKABJ3soYcXD9mB7uVbtEZDj/LNscVhZoZ9DEH.sBciDrMsHOWOoASbNLTypH/5X26gN0)ri   zj$6$LKO/Ute40T3FNF95$wK80cNqkiAUzFuVGxW6eFe8J.fSVI65MD5yEm8EjYMaJuDrhwe5XXpHDJpwF/kY.afsUs1LlgQAaOapVNbggZ1)rj   zj$6$LKO/Ute40T3FNF95$YS81pp1uhOHTgKLhSMtQCr2cDiUiN03Ud3gyD4ameviK1Zqz.w3oXsMgO6LrqmIEcG3hiqaUqHi/WEE2zrZqa/)rk   zj$6$OmBOuxFYBZCYAadG$WCckkSZok9xhp4U1shIZEV7CCVwQUwMVea7L3A77th6SaE9jOPupEMJB.z0vIWCDiN9WLh2m9Oszrj5G.gt330)ro   zj$6$ojWH1AiTee9x1peC$QVEnTvRVlPRhcLQCk/HnHaZmlGAAjCfrAN0FtOsOnUk5K5Bn/9eLHHiRzrTzaIKjW9NTLNIBUCtNVOowWS2mN.)ro   zw$6$rounds=11021$KsvQipYPWpr93wWP$v7xjI4X6vyVptJjB1Y02vZC5SaSijBkGmq1uJhPr3cvqvvkd42Xvo48yLVPFt8dvhCsnlUgpX.//Cxn91H4qy1)rp   zw$6$rounds=11104$ED9SA4qGmd57Fq2m$q/.PqACDM/JpAHKmr86nkPzzuR5.YpYa8ZJJvI8Zd89ZPUYTJExsFEIuTYbM7gAGcQtTkCEhBKmp1S1QZwaXx0)r\   zw$6$rounds=11531$G/gkPn17kHYo0gTF$Kq.uZBHlSBXyzsOJXtxJruOOH4yc0Is13uY7yK0PvAvXxbvc1w8DO1RzREMhKsc82K/Jh8OquV8FZUlreYPJk1)r   zw$6$rounds=10787$wakX8nGKEzgJ4Scy$X78uqaX1wYXcSCtS4BVYw2trWkvpa8p7lkAtS9O/6045fK4UB2/Jia0Uy/KzCpODlfVxVNZzCCoV9s2hoLfDs/)r   zw$6$rounds=11065$5KXQoE1bztkY5IZr$Jf6krQSUKKOlKca4hSW07MSerFFzVIZt/N3rOTsUgKqp7cUdHrwV8MoIVNCk9q9WL3ZRMsdbwNXpVk0gVxKtz1))z$6$saltstringrP  zd$6$saltstring$svn8UoSVapNtMuq1ukKS4tPQd8iKwSMHWjl/O817G3uBnIFNjnQJuesI68u4OTLiBFdcbYEdFCoEOfaS35inz1)z$$6$rounds=10000$saltstringsaltstringrP  zw$6$rounds=10000$saltstringsaltst$OW1/O6BYHV6BcXZu8QVeXbDWra3Oeqh0sbHbbMCVNSnCM/UrjmM0Dp8vOuZeHBy/YTBmSK6H9qs/y3RnOaw5v.)z $6$rounds=5000$toolongsaltstringrQ  zv$6$rounds=5000$toolongsaltstrin$lQ8jolhgVRVhY4b5pZKaysCLi0QBxGoNeKQzQ3glMhwllF7oGDZxUhx1yxdYcz/e1JSbq3y6JMxxl8audkUEm0)z$$6$rounds=1400$anotherlongsaltstringrR  zv$6$rounds=1400$anotherlongsalts$POfYwTEok97VWcjxIiSOjiykti.o/pQs.wPvMxQ6Fm7I6IoYN3CmLs66x9t0oSwbtEW7o7UmJEiDwGqd8p4ur1)z$6$rounds=77777$shortrS  zl$6$rounds=77777$short$WuQyW2YR.hBNpjjRhpYD/ifIw05xdfeEyQoMxIXbkvr0gge1a1x3yRULJ5CCaUeOxFmtlcGZelFl5CxtgfiAc0)z!$6$rounds=123456$asaltof16chars..rT  zx$6$rounds=123456$asaltof16chars..$BtCwjqMJGx5hrJhZywWvt0RLE8uZ4oPwcelCjmw2kSYu.Ec6ycULevoBK25fs2xXgMNrCzIMVcgEJAstJeonj1)z$6$rounds=10$roundstoolowrU  zr$6$rounds=1000$roundstoolow$kUMsbe306n21p9R.FRkW3IGn.S9NPN0x50YhH1xhLsPuWGsUSklZt58jaTfF4ZEQpyUNGc0dqbpBYYBaHHrsX.)r/   r0   r1   r2   r   sha512_cryptr#   r4   r5   r6   rY  rZ  rN  r|   r7   r-   r8   r)   r\  r\     s    G 	C 	B 	C 	Cz
 	H 	I 	L 	] 	m 
  P  	Q)
2 	C 	B	$L "/FFr8   r\  c                   h   a  ] tR tRt o ]P
                  tRRRR	]R3.t. R
Ot	. ROt
RR.tR tRtV tR# )sun_md5_crypt_testiR  z1$md5,rounds=5000$10VYDzAA$$1arAVtMA3trgE1qJ2V0Ez1c                    \        V\        4      '       d$   VP                  ! R 4      '       d   \        R4      hV P                  P                  W4      # )z$.................DUMMYz,pretending '$...' stub hash is config string)r   strendswithrB   r#   r_   )rE   rd   r   s   &&&r)   	do_verifysun_md5_crypt_test.do_verify  sA     dC  T]]3L%M%MKLL||""600r8   r-   N)	Gpcs3_admz%$md5$zrdhpMlZ$$wBvMOEqbSjU.hu5T2VEP01)
aa12345678z%$md5$vyy8.OVF$$FY4TWzuauRl4.VQNobqMY.)this%$md5$3UqYqndY$$6P.aaWOoucxxq.l00SS9k0)passwdz$$md5$RPgLF6IJ$WTvAlUJ7MqH5xak2FMEwS/))z$md5$3UqYqndY$rg  rh  )z%$md5$3UqYqndY$$.................DUMMYrg  rh  )z$md5$3UqYqndYrg  $$md5$3UqYqndY$HIZVnfJNGCPbDZ9nIRSgP1)z$$md5$3UqYqndY$.................DUMMYrg  rj  )	z$md5,rounds=5000z$md5,rounds=500A$xxxxz$md5,rounds=0500$xxxxz$md5,rounds=0$xxxxz$$md5$RPgL!6IJ$WTvAlUJ7MqH5xak2FMEwS/z#$md5$RPgLa6IJ$WTvAlUJ7MqH5xak2FMEwSz%$md5$RPgLa6IJ$WTvAlUJ7MqH5xak2FMEwS/.z$md5$3UqYqndY$$z&$md5$RPgLa6IJ$$$WTvAlUJ7MqH5xak2FMEwS/)rw   T)z#freebsd|openbsd|netbsd|linux|darwinF)r/   r0   r1   r2   r   sun_md5_cryptr#   r4   r5   rY  r6   r|   rc  r7   rL   r   s   @r)   r_  r_  R  sd       G 	?
 	@
 	:
 	;& 
IJM'
R:
: 	61 1r8   r_  c                   d   a a ] tR tRt o]P
                  tR]R3.t. ROt	V 3R lt
R tRtVtV ;t# )unix_disabled_testi  *c                :   < R V n         \        \        V `  4        R# )TN)r/  rU   rm  test_76_hash_borderrE   rY   s   &r)   rp  &unix_disabled_test.test_76_hash_border  s    "& $;=r8   c                h   \         P                  ! RR4       V P                  pV P                  VP	                  RR4      R4       V P                  VP	                  RR4      VP
                  4       V P                  VP                  R4      VP
                  4       V P                  VP                  4       P
                  VP
                  4       V P                  VP	                  RRRR7      R4       V P                  VP                  RRR7      R4       V P                  VP                  RR7      P                  R4      R4       V P                  \        VP                  RRRR7       V P                  \        VP                  RRR7       V P                  \        VP                  RR7       R	# )
z%test marker option & special behaviorrR   z-passing settings to .*.hash\(\) is deprecatedr]   !asdro   z*xxx)markerabcN)
rS   rT   r#   r   genhashdefault_markerr   usingrA   rB   rE   r#   s   & r)   test_90_special"unix_disabled_test.test_90_special  sT   *YZ,, 	8&A 	4g6L6LMf-w/E/EF779O9OP 	FCVLfV<fEf5::6BFK 	*goovr%P*gllF5I*gmmEBr8   )r/  r   !)z$1$xxxrv  z./azz{SHA}xxx)r/   r0   r1   r2   r   unix_disabledr#   r4   r5   rJ   rp  r{  r7   rL   r}   r~   s   @@r)   rm  rm    s>       G 		c	!>
C Cr8   rm  c                   f   a a ] tR tRt o]P
                  tRtR]R3.t	V 3R lt
R tR tRtVtV ;t# )	unix_fallback_testi  Tr~  c                Z   < \         \        V `  4        \        P                  ! R R4       R# )rR   z'unix_fallback' is deprecatedN)rU   r  setUprS   rT   rq  s   &r)   r  unix_fallback_test.setUp  s"     $-/*IJr8   c           	     @   V P                   pV P                  VP                  RRRR7      4       V P                  VP                  RR4      4       R FG  pV P                  VP                  RVRR7      4       V P                  VP                  RV4      4       KI  	  R# )ztest enable_wildcard flagr   ro   T)enable_wildcardz!*xN)r#   r^   r_   ra   )rE   r  cs   &  r)   test_90_wildcard#unix_fallback_test.test_90_wildcard  s    LLBEF*R01AQXXjDXIJQXXj34 r8   c                    V P                   pV P                  VP                  RR4      R4       V P                  VP                  R4      R4       V P                  VP                  RR4      R4       R# )z%test preserves existing disabled hashr]   ro   r~  rt  N)r#   r   rw  r   rz  s   & r)   test_91_preserves_existing-unix_fallback_test.test_91_preserves_existing  s^    ,, 	4c:f-s3 	8&Ar8   r-   r}  )r/   r0   r1   r2   r   unix_fallbackr#   r/  r4   r5   r  r  r  r7   rL   r}   r~   s   @@r)   r  r    sB       G 		cK5	B 	Br8   r  )django_bcryptdjango_bcrypt_sha256django_argon2)test_handlerstest_handlers_argon2test_handlers_bcrypttest_handlers_ciscotest_handlers_djangotest_handlers_pbkdf2test_handlers_scrypt)argon2bcryptbcrypt_sha256)^rz   
__future__r   logging	getLoggerr/   logosr   rS   passlibr   r   passlib.utilsr   r3  r   r   r   r	   passlib.tests.utilsr
   r   r   r   r   r   r   r   r4   r  r   r   r*   r   r,   r:   rP   create_backend_casebsdi_crypt_os_crypt_testbsdi_crypt_builtin_testr   r   des_crypt_os_crypt_testdes_crypt_builtin_testr   r   r   r   r   r   r   r   r   r   r  r  r  r  r  ldap_md5_crypt_os_crypt_testldap_md5_crypt_builtin_testr  ldap_sha1_crypt_os_crypt_testr'  rG  md5_crypt_os_crypt_testmd5_crypt_builtin_testrM  rv  r  r  r  r  r  r  r  r  r&  r-  r1  r<  sha1_crypt_os_crypt_testsha1_crypt_builtin_testr@  rN  sha256_crypt_os_crypt_testsha256_crypt_builtin_testr\  sha512_crypt_os_crypt_testsha512_crypt_builtin_testr_  rm  r  r-   r8   r)   <module>r     s   E & g''1 	 
   ' D D: : :;	o	+,: T  &PT "G 

 
2$4K $4RH9{ H9V ,??
K *>>yI 

; 
8,k ,^ *==jI (<<YG 
MB MBd; &W; &WRK k 	k 	"$k "NK [ ; 0K 2k :k >+ 8
; 
4 3FFzR 1EEiP (K ($ !6 I I* U 
.4& .4f1k 1h *==jI (<<YG 
8!; 8t"K FQ[ QfT[ Tr"CK "CH; 4!+ !Fk  '$k 'RK 6#
+ #
P[ "(+ 6{ B ,??
K *>>yI T( TFY Yx 0CCJO .BB9M 
IG IGX 0CCJO .BB9M 
p1 p1j-C -C^!B !Br8   