Ë
    àU.j ã                   óº  — d Z ddlmZ ddlZ ej                  e«      ZddlZddlZddl	Z	ddl
mZmZ ddlmZ ddlmZmZmZmZ ddlmZmZmZmZmZmZ  ed«      Z ed	«      Z ed
«      ZdZg d¢Zg d¢Z d„ Z!g d¢Z" G d„ de«      Z# G d„ de«      Z$ G d„ de«      Z%e%jM                  d«      Z'e%jM                  d«      Z( G d„ de«      Z) G d„ de«      Z*e*jM                  d«      Z+e*jM                  d«      Z, G d„ de«      Z- G d„ de«      Z. G d „ d!e«      Z/ G d"„ d#e«      Z0 G d$„ d%e«      Z1 G d&„ d'e«      Z2 G d(„ d)ee«      Z3 G d*„ d+e«      Z4 G d,„ d-e«      Z5 G d.„ d/e«      Z6 G d0„ d1e«      Z7 G d2„ d3e«      Z8 G d4„ d5e«      Z9 G d6„ d7e«      Z: G d8„ d9e«      Z;e;jM                  d«      Z<e;jM                  d«      Z= G d:„ d;e«      Z>e>jM                  d«      Z? G d<„ d=ee«      Z@ G d>„ d?e«      ZAeAjM                  d«      ZBeAjM                  d«      ZC G d@„ dAee«      ZD G dB„ dCee«      ZE G dD„ dEe«      ZF G dF„ dGe«      ZG G dH„ dIe«      ZH G dJ„ dKe«      ZI G dL„ dMe«      ZJ G dN„ dOe«      ZK G dP„ dQee«      ZL G dR„ dSe«      ZM G dT„ dUe«      ZN G dV„ dWe«      ZO G dX„ dYee«      ZP G dZ„ d[e«      ZQeQjM                  d«      ZReQjM                  d«      ZS G d\„ d]e«      ZT G d^„ d_e«      ZUeUjM                  d«      ZVeUjM                  d«      ZW G d`„ dae«      ZXeXjM                  d«      ZYeXjM                  d«      ZZ G db„ dce«      Z[ G dd„ dee«      Z\ G df„ dge«      Z]y)hz?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Ã¡Ð‘â„“É™)Ú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_scryptc                 ó€  — ddl m}  || «      }t        |d«      r"| t        vr	 |j	                  «       }| ›d|›d�}nd| z  }t        D ]3  }d|z   }t        |«       t        j                  |   }	 t        ||«      c S  t        d|›d	| ›�«      ‚# t
        j                  $ r | t        v sJ ‚‚ w xY w# t        $ r Y Œtw xY w)
al  
    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)
    r   )Ú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           ú]C:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\passlib/tests/test_handlers.pyÚget_handler_caser5   -   sÖ   € õ 3Ù Ó'€GÜˆw˜
Ô#¨Ô6LÑ(Lð	Ø×)Ñ)Ó+ˆGò  &¢wÐ/‰à˜6Ñ!ˆß'ˆØ" VÑ+ˆÜ�7ÔÜ�k‰k˜'Ñ"ˆð	Ü˜3 Ó%Ò%ð (õ ÂÁvÐNÓ
OÐOøô! ×&Ñ&ò 	ØÔ;Ñ;Ð;Ð;Øð	ûô ò 	Ùð	ús   ¤B Á/B1ÂB.Â1	B=Â<B=)Úargon2ÚbcryptÚbcrypt_sha256c                   ó6   — e Zd Zej                  ZdedfgZdgZy)Úapr_md5_crypt_test)Ú
myPasswordz%$apr1$r31.....$HqJZimcKQFAMYayBlzkrA/z%$apr1$bzYrOHUx$a1FcpXuQDJV3vPY20CS6N1z%$apr1$r31.....$HqJZimcKQFAMYayBlzkrA!N)	Ú__name__Ú
__module__Ú__qualname__r   Úapr_md5_cryptr.   ÚUPASS_TABLEÚknown_correct_hashesÚknown_malformed_hashes© ó    r4   r:   r:   \   s3   „ Ø× Ñ €Gð 	@ð 
Ð=Ð>ð
Ðð  4ð
ÑrD   r:   c                   ó’   — e Zd Zej                  ZddedfgZdgZe	j                  D � �cg c]  }|d   dk7  r|‘Œ c}} Z
d„ Zyc c}} w )	Úbigcrypt_test)Ú
passphraseÚqiyh4XPJGsOZ2MEAyLkfWqeQ)zThis is very long passwdz#f8.SVpL2fvwjkAnxn8/rgTkwvrif6bjYB5cÚSEChBAyMbMNhgGLyP7kD1HZUz;qiyh4XPJGsOZ2MEAyLkfWqef8.SVpL2fvwjkAnxn8/rgTkwvrif6bjYB5cdr   Ú	des_cryptc                 ód   — | j                  t        t        j                  dt	        d«      ¬«       y )NTÚ
yh4XPJGsOZ)Úuse_defaultsÚchecksum)ÚassertRaisesÚ
ValueErrorr   Úbigcryptr	   ©Úselfs    r4   Útest_90_internalzbigcrypt_test.test_90_internal•   s(   € ð 	×Ñœ*¤d§m¡mÀ$Ü#$ \£?ð 	õ 	4rD   N)r<   r=   r>   r   rQ   r.   r@   rA   Úknown_unidentified_hashesr   Úknown_other_hashesrT   )Ú.0Úrows   00r4   rF   rF   u   sp   „ Ø�m‰m€Gð 	AØKð 
Ð0Ð1ðÐð$	/ð!Ðð *5×)GÒ)Gô 4Ñ)G #Ø  ™V {Ò2ò Ð)Gò 4Ðó4ùó4s   ªArF   c                   óz   ‡ — e Zd ZdZej
                  Zdddddddd	d
ddddddddedfgZdgZ	g d¢Z
ˆ fd„Zd„ Zˆ xZS )Ú_bsdi_crypt_testztest BSDiCrypt algorithm)ú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/2qeAhdISMAz_7C/.ABw0WIKy0ILVqo2z_K1.!crsmZxOLzfJH8iw)©zopenbsd[6789]F©Úopenbsd5N©ÚopenbsdT)zfreebsd|netbsd|darwinT)ÚsolarisF©ÚlinuxNc                 óX   •— t        j                  dd«       t        t        | �  di |¤Ž y )NÚignorez!bsdi_crypt rounds should be odd.*rC   )ÚwarningsÚfilterwarningsÚsuperrZ   Útest_77_fuzz_input©rS   ÚkwdsÚ	__class__s     €r4   rr   z#_bsdi_crypt_test.test_77_fuzz_inputÐ   s'   ø€ ä×Ñ Ð*MÔNÜÔ Ñ8Ñ@¸4Ó@rD   c                 óŽ  — | j                   }d}d}d}| j                  |j                  ||«      «       | j                  |j                  ||«      «       | j                  |j                  |«      «       | j	                  |j                  |«      «       |j                  d«      }| j	                  |j                  |«      «       y)z&needs_update() should flag even roundsz_Y/../cG0zkJa6LY6k4cz_Z/..TgFg0/ptQtpAgwsÚtestÚstubN)r.   Ú
assertTrueÚverifyÚneeds_updateÚassertFalser   )rS   r.   Ú	even_hashÚodd_hashÚsecretÚnew_hashs         r4   Útest_needs_update_w_even_roundsz0_bsdi_crypt_test.test_needs_update_w_even_roundsÕ   s¥   € à—,‘,ˆØ*ˆ	Ø)ˆØˆð 	�‰˜Ÿ™ v¨yÓ9Ô:Ø�‰˜Ÿ™ v¨xÓ8Ô9ð 	�‰˜×,Ñ,¨YÓ7Ô8Ø×Ñ˜×-Ñ-¨hÓ7Ô8ð —<‘< Ó'ˆØ×Ñ˜×-Ñ-¨hÓ7Õ8rD   )r<   r=   r>   Ú__doc__r   Ú
bsdi_cryptr.   r@   rA   rU   Úplatform_crypt_supportrr   r�   Ú__classcell__©ru   s   @r4   rZ   rZ   ž   sz   ø„ Ù"Ø�o‰o€Gð 	-Ø+Ø,Ø,Ø-Ø4Ø5Ø-Ø-Ø2Ø,Ø$ð
 	&Ø&Ø,Ø/Ø4ð 
Ð,Ð-ð7Ðð@ 	ð!Ðò	ÐôAö
9rD   rZ   Úos_cryptÚbuiltinc            	       ó<   — e Zd Zej                  ZdddddddedfgZy	)
Úcrypt16_test)rG   zqi8H8R7OM4xMUNMPuRAZxlY.)ÚprintfÚaaCjFz4Sh8Eg2QSqAReePlq6)r‹   zAA/xje2RyeiSU0iBY3PDwjYo)ÚLOLOAQICI82QB4IPz/.FcK3mad6JwYt8LVmDqz9Lc)Ú	LOLOAQICIz/.FcK3mad6JwYSaRHJoTPzY2)ÚLOLOAQICz/.FcK3mad6JwYelhbtlysKy6)ÚLz/.CIu/PzYCkl6elhbtlysKy6ÚYeDc9tKkkmDvwP7buzpwhoqQN)r<   r=   r>   r   Úcrypt16r.   r@   rA   rC   rD   r4   rŠ   rŠ   ï   s5   „ Ø�l‰l€Gð 	4Ø3Ø3Ø8Ø3Ø3Ø3ð 
Ð0Ð1ð%
ÑrD   rŠ   c                   ód   — e Zd ZdZej
                  Zdddddddd	d
dd ed«      dfgZg d¢Z	g d¢Z
y)Ú_des_crypt_testztest des-crypt algorithm)r[   ÚCCNf8Sbh3HDfQ)r\   zCCX.K.MFy4Ois)r]   zCC4rMpbg9AMZ.)r^   ÚXXxzOu6maQKqQ)rb   ÚSDbsugeBiC58A)rb   ÚOgAwTx2l6NADI)rc   z/Hk.VPuwQTXbc)rw   ÚN1tQbOFcM5fpg)úCompl3X AlphaNu3mericzum.Wguz3eVCx2)ú%4lpHa N|_|M3r1K W/ Cur5Es: #$%(*)(*%#ÚsNYqfOyauIyic)ÚAlOtBsOlÚcEpWz5IUCShqMu   hellÃ–ÚsaykDgk3BPZ9E)z!gAwTx2l6NADIÚOgAwTx2l6NADÚOgAwTx2l6NADIj)re   rf   rh   )z#freebsd|netbsd|linux|solaris|darwinTN)r<   r=   r>   r‚   r   rJ   r.   r	   rA   rU   r„   rC   rD   r4   r”   r”     sY   „ Ù"Ø�n‰n€Gð 	&Ø$Ø%Ø%Øð
 	ØØ!Ø2ØBØ%ñ 
ˆ<‹˜/Ð*ð+
Ðò.!
ÐòÑrD   r”   c                   óP   — e Zd ZdZej
                  ZddddedfgZddgZ	g d	¢Z
d
„ Zy)Ú	fshp_testztest fshp algorithm)rw   z'{FSHP0|0|1}qUqP5cyxm6YcTAhz05Hph5gvu9M=)rw   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=zP{FSHP1|16|16384}9v6/l3Lu/d9by5nznpOScqQo8eKu/b/CKli3RCkgYg4nRTgZu5y659YV8cCZ68ULz'{FSHX0|0|1}qUqP5cyxm6YcTAhz05Hph5gvu9M=z&FSHP0|0|1}qUqP5cyxm6YcTAhz05Hph5gvu9M=)z&{FSHP0|0|1}qUqP5cyxm6YcTAhz05Hph5gvu9Mz'{FSHP0|1|1}qUqP5cyxm6YcTAhz05Hph5gvu9M=z'{FSHP0|0|A}qUqP5cyxm6YcTAhz05Hph5gvu9M=c                 ó¢  — | j                   }t        dd¬«      } |dddi|¤Ž  |ddt        d«      i|¤Ž  |dddi|¤Ž  |ddt        d«      i|¤Ž  |dddi|¤Ž  | j                  t        |fdd	i|¤Ž  | j                  t        |fdt        dd«      i|¤Ž  | j                  t        |fdd
i|¤Ž  | j                  t        |fddi|¤Ž y	)ztest variant keywordó   aé   )ÚsaltÚroundsÚvariantÚ1ó   1Úsha256s   sha256NÚ9é	   rC   )r.   Údictr	   rO   Ú	TypeErrorÚcomplexrP   )rS   r.   rt   s      r4   Útest_90_variantzfshp_test.test_90_variantu  sñ   € à—,‘,ˆÜ˜ aÔ(ˆñ 	Ñ"˜Ð"˜TÒ"ñ 	Ñ'œ˜#›Ð' $Ò'ÙÑ%˜Ð% Ò%ñ 	Ñ,œ˜(›Ð, tÒ,ÙÑ*˜	Ð* TÒ*ð 	ˆ×Ñœ) WÑC°dÐC¸dÒCð 	ˆ×Ñœ) WÑK´g¸aÀ³lÐKÀdÒKð 	ˆ×Ñœ* gÑC°sÐC¸dÒCØˆ×Ñœ* gÑA°qÐA¸DÓArD   N)r<   r=   r>   r‚   r   Úfshpr.   r@   rA   rU   rB   r´   rC   rD   r4   r£   r£   @  sX   „ ÙØ�i‰i€Gð 	<ð	ð
	ð	ð 
ð 8ð 	9ð9
ÐðD 	2Ø0ð!
Ðò	ÐóBrD   r£   c                   ó0   — e Zd Zej                  ZdedfgZy)Úhex_md4_test)ÚpasswordÚ 8a9d093f14f8701df17732b2bb182c74Ú 876078368c47817ce5f9115f3a42cf74N)r<   r=   r>   r   Úhex_md4r.   r@   rA   rC   rD   r4   r·   r·   ’  s   „ Ø�l‰l€Gà8Ø	Ð8Ð9ðÑrD   r·   c                   ó6   — e Zd Zej                  ZdedfgZd„ Zy)Úhex_md5_test)r¸   Ú 5f4dcc3b5aa765d61d8327deb882cf99Ú 05473f8a19f66815e737b33264a0d0b0c                 ó&  — ddl m} ddlm}m}  |dd¬«      j
                  }| j                  | j                  j
                  |«       |r |«        | j                  |d«       ddl	m
}  |dd¬«      }| j                  |j
                  «       d}d	}| j                  |j                  |«      «       | j                  |j                  |«      «       d
}	| j                  ||	|j                  d«       | j                  ||	|j                   d|«       y)zn
        if md5 isn't available, a dummy instance should be created.
        (helps on FIPS systems).
        r   )ÚUnknownHashError)Úlookup_hashÚ_set_mock_fips_modeÚmd5F)Úrequired)Úcreate_hex_hashr¾   Úxxxz'md5' hash disabled for fipsr¸   N)Úpasslib.excrÁ   Úpasslib.crypto.digestrÂ   rÃ   Ú	supportedÚassertEqualr.   Ú
addCleanupÚpasslib.handlers.digestsrÆ   r|   ry   ÚidentifyÚassertRaisesRegexr   rz   )
rS   rÁ   rÂ   rÃ   rÊ   rÆ   ÚhasherÚref1Úref2Úpats
             r4   Útest_mock_fips_modez hex_md5_test.test_mock_fips_mode¡  sé   € õ
 	1ßJñ   °Ô6×@Ñ@ˆ	Ø×Ñ˜Ÿ™×/Ñ/°Ô;ÙÙÔ!Ø�O‰OÐ/°Ô7õ 	=Ù  °Ô7ˆØ×Ñ˜×)Ñ)Ô*ð 2ˆØˆØ�‰˜Ÿ™¨Ó-Ô.Ø×Ñ˜Ÿ™¨Ó.Ô/ð -ˆØ×ÑÐ/°°f·k±kÀ:ÔNØ×ÑÐ/°°f·m±mÀZÐQUÕVrD   N)	r<   r=   r>   r   Úhex_md5r.   r@   rA   rÔ   rC   rD   r4   r½   r½   ™  s%   „ Ø�l‰l€Gà8Ø	Ð8Ð9ðÐóWrD   r½   c                   ó0   — e Zd Zej                  ZdedfgZy)Úhex_sha1_test)r¸   Ú(5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8Ú(e059b2628e3a3e2de095679de9822c1d1466e0f0N)r<   r=   r>   r   Úhex_sha1r.   r@   rA   rC   rD   r4   r×   r×   Â  s   „ Ø�m‰m€Gà@Ø	Ð@ÐAðÑrD   r×   c                   ó0   — e Zd Zej                  ZdedfgZy)Úhex_sha256_test)r¸   Ú@5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8Ú@6ed729e19bf24d3d20f564375820819932029df05547116cfc2cc868a27b4493N)r<   r=   r>   r   Ú
hex_sha256r.   r@   rA   rC   rD   r4   rÜ   rÜ   É  s   „ Ø�o‰o€GàXØ	ÐXÐYðÑrD   rÜ   c                   ó0   — e Zd Zej                  ZdedfgZy)Úhex_sha512_test)r¸   Ú€b109f3bbbc244eb82441917ed06d618b9008dd09b3befd1b5e07394c706a8bb980b1d7785e5976ec049b46df5f1326af5a2ea6d103fd07c95385ffab0cacbc86Ú€d91bb0a23d66dca07a1781fd63ae6a05f6919ee5fc368049f350c9f293b078a18165d66097cf0d89fdfbeed1ad6e7dba2344e57348cd6d51308c843a06f29cafN)r<   r=   r>   r   Ú
hex_sha512r.   r@   rA   rC   rD   r4   rá   rá   Ð  s'   „ Ø�o‰o€Gð	ð 
ð ð 	ð	ÑrD   rá   c                   óJ   — e Zd Zej                  ZdeeefdfgZ	ddgZ
d„ Zd„ Zy)Úhtdigest_test))zCircle Of LifeÚMufasaztestrealm@host.comÚ 939e7578ed9e3c518a452acee763bce9Ú 4dabed2727d583178777fab468dd1f17Ú 939e7578edAe3c518a452acee763bce9Ú 939e7578edxe3c518a452acee763bce9c                 ó$   — | j                  d«      ‚)Nz)test case doesn't support 'realm' keyword©ÚskipTestrR   s    r4   Útest_80_userzhtdigest_test.test_80_userõ  s   € Ø�m‰mÐGÓHÐHrD   c                 ó†   — t        |t        «      r|\  }}}nd\  }}|j                  d|«       |j                  d|«       |S )zinsert username into kwds)ÚuserÚrealmrñ   rò   )Ú
isinstanceÚtupleÚ
setdefault)rS   r   rt   rñ   rò   s        r4   Úpopulate_contextzhtdigest_test.populate_contextø  sB   € ä�fœeÔ$Ø"(ÑˆF�D™%à)‰KˆD�%Ø�‰˜ Ô%Ø�‰˜ Ô'ØˆrD   N)r<   r=   r>   r   Úhtdigestr.   r@   Ú	UPASS_USDÚ	UPASS_WAVrA   rU   rï   rö   rC   rD   r4   ræ   ræ   Þ  sI   „ Ø�m‰m€Gð	0ð �y )Ð	,Ø.ð	0ð
Ðð 	+ð 	+ð!ÐòIórD   ræ   c                   ó0   — e Zd Zej                  ZdedfgZy)Úldap_md5_test)Ú
helloworldú{MD5}/F4DjTilcDIIVEHn/nAQsA==z{MD5}BUc/ihn2aBXnN7MyZKDQsA==N)r<   r=   r>   r   Úldap_md5r.   r@   rA   rC   rD   r4   rû   rû     s   „ Ø�m‰m€Gà7Ø	Ð5Ð6ðÑrD   rû   c                   ó0   — e Zd Zej                  ZdedfgZy)Úldap_sha1_test)rü   z!{SHA}at+xg6SiyUovktq1redipHiJpaE=z!{SHA}4FmyYo46Pi3glWed6YIsHRRm4PA=N)r<   r=   r>   r   Ú	ldap_sha1r.   r@   rA   rC   rD   r4   r   r     s   „ Ø�n‰n€Gà;Ø	Ð9Ð:ðÑrD   r   c                   ó>   — e Zd Zej                  ZdedfdddgZg d¢Zy)Úldap_salted_md5_test)Útesting1234z"{SMD5}UjFY34os/pnZQ3oQOzjqGu4yeXE=z"{SMD5}Z0ioJ58LlzUeRxm3K6JPGAvBGIM=)rw   z&{SMD5}LnuZPJhiaY95/4lmVFpg548xBsD4P4cw)rw   z2{SMD5}XRlncfRzvGi0FDzgR98tUgBg7B3jXOs9p9S615qTkg==)rw   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===N)	r<   r=   r>   r   Úldap_salted_md5r.   r@   rA   rB   rC   rD   r4   r  r    s4   „ Ø×"Ñ"€Gà=Ø	Ð:Ð;ð 	;ØFØFðÐò
ÑrD   r  c                   ó@   — e Zd Zej                  ZddedfdddgZg d¢Zy)	Úldap_salted_sha1_test)Ú
testing123z&{SSHA}0c0blFTXXNuAMHECS4uxrj3ZieMoWImr)r   z&{SSHA}0H+zTv8o4MR4H43n03eCsvw1luG8LdB7z&{SSHA}3yCSD1nLZXznra4N8XzZgAL+s1sQYsx5)rw   z.{SSHA}P90+qijSp8MJ1tN25j5o1PflUvlqjXHOGeOckw==)rw   z6{SSHA}/ZMF5KymNM+uEOjW+9STKlfCFj51bg3BmBNCiPHeW2ttbU0=)rw   z6{SSHA}Pfx6Vf48AT9x3FVv8znbo8WQkEVSipHSWovxXmvNWUvp/d/7)z&{SSHA}ZQK3Yvtvl6wtIRoISgMGPkcWU7Nfq5U=z+{SSHA}P90+qijSp8MJ1tN25j5o1PflUvlqjXHOGeOckz-{SSHA}P90+qijSp8MJ1tN25j5o1PflUvlqjXHOGeOckw=z.{SSHA}P90+qijSp8MJ1tN25j5o1Pf=UvlqjXHOGeOckw==z.{SSHA}P90+qijSp8MJ1tN25j5o1PflUvlqjXHOGeOck===N)	r<   r=   r>   r   Úldap_salted_sha1r.   r@   rA   rB   rC   rD   r4   r  r  +  s8   „ Ø×#Ñ#€Gà@Ø<Ø	Ð>Ð?ð 	CØJØJð	Ðò	ÑrD   r  c                   óN   — e Zd Zej                  Zddd ed«      dfdddgZg d	¢Zy
)Úldap_salted_sha256_test)r¸   zA{SSHA256}x1tymSTVjozxQ2PtT46ysrzhZxbcskK0o2f8hEFx7fAQQmhtDSEkJA==)rw   zA{SSHA256}xfqc9aOR6z15YaEk3/Ufd7UL9+JozB/1EPmCDTizL0GkdA7BuNda6w==)ÚtoomanysecretszA{SSHA256}RrTKrg6HFXcjJ+eDAq4UtbODxOr9RLeG+I69FoJvutcbY0zpfU+p1Q==õ	   letmÃ¨Ã¯nzA{SSHA256}km7UjUTBZN8a+gf1ND2/qn15N7LsO/jmGYJXvyTfJKAbI0RoLWWslQ==)rw   z9{SSHA256}TFv2RpwyO0U9mA0Hk8FsXRa1I+4dNUtv27Qa8dzGVLinlDIm)rw   zI{SSHA256}J6MFQdkfjdmXz9UyUPb773kekJdm4dgSL4y8WQEQW11VipHSundOKaV0LsV4L6U=)rw   zI{SSHA256}uBLazLaiBaPb6Cpnvq2XTYDkvXbYIuqRW1anMKk85d1/j1GqFQIgpHSOMUYIIcS4)z9{SSHA256}Lpdyr1+lR+rtxgp3SpQnUuNw33ENivTl28nzF2ZI4Gm41/o=z9{SSHA256}TFv2RpwyO0U9mA0Hk8FsXRa1I+4dNUtv27Qa8dzGVLinlDI@z8{SSHA256}TFv2RpwyO0U9mA0Hk8FsXRa1I+4dNUtv27Qa8dzGVLinlDIz<{SSHA256}TFv2RpwyO0U9mA0Hk8FsXRa1I+4dNUtv27Qa8dzGVLinlDIm===N)	r<   r=   r>   r   Úldap_salted_sha256r.   r	   rA   rB   rC   rD   r4   r  r  D  sC   „ Ø×%Ñ%€Gð 	ZØUØ_Ù	
ˆ?Ó	Ð`Ðað 	NØ]Ø]ðÐòÑrD   r  c                   óN   — e Zd Zej                  Zd ed«      dfdddddgZg d	¢Zy
)Úldap_salted_sha512_test)r  zi{SSHA512}wExp4xjiCHS0zidJDC4UJq9EEeIebAQPJ1PWSwfhxWjfutI9XiiKuHm2AE41cEFfK+8HyI8bh+ztbczUGsvVFIgICWWPt7qur  zi{SSHA512}mpNUSmZc3TNx+RnPwkIAVMf7ocEKLPrIoQNsg4Eu8dHvyCeb2xzHp5A6n4tF7ntknSvfvRZaJII4ImvNJlYsgiwAm0FMqR+3)r¸   ze{SSHA512}f/lFQskkl7PdMsTGJxHZq8LDt/l+UqRMm6/pj4pV7/xZkcOaKCgvQqp+KCeXc/Vd4RY6vEHWn4y0DnFcQ6wgyv9fyxk=)rw   zi{SSHA512}Tgx/uhHnlM9/GgQvI31dN7cheDXg7WypZwaaIkyRsgV/BKIzBG3G/wUd9o1dpi06p3SYzMedg0lvTc3b6CtdO0Xo/f9/L+Uc)rw   ze{SSHA512}Yg9DQ2wURCFGwobu7R2O6cq7nVbnGMPrFCX0aPQ9kj/y1hd6k9PEzkgWCB5aXdPwPzNrVb0PkiHiBnG1CxFiT+B8L8U=)rw   zu{SSHA512}5ecDGWs5RY4xLszUO6hAcl90W3wAozGQoI4Gqj8xSZdcfU1lVEM4aY8s+4xVeLitcn7BO8i7xkzMFWLoxas7SeHc23sP4dx77937PyeE0A==)rw   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===N)	r<   r=   r>   r   Úldap_salted_sha512r.   r	   rA   rB   rC   rD   r4   r  r  a  sR   „ Ø×%Ñ%€Gð 	HÙ	
ˆ?Ó	ð  Ið  	Jð 	~Ø}ð 	zð 	Jð 	JðÐò$ÑrD   r  c                   ó~   — e Zd Zej                  ZdeerenefeerenefgZ	ddgZ
dgZ G d„ dej                  «      Zy)Úldap_plaintext_test©r¸   r¸   z{FOO}barrb   )rþ   rý   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ú%ldap_plaintext_test.FuzzHashGeneratorc                 óH   •— 	 t         t        j                  | �  «       }|r|S Œ!)N)rq   r  ÚFuzzHashGeneratorÚrandom_password)rS   Úpwdru   s     €r4   r  z5ldap_plaintext_test.FuzzHashGenerator.random_password•  s)   ø€ àÜÔ/×AÑAÀ4ÑXÓZ�ÙØ�Jð rD   )r<   r=   r>   r  r…   r†   s   @r4   r  r  “  s   ø„ ÷	ð 	rD   r  N)r<   r=   r>   r   Úldap_plaintextr.   r@   r   ÚPASS_TABLE_UTF8rA   rU   rV   r   r  rC   rD   r4   r  r  €  sa   „ à×!Ñ!€Gà Ø	¡S‘k¨oÐ>Ø	©™+°/ÐBðÐð 	ð 	ð	!Ðð 	6ðÐô˜K×9Ñ9õ rD   r  c                   ó@   — e Zd Zej                  ZddddddedfgZdgZy	)
Ú_ldap_md5_crypt_test)rb   z){CRYPT}$1$dOHYPKoP$tnxS1T8Q6VVn3kpV8cN6o.)rc   z){CRYPT}$1$m/5ee7ol$bZn0kIBFipq39e.KDXX8I0)rw   z){CRYPT}$1$ec6XvcoW$ghEtNK2U1MC5l.Dwgi3020)rš   z){CRYPT}$1$nX1e7EeI$ljQn72ZUgt6Wxd9hfvHdV0)r›   z){CRYPT}$1$jQS7o98J$V6iTcr71CGgwW2laf17pi1)rw   z){CRYPT}$1$SuMrG47N$ymvzYjr7QcEQjaK5m1PGx1z){CRYPT}$1$d6/Ky1lU$/xpf8m7ftmWLF.TjHCqel0z){CRYPT}$1$dOHYPKoP$tnxS1T8Q6VVn3kpV8cN6o!N)	r<   r=   r>   r   Úldap_md5_cryptr.   r@   rA   rB   rC   rD   r4   r  r  œ  sC   „ ð ×!Ñ!€Gð 	:Ø:Ø=ØNØ^Ø=ð 
ÐAÐBð
Ðð" 	4ð
ÑrD   r  c                   óH   ‡ — e Zd Zej                  ZdedfgZˆ fd„Zd„ Z	ˆ xZ
S )Ú_ldap_sha1_crypt_test)r¸   z5{CRYPT}$sha1$10$c.mcTzCw$gF8UeYst9yXX7WNZKc5Fjkq0.au7z5{CRYPT}$sha1$10$rnqXlOsF$aGJf.cdRPewJAXo1Rn1BkbaYh0fPc                 óP   •— |j                  dd«       t        t        | �  |«       y )Nrª   é
   )rõ   rq   r!  Úpopulate_settingsrs   s     €r4   r$  z'_ldap_sha1_crypt_test.populate_settingsÃ  s!   ø€ Ø�‰˜ "Ô%ÜÔ# TÑ<¸TÕBrD   c                 ó$   — | j                  d«      ‚)NÚunneededrí   )rS   Úignoreds     r4   rr   z(_ldap_sha1_crypt_test.test_77_fuzz_inputÇ  s   € Ø�m‰m˜JÓ'Ð'rD   )r<   r=   r>   r   Úldap_sha1_cryptr.   r@   rA   r$  rr   r…   r†   s   @r4   r!  r!  ¹  s2   ø„ ð ×"Ñ"€Gð 	NØ	ÐMÐNðÐô
Cö(rD   r!  c                   óÂ   — e Zd Zej                  ZdZddddddd ed	«      d
f ed«      d
f ed«      dfdf ed«      dfdf ed«      dfdf ed«      dfdfgZdgZ	d„ Z
y)Úlmhash_testT)ÚOLDPASSWORDÚ c9b81d939d6fd80cd408e6b105741864)ÚNEWPASSWORDÚ 09eeab5aa415d6e4d408e6b105741864)ÚwelcomeÚ c23413a8a1e7665faad3b435b51404ee)rb   Ú aad3b435b51404eeaad3b435b51404ee)ÚzzZZZzzÚ a5e6066de61c3e35aad3b435b51404ee)rG   Ú 855c3697d9979e78ac404c4ba2c66533)ÚYokohamaÚ 5ecd9236d21095ce7584248b8d2c9f9eu   ENCYCLOPÃ†DIAÚ fed6416bffc9750d48462b9d7aaac065u   encyclopÃ¦diaô   Ã†NÚ 25d8ab4a0659c97aaad3b435b51404eeÚcp437zlatin-1Ú 184eecbbe9991b44aad3b435b51404eezutf-8Ú 00dd240fcfab20b8aad3b435b51404eeÚ 855c3697d9979e78ac404c4ba2c6653Xc                 ó(  — ddl m} ddlm} | j                  }| j
                  D ]J  \  }}i }| j                  ||«      } | ||«      «      }| j                   |j                  |fi |¤Ž|«       ŒL | j                  t        |j                  d«       y)ztest lmhash.raw() methodr   )Ú	unhexlify)Ústr_to_basciir¨   N)Úbinasciir?  Úpasslib.utils.compatr@  r.   rA   rö   rË   ÚrawrO   r²   )rS   r?  r@  Úlmhashr   r   rt   Údatas           r4   Útest_90_rawzlmhash_test.test_90_rawô  sƒ   € å&Ý6Ø—‘ˆØ ×5Ô5‰LˆF�DØˆDØ×*Ñ*¨6°4Ó8ˆFÙ™]¨4Ó0Ó1ˆDØ×Ñ˜Z˜VŸZ™Z¨Ñ7°$Ñ7¸Õ>ð	 6ð
 	×Ñœ) V§Z¡Z°Õ3rD   )r<   r=   r>   r   rD  r.   Úsecret_case_insensitiver	   rA   rU   rF  rC   rD   r4   r*  r*  Ð  s®   „ Ø�k‰k€GØ"Ðð 	<Ø;Ø7ð
 	1Ø7Ø:Ø8ñ 
ÐÓ	ÐAÐBÙ	
ÐÓ	ÐAÐBñ ˆF‹)�TÐ	Ð>Ð?Ù
ˆF‹)�WÐ	ÐAÐBÙ
ˆF‹)�YÐ	Ð!CÐDÙ
ˆF‹)�WÐ	ÐAÐBð1Ðð: 	+ð!Ðó

4rD   r*  c                   óh   — e Zd Zej                  Zddddddddd	d
dd ed«      dfedfgZddgZ	g d¢Z
y)Ú_md5_crypt_test)r[   z"$1$dXc3I7Rw$ctlgjDdWJLMT.qwHsWhXR1)r\   z"$1$dXc3I7Rw$94JPyQc/eAgQ3MFMCoMF.0)r]   z"$1$dXc3I7Rw$is1mVIAEtAhIzSdfn5JOO0)r^   z"$1$eQT9Hwbt$XtuElNJD.eW5MN5UCWyTQ0)rb   z"$1$Eu.GHtia$CFkL/nE1BYTlEPiVx1VWX0)rb   z"$1$dOHYPKoP$tnxS1T8Q6VVn3kpV8cN6o.)rc   z"$1$m/5ee7ol$bZn0kIBFipq39e.KDXX8I0)rw   z"$1$ec6XvcoW$ghEtNK2U1MC5l.Dwgi3020)rš   z"$1$nX1e7EeI$ljQn72ZUgt6Wxd9hfvHdV0)r›   z"$1$jQS7o98J$V6iTcr71CGgwW2laf17pi1)rw   ú"$1$SuMrG47N$ymvzYjr7QcEQjaK5m1PGx1)s   testrJ  Úsz"$1$ssssssss$YgmLTApYTv12qgTwBoj8i/z"$1$d6/Ky1lU$/xpf8m7ftmWLF.TjHCqel0z"$1$dOHYPKoP$tnxS1T8Q6VVn3kpV8cN6o!z#$1$dOHYPKoP$tnxS1T8Q6VVn3kpV8cN6o.$)re   rf   rh   )zfreebsd|netbsd|linux|solarisT)ÚdarwinFN)r<   r=   r>   r   Ú	md5_cryptr.   r	   r@   rA   rB   r„   rC   rD   r4   rI  rI    sn   „ Ø�n‰n€Gð 	;Ø9Ø:Ø:Ø2ð 	3Ø3Ø6ØGØWØ6Ø7Ù	
ˆ3‹Ð5Ð6ð 
Ð:Ð;ð7
Ðð@ 0ð 	.ð
ÐòÑrD   rI  c                   ó¬   — e Zd Zej                  ZdZdddddddd	d
dd ed«       ed«      fdf ed«       ed«      fdf ed«      dfdfedfdfgZ	dgZ
y)Ú
msdcc_testT)©ÚAsdf999ÚsevansÚ b1176c2587478785ec1037e5abc916d0))Ú	ASDqwe123ÚjdoeÚ 592cdfbc3f1ef77ae95c75f851e37166)©Útest1rX  Ú 64cd29e36a8431a2b111378564a10631))Útest2rZ  Ú ab60bdb4493822b175486810ac2abe63)©Útest3r]  Ú 14dd041848e12fc48c0aa7a416a4a00c)©Útest4r`  Ú b945d24866af4b01a6d89b9d932a153c))z1234qwer!@#$ÚAdministratorÚ 7b69d06ef494621e3f47b9802fe7776d))r¸   rñ   Ú 2d9f0b052932ad18b87f315641921cda))rb   ÚrootÚ 176a4c2bd45ac73687676c2f09045353))rX  ÚTEST1rY  ))ÚokoladaÚnineteen_charactersÚ 290efa10307e36a79b3eebf2a6b29455ô   Ã¼Ú 48f84e6f73d6d5305f6558a33fa2c9bbõ   Ã¼Ã¼Ú 593246a8335cf0261799bda2a2a9c623õ   â‚¬â‚¬rñ   Ú 9121790702dda0fa5d353014c334c2ceÚbobÚ fcb82eb4212865c7ac3503156ca3f349)Ú B1176C2587478785EC1037E5ABC916D0rP  rS  N)r<   r=   r>   r   Úmsdccr.   Úuser_case_insensitiver	   r@   rA   Úknown_alternate_hashesrC   rD   r4   rO  rO  =  s«   „ Ø�j‰j€GØ Ðð 	Dð
 	Dð
 	AØ@Ø@Ø@ð
 	Pð
 	Cð
 	;Ø@ØPÙ
ˆH‹+‘q˜“{Ð	#Ð%GÐHÙ
ˆNÓ
™Q˜~Ó.Ð	/Ð1SÐTÙ
ˆNÓ
˜VÐ	$Ð&HÐIð �uÐ	ÐAÐBð[.Ððd	0ðÑrD   rO  c                   ó�   — e Zd Zej                  ZdZdddddddd	d
ddd ed«      dfdf ed«      dfdf ed«      dfdfedfdfgZ	y)Úmsdcc2_testT)rW  Ú 607bbe89611e37446e736f7856515bf8))ÚqerwtÚJoeÚ e09b38f84ab0be586b730baf61781e30))Ú12345r{  Ú 6432f517a900b3fc34ffe57f0f346e16))rb   ÚbinÚ c0cbe0313a861062e29f92ede58f9b36))Úw00tri  Ú 87136ae0a18b2dafe4a41d555425b2ed))r�  ÚeighteencharactersÚ fc5df74eca97afd7cd5abb0032496223))ÚlongpasswordÚtwentyXXX_charactersÚ cfc6a1e33eb36c3d4f84e4c2606623d2))r…  ÚtwentyoneX_charactersÚ 99ff74cea552799da8769d30b2684bee))r…  ÚtwentytwoXX_charactersÚ 0a721bdc92f27d7fb23b87a445ec562f))rZ  ÚTEST2Ú c6758e5be7fc943d00b97972a8a97620)r\  Ú 360e51304a2d383ea33467ab0b639cc4)r_  Ú 6f79ee93518306f071c47185998566aerk  ÚjoeÚ bdb80f2c4656a8b8591bd27d39064a54ro  Ú 1e1e20f482ff748038e47d801d0d1bdarm  ÚadminÚ 0839e4a07c00f18a8c65cf5b985b9e73rq  Ú cad511dc9edefcf69201da72efb6bb55N)
r<   r=   r>   r   Úmsdcc2r.   ru  r	   r@   rA   rC   rD   r4   rx  rx  w  sˆ   „ Ø�k‰k€GØ Ðð 	AØ>Ø>Ø9ØMØLØVØWØXØ@Ø@Ø@Ù
ˆH‹+�uÐ	ÐAÐBÙ
ˆNÓ
˜UÐ	#Ð%GÐHÙ
ˆNÓ
˜WÐ	%Ð'IÐJð �uÐ	ÐAÐBð3ÑrD   rx  c                   ón   — e Zd Zej                  ZdZdddddddd	d
dedfedfgZ	dgZ
g d¢Zd ed«      gZy)Úmssql2000_testzverify-only)ÚTestÚ^0x010034767D5C0CFA5FDCA28C4A56085E65E882E71CB0ED2503412FD54D6119FFF04129A1D72E7C3194F7284A7F3A)ÚTESTÚ^0x010034767D5C2FD54D6119FFF04129A1D72E7C3194F7284A7F3A2FD54D6119FFF04129A1D72E7C3194F7284A7F3A)ÚxÚ^0x010086489146C46DD7318D2514D1AC706457CBF6CD3DF8407F071DB4BBC213939D484BF7A766E974F03C96524794)ÚAAAAÚ^0x0100CF465B7B12625EF019E157120D58DD46569AC7BF4118455D12625EF019E157120D58DD46569AC7BF4118455D)Ú123Ú^0x01002D60BA07FE612C8DE537DF3BFCFA49CD9968324481C1A8A8FE612C8DE537DF3BFCFA49CD9968324481C1A8A8)r}  Ú^0x01005B20054332752E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B332752E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B3)ÚfooÚ^0x0100A607BA7C54A24D17B565C59F1743776A10250F581D482DA8B6D6261460D3F53B279CC6913CE747006A2E3254)ÚbarÚ^0x01000508513EADDF6DB7DDD270CCA288BF097F2FF69CC2DB74FBB9644D6901764F999BAB9ECB80DE578D92E3F80D)ÚcanardÚ^0x01008408C523CF06DCB237835D701C165E68F9460580132E28ED8BC558D22CEDF8801F4503468A80F9C52A12C0A3)ÚlapinÚ^0x0100BF088517935FC9183FE39FDEC77539FD5CB52BA5F5761881E5B9638641A79DBF0F1501647EC941F3355440A2Ú^0x0100624C0961B28E39FEE13FD0C35F57B4523F0DA1861C11D5A5B28E39FEE13FD0C35F57B4523F0DA1861C11D5A5Ú^0x010083104228FAD559BE52477F2131E538BE9734E5C4B0ADEFD7F6D784B03C98585DC634FE2B8CA3A6DFFEC729B4)Ú^0x01005b20054332752e1bc2e7c5df0f9ebfe486e9bee063e8d3b332752e1bc2e7c5df0f9ebfe486e9bee063e8d3b3r}  r£  )Ú^0X01005B20054332752E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B332752E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B3Ú^0x02005B20054332752E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B332752E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B3Ú\0x01005B20054332752E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B332752E1BC2E7C5DF0F9EBFE486E9BEE063E8D3Ú`0x01005B20054332752E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B332752E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B3AFÚ60x01005B20054332752E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B3s^   0x01005B200543327G2E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B332752E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B3Ú^0x01005B200543327G2E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B332752E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B3N)r<   r=   r>   r   Ú	mssql2000r.   rG  rø   r@   rA   rv  rU   r	   rB   rC   rD   r4   r˜  r˜  š  sŒ   „ Ø�n‰n€GØ+Ðð 	sØrð
 	pð
 	sð
 	rð
 	tð 	rØqØtØsð 
ÐvÐwØ	ÐvÐwð_1Ððj	tðÐò!Ðð" 	jÙ	Ð
jÓkðÑrD   r˜  c                   ój   — e Zd Zej                  Zdddddddddd	d
ddddddedfedfgZdgZ	g d¢Z
dgZy)Úmssql2005_test)r›  Ú60x010034767D5C2FD54D6119FFF04129A1D72E7C3194F7284A7F3A)ÚtotoÚ60x01004086CEB6BF932BC4151A1AF1F13CD17301D70816A8886908)r¡  Ú60x01004A335DCEDB366D99F564D460B1965B146D6184E4E1025195)r¡  Ú60x0100E11D573F359629B344990DCD3D53DE82CF8AD6BBA7B638B6)rŸ  Ú60x010036D726AE86834E97F20B198ACD219D60B446AC5E48C54F30)ÚtitiÚ60x01004086CEB60ED526885801C23B366965586A43D3DEAC6DD3FD)r¤  Ú60x0100A607BA7C54A24D17B565C59F1743776A10250F581D482DA8)r¦  Ú60x01000508513EADDF6DB7DDD270CCA288BF097F2FF69CC2DB74FB)r¨  Ú60x01008408C523CF06DCB237835D701C165E68F9460580132E28ED)rª  Ú60x0100BF088517935FC9183FE39FDEC77539FD5CB52BA5F5761881)r™  Ú60x010034767D5C0CFA5FDCA28C4A56085E65E882E71CB0ED250341)r™  Ú60x0100993BF2315F36CC441485B35C4D84687DC02C78B0E680411F)r�  Ú60x010086489146C46DD7318D2514D1AC706457CBF6CD3DF8407F07)rŸ  Ú60x0100CF465B7B12625EF019E157120D58DD46569AC7BF4118455D)r¡  Ú60x01002D60BA07FE612C8DE537DF3BFCFA49CD9968324481C1A8A8)r}  r³  Ú60x0100624C0961B28E39FEE13FD0C35F57B4523F0DA1861C11D5A5Ú60x010083104228FAD559BE52477F2131E538BE9734E5C4B0ADEFD7)Ú60x01005b20054332752e1bc2e7c5df0f9ebfe486e9bee063e8d3b3r}  r³  )Ú60X010036D726AE86834E97F20B198ACD219D60B446AC5E48C54F30Ú60x020036D726AE86834E97F20B198ACD219D60B446AC5E48C54F30Ú40x010036D726AE86834E97F20B198ACD219D60B446AC5E48C54FÚ80x010036D726AE86834E97F20B198ACD219D60B446AC5E48C54F3012r£  Ú60x010036D726AE86G34E97F20B198ACD219D60B446AC5E48C54F30N)r<   r=   r>   r   Ú	mssql2005r.   rø   r@   rA   rv  rU   rB   rC   rD   r4   r·  r·  í  s’   „ Ø�n‰n€Gð 	Kð
 	Kð
 	JØIð 	Kð
 	KØJØIØIØLØKð
 	LØKØKØKØKØKð 
ÐNÐOØ	ÐNÐOðm7Ððv	LðÐò!Ðð" 	AðÑrD   r·  c                   ój   — e Zd Zej                  ZdddedfgZdgZd„ Z	 G d„ de
j                  «      Zy	)
Úmysql323_test)ÚdrewÚ697a7de87c5390b2)r¸   Ú5d2e19393cc5ef67)ÚmypassÚ6f8c114b58f2ce9eÚ4ef327ca5491c8d7Ú6z8c114b58f2ce9ec                 ól   — | j                  d«      }| j                  d«      }| j                  ||«       y)z$check whitespace is ignored per specr×  zmy passN)Ú
do_encryptrË   )rS   ÚhÚh2s      r4   Útest_90_whitespacez mysql323_test.test_90_whitespace^  s.   € à�O‰O˜HÓ%ˆØ�_‰_˜YÓ'ˆØ×Ñ˜˜BÕrD   c                   ó   — e Zd Zd„ Zy)úmysql323_test.FuzzHashGeneratorc                 óL   — |j                  dd«      |j                  dd«      k7  S )Nrc   rb   )Úreplace)rS   r   Úothers      r4   Úaccept_password_pairz4mysql323_test.FuzzHashGenerator.accept_password_pairf  s#   € à—>‘> # bÓ)¨U¯]©]¸3¸rÓ-BÑBÐBrD   N)r<   r=   r>   rå  rC   rD   r4   r  rá  d  s   „ ó	CrD   r  N)r<   r=   r>   r   Úmysql323r.   r@   rA   rU   rß  r   r  rC   rD   r4   rÓ  rÓ  F  sQ   „ Ø�m‰m€Gð 	%Ø(ð
 	'ð 
Ð(Ð)ðÐð$ 	ð!Ðò
 ôC˜K×9Ñ9õ CrD   rÓ  c                   ó<   — e Zd Zej                  ZddddedfgZdgZy)Úmysql41_test)Úverysecretpasswordz)*2C905879F74F28F8570989947D06A8429FB943E6)Ú 12345678123456781234567812345678z)*F9F1470004E888963FB466A5452C9CBD9DF6239C)z
' OR 1 /*'z)*97CF7A3ACBE0CA58D5391AC8377B5D9AC11D46D9)r×  z)*6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4z)*E7AFE21A9CFA2FC9D15D942AE8FB5C240FE5837Bz)*6Z8989366EAF75BB670AD8EA7A7FC1176A95CEF4N)	r<   r=   r>   r   Úmysql41r.   r@   rA   rU   rC   rD   r4   rè  rè  j  s=   „ Ø�l‰l€Gð
 	LØYØCð
 	@ð 
ÐAÐBðÐð$ 	4ð!ÑrD   rè  c            	       ó`   — e Zd Zej                  Zd ed«      fd ed«      fddddd	d
dg	ZdgZy)Únthash_testr+  Ú 6677b2c394311355b54f25eec5bfacf5r-  Ú 256781a62031289d3c2c98c14f1efc8c)rb   Ú 31d6cfe0d16ae931b73c59d7e0c089c0)ÚtiggerÚ b7e0ea9fbffcf6dd83086e905089effd)ó   Ã¼Ú 8bd6e4fb88e01009818749c5443ea712)s   Ã¼Ã¼Ú cc1260adb6985ca749f150c7e0b22063)s   â‚¬Ú 030926b781938db4365d46adc7cfbcb8)s   â‚¬â‚¬Ú 682467b963bb4e61943e170a04f7db46)rG   Ú 7f8fe03093cc84b267b109625f6bbf4bÚ 7f8fe03093cc84b267b109625f6bbfxbN)	r<   r=   r>   r   Únthashr.   r	   rA   rU   rC   rD   r4   rí  rí  „  sY   „ Ø�k‰k€Gð 
™Ð<Ó=Ð>Ø	™Ð<Ó=Ð>ð 	1Ø6ð 	:ØAØ=ØHð
 	;ð1Ðð: 	+ð!ÑrD   rí  c                   ó2   — e Zd Zej                  ZddgZdgZy)Úbsd_nthash_test)rG   z$$3$$7f8fe03093cc84b267b109625f6bbf4b)ró  z$$3$$8bd6e4fb88e01009818749c5443ea712z$$3$$7f8fe03093cc84b267b109625f6bbfxbN)r<   r=   r>   r   Ú
bsd_nthashr.   rA   rU   rC   rD   r4   rü  rü  §  s(   „ Ø�o‰o€Gð 	?Ø=ðÐð 3ð!ÑrD   rü  c                   ór   — e Zd Zej                  ZdZdZd ed«       ed«      fdfdddd	d
dde	dfdfg
Z
dgZy)Úoracle10_testT))ÚtigerÚscottÚF894844C34402B67ÚttTiGGeRÚScOÚ7AA1A84E31ED7771))Ú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ÚSystemÚB915A853F297B281ÚF894844C34402B6ZN)r<   r=   r>   r   Úoracle10r.   rG  ru  r	   r@   rA   rU   rC   rD   r4   rÿ  rÿ  ·  sq   „ Ø�m‰m€GØ"ÐØ Ðð 	1Ù
ˆJ‹-™˜5›Ð	"Ð$6Ð7Ø3Ø<ð
 	6Ø5ð
 	2Ø4Ø>ð
 �xÐ	 Ð"4Ð5ð7Ðð@  ð!ÑrD   rÿ  c                   ó:   — e Zd Zej                  ZddddddedfgZy)	Úoracle11_test)Úabc123z>S:5FDAB69F543563582BA57894FE1C1361FB8ED57B903603F2C52ED1B4D642)zSyStEm123!@#z>S:450F957ECBE075D2FA009BA822A9E28709FBC3DA82B44D284DDABEC14C42)Úoraclez>S:3437FF72BD69E3FB4D10C750B92B8FB90B155E26227B9AB62D94F54E5951)Ú11gz>S:61CE616647A4F7980AFD7C7245261AF25E0AFE9C9763FCF0D54DA667D4E6)r"  z>S:B9E7556F53500C8C78A58F50F24439D79962DE68117654B6700CE7CC71CF)ÚSHAlalaz>S:2BFCFDF5895014EE9BB2B9BA067B01E0389BB5711B7B5F82B7235E9E182Cz>S:51586343E429A6DF024B8F242F2E9F8507B1096FACD422E29142AA4974B0N)r<   r=   r>   r   Úoracle11r.   r@   rA   rC   rD   r4   r  r  à  s6   „ Ø�m‰m€Gð 	UØZØTØQØQð
 	Vð
 
ÐVÐWð%ÑrD   r  c                   óH   — e Zd Zej                  Zddddddddd	d
edfgZdgZy)Úphpass_test)Ú	test12345z"$P$9IQRaTwmfeRo7ud9Fh4E2PdI0S3r.L0)rX  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)rb   z"$P$7JaFQsPzJSuenezefD/3jHgt5hVfNH0)zcompL3X!z"$P$FiS0N5L672xzQx1rt1vgdJQRYKnQM9/z"$P$7SMy8VxnfsIy2Sxm7fJxDSdil.h7TW.z"$P$9IQRaTwmfeRo7ud9Fh4E2PdI0S3r!L0N)	r<   r=   r>   r   Úphpassr.   r@   rA   rB   rC   rD   r4   r&  r&  û  sO   „ Ø�k‰k€Gð 	<ð
 	8Ø8Ø8ØEØ<Ø<Ø<ð
 	3Ø:ð 
Ð:Ð;ð3
Ðð> 	-ð
ÑrD   r&  c                   óR   — e Zd Zej                  ZdZddeerene	fe	erefgZ
ye	fgZ
y)Úplaintext_testT)rb   rb   r  N)r<   r=   r>   r   Ú	plaintextr.   Úaccepts_all_hashesr@   r   r  rA   rC   rD   r4   r-  r-  #  sJ   „ à�n‰n€GØÐð 	Ø ð 
¡S‘k¨oÐ>Ø	©˜+ÐBðÑð 3BÐBðÑrD   r-  c                   ó>   — e Zd Zej                  ZdddedfdfgZdgZy)Úpostgres_md5_test))r×  ÚpostgresÚ#md55fba2ea04fd36069d2574ea71c8efe9d))r×  re  Ú#md540c31989b20437833f697e485811254b))ÚtestpasswordÚtestuserÚ#md5d4fc5129cc2c25465a5370113ae9835fr2  Ú#md5cb9f11283265811ce076db86d18a22d2Ú#md54zc31989b20437833f697e485811254bN)	r<   r=   r>   r   Úpostgres_md5r.   r@   rA   rU   rC   rD   r4   r1  r1  4  s>   „ Ø×Ñ€Gð 	HØCØLð �zÐ	"Ð$IÐJðÐð& 	.ð!ÑrD   r1  c                   óB   — e Zd Zej                  ZddedfgZg d¢Zg d¢Z	y)Ú_sha1_crypt_test)r¸   z1$sha1$19703$iVdJqfSE$v4qYKl1zqYThwpjJAoKX6UvlHq/a)r¸   z1$sha1$21773$uV7PTeux$I9oHnvwPZHMO0Nq6/WgyGV/tDJIHz1$sha1$40000$uJ3Sp7LE$.VEmLO5xntyRFYihC7ggd3297T/D)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|darwinFrk   N)
r<   r=   r>   r   Ú
sha1_cryptr.   r@   rA   rB   r„   rC   rD   r4   r<  r<  O  s5   „ Ø�o‰o€Gð 	JØIØ	ÐIÐJðÐòÐòÑrD   r<  c                   ó   — e Zd Zd„ Zd„ Zy)ÚRoundupTestc                 óŽ   — | j                  |j                  ||«      «       | j                  |j                  d|z   |«      «       y )Nr�  )ry   rz   r|   )rS   rÝ  r   r   s       r4   Ú
_test_pairzRoundupTest._test_pair}  s6   € Ø�‰˜Ÿ™ ¨Ó.Ô/Ø×Ñ˜Ÿ™ # f¡*¨dÓ3Õ4rD   c                 óN  — | j                  t        j                  dd«       | j                  t        j                  dd«       | j                  t        j                  dd«       | j                  t        j
                  dd«       | j                  t        j                  dd«       y )NÚsekritz-{SHA}8d42e738c7adee551324955458b5e2c0b49ee655z%{MD5}ccbc53f4464604e714f69dd11138d8b5z{CRYPT}nFia0rj2TT59Az{plaintext}sekritzD{PBKDF2}5000$7BvbBq.EZzz/O0HuwX3iP.nAG3s$g3oPnFFaga2BJaX5PoPRljl4XIE)rB  r   Úldap_hex_sha1Úldap_hex_md5Úldap_des_cryptÚroundup_plaintextÚldap_pbkdf2_sha1rR   s    r4   Ú
test_pairszRoundupTest.test_pairs�  s’   € Ø�‰Ü×ÑØØ;ô	=ð
 	�‰Ü×ÑØØ3ô	5ð
 	�‰Ü×ÑØØ"ô	$ð
 	�‰Ü×"Ñ"ØØô	!ð
 	�‰Ü×!Ñ!ØØRõ	TrD   N)r<   r=   r>   rB  rJ  rC   rD   r4   r@  r@  {  s   „ ò5óTrD   r@  c                   ó    — e Zd Zej                  Zddddddddd	d
 ed«      dfgZ ed«      rej                  g d¢«       g d¢Z
g d¢ZdZg d¢Zy)Ú_sha256_crypt_test)r[   z?$5$LKO/Ute40T3FNF95$U0prpBQd4PloSGU0pnpM4z9wKn4vZ1.jsrzQfPqxph9)r\   z?$5$LKO/Ute40T3FNF95$fdgfoJEBoMajNxCv3Ru9LyQ0xZgv0OBMQoq80LQ/Qd.)r]   z?$5$LKO/Ute40T3FNF95$8Ry82xGnnPI/6HtFYnvPBTYgOL23sdMXn8C29aO.x/A)r^   z?$5$9mx1HkCz7G1xho50$O7V7YgleJKLUhcfk9pgzdh3RapEaWqMtEp9UUBAKIPA)rb   z?$5$kc7lRD1fpYg0g.IP$d7CMTcEqJyTXyeq8hTdu/jB/I6DGkoo62NXbHIR7S43)rb   zL$5$rounds=10428$uy/jIAhCetNCTtb0$YWvUOXbkqlqhyoPMpN8BMe.ZGsGx2aBvxTvDFI613c3)rc   zL$5$rounds=10376$I5lNtXtRmf.OoMd8$Ko3AI1VvTANdyKhBPavaRjJzNpSatKU6QVN9uwS9MH.)rw   zL$5$rounds=11858$WH1ABM5sKhxbkgCK$aTQsjPkz0rBsH3lQlJxw9HDTDXPKBxC0LlVeV69P.t1)rš   zL$5$rounds=10350$o.pwkySLCzwTdmQX$nCMVsnF3TXWcBPOympBUUSQi6LGGloZoOsVJMGJ09UB)r›   zL$5$rounds=11944$9dhlu07dQMRWvTId$LyUI5VWkGFwASlzntk1RLurxX54LUhgAcJZIt0pYGT7u   with unicÃ–dezK$5$rounds=1000$IbG0EuGQXw5EkMdP$LQ5AfPf13KufFsKtmazqnzSGZ4pxtUNw3woQ.ELRDF4Úfull)	)r   z?$5$rounds=1004$nacl$oiWPbm.kQ7.jTCZoOtdv7/tO5mWv/vxw5yTqlBagVR7)r   z?$5$rounds=1005$nacl$6Mo/TmGDrXxg.bMK9isRzyWH3a..6HnSVVsJMEX7ud/)r   z?$5$rounds=1006$nacl$I46VwuAiUBwmVkfPFakCtjVxYYaOJscsuIeuZLbfKID)r   z?$5$rounds=1007$nacl$9fY4j1AV3N/dV/YMUn1enRHKH.7nEL4xf1wWB6wfDD4)r   z?$5$rounds=1008$nacl$CiFWCfn8ODmWs0I1xAdXFo09tM8jr075CyP64bu3by9)r   z?$5$rounds=1009$nacl$QtpFX.CJHgVQ9oAjVYStxAeiU38OmFILWm684c6FyED)r   z?$5$rounds=1010$nacl$ktAwXuT5WbjBW/0ZU1eNMpqIWY1Sm4twfRE1zbZyo.B)r   z?$5$rounds=1011$nacl$QJWLBEhO9qQHyMx4IJojSN9sS41P1Yuz9REddxdO721)r   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$saltstringsaltstringrN  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$anotherlongsaltstringúTa 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$shortú4we 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/gL972bICT))zfreebsd(9|1\d)|linuxT)Úfreebsd8N)zfreebsd|openbsd|netbsd|darwinF)rj   NN)r<   r=   r>   r   Úsha256_cryptr.   r	   rA   r   ÚextendrB   Úknown_correct_configsÚfilter_config_warningsr„   rC   rD   r4   rL  rL  ž  sŠ   „ Ø×Ñ€Gð 	XØVØWØWØOð
 	]Ø]Ø`Øqð 	BÙ	
ÐÓ	Ð!nÐoð%
Ðñ* �Ôð
 	×#Ñ#ò 
%
ô 
	ò	ÐòÐð< "ÐòÑrD   rL  c                   ón   — e Zd Zej                  Zddddddddd	d
edfgZddgZg d¢Z	dZ
ej                  Zy)Ú_sha512_crypt_test)r[   zj$6$LKO/Ute40T3FNF95$6S/6T2YuOIHY0N3XpLKABJ3soYcXD9mB7uVbtEZDj/LNscVhZoZ9DEH.sBciDrMsHOWOoASbNLTypH/5X26gN0)r\   zj$6$LKO/Ute40T3FNF95$wK80cNqkiAUzFuVGxW6eFe8J.fSVI65MD5yEm8EjYMaJuDrhwe5XXpHDJpwF/kY.afsUs1LlgQAaOapVNbggZ1)r]   zj$6$LKO/Ute40T3FNF95$YS81pp1uhOHTgKLhSMtQCr2cDiUiN03Ud3gyD4ameviK1Zqz.w3oXsMgO6LrqmIEcG3hiqaUqHi/WEE2zrZqa/)r^   zj$6$OmBOuxFYBZCYAadG$WCckkSZok9xhp4U1shIZEV7CCVwQUwMVea7L3A77th6SaE9jOPupEMJB.z0vIWCDiN9WLh2m9Oszrj5G.gt330)rb   zj$6$ojWH1AiTee9x1peC$QVEnTvRVlPRhcLQCk/HnHaZmlGAAjCfrAN0FtOsOnUk5K5Bn/9eLHHiRzrTzaIKjW9NTLNIBUCtNVOowWS2mN.)rb   zw$6$rounds=11021$KsvQipYPWpr93wWP$v7xjI4X6vyVptJjB1Y02vZC5SaSijBkGmq1uJhPr3cvqvvkd42Xvo48yLVPFt8dvhCsnlUgpX.//Cxn91H4qy1)rc   zw$6$rounds=11104$ED9SA4qGmd57Fq2m$q/.PqACDM/JpAHKmr86nkPzzuR5.YpYa8ZJJvI8Zd89ZPUYTJExsFEIuTYbM7gAGcQtTkCEhBKmp1S1QZwaXx0)rw   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/N3rOTsUgKqp7cUdHrwV8MoIVNCk9q9WL3ZRMsdbwNXpVk0gVxKtz1zw$6$rounds=40000$PEZTJDiyzV28M3.m$GTlnzfzGB44DGd1XqlmC4erAJKCP.rhvLvrYxiT38htrNzVGBnplFOHjejUGVrCfusGWxLQCc3pFO0A/1jYYr0zx$6$rounds=011021$KsvQipYPWpr93wWP$v7xjI4X6vyVptJjB1Y02vZC5SaSijBkGmq1uJhPr3cvqvvkd42Xvo48yLVPFt8dvhCsnlUgpX.//Cxn91H4qy1zw$6$rounds=11021$KsvQipYPWpr9:wWP$v7xjI4X6vyVptJjB1Y02vZC5SaSijBkGmq1uJhPr3cvqvvkd42Xvo48yLVPFt8dvhCsnlUgpX.//Cxn91H4qy1))z$6$saltstringrN  zd$6$saltstring$svn8UoSVapNtMuq1ukKS4tPQd8iKwSMHWjl/O817G3uBnIFNjnQJuesI68u4OTLiBFdcbYEdFCoEOfaS35inz1)z$$6$rounds=10000$saltstringsaltstringrN  zw$6$rounds=10000$saltstringsaltst$OW1/O6BYHV6BcXZu8QVeXbDWra3Oeqh0sbHbbMCVNSnCM/UrjmM0Dp8vOuZeHBy/YTBmSK6H9qs/y3RnOaw5v.)z $6$rounds=5000$toolongsaltstringrO  zv$6$rounds=5000$toolongsaltstrin$lQ8jolhgVRVhY4b5pZKaysCLi0QBxGoNeKQzQ3glMhwllF7oGDZxUhx1yxdYcz/e1JSbq3y6JMxxl8audkUEm0)z$$6$rounds=1400$anotherlongsaltstringrP  zv$6$rounds=1400$anotherlongsalts$POfYwTEok97VWcjxIiSOjiykti.o/pQs.wPvMxQ6Fm7I6IoYN3CmLs66x9t0oSwbtEW7o7UmJEiDwGqd8p4ur1)z$6$rounds=77777$shortrQ  zl$6$rounds=77777$short$WuQyW2YR.hBNpjjRhpYD/ifIw05xdfeEyQoMxIXbkvr0gge1a1x3yRULJ5CCaUeOxFmtlcGZelFl5CxtgfiAc0)z!$6$rounds=123456$asaltof16chars..rR  zx$6$rounds=123456$asaltof16chars..$BtCwjqMJGx5hrJhZywWvt0RLE8uZ4oPwcelCjmw2kSYu.Ec6ycULevoBK25fs2xXgMNrCzIMVcgEJAstJeonj1)z$6$rounds=10$roundstoolowrS  zr$6$rounds=1000$roundstoolow$kUMsbe306n21p9R.FRkW3IGn.S9NPN0x50YhH1xhLsPuWGsUSklZt58jaTfF4ZEQpyUNGc0dqbpBYYBaHHrsX.TN)r<   r=   r>   r   Úsha512_cryptr.   r@   rA   rB   rW  rX  rL  r„   rC   rD   r4   rZ  rZ     s�   „ Ø×Ñ€Gð 	Cð 	Bð 	Cð 	CØzð
 	Hð 	Ið 	Lð 	]ð 	mð 
ð  Pð  	Qð)
Ðð2 	Cð 	Bð	Ðò$ÐðL "Ðà/×FÑFÑrD   rZ  c                   óT   — e Zd Zej                  ZddddedfgZg d¢Zg d¢Z	dd	gZ
d
„ Zy)Úsun_md5_crypt_test)Ú	Gpcs3_admz%$md5$zrdhpMlZ$$wBvMOEqbSjU.hu5T2VEP01)Ú
aa12345678z%$md5$vyy8.OVF$$FY4TWzuauRl4.VQNobqMY.)Úthisú%$md5$3UqYqndY$$6P.aaWOoucxxq.l00SS9k0)Úpasswdz$$md5$RPgLF6IJ$WTvAlUJ7MqH5xak2FMEwS/z1$md5,rounds=5000$10VYDzAA$$1arAVtMA3trgE1qJ2V0Ez1))z$md5$3UqYqndY$r`  ra  )z%$md5$3UqYqndY$$.................DUMMYr`  ra  )z$md5$3UqYqndYr`  ú$$md5$3UqYqndY$HIZVnfJNGCPbDZ9nIRSgP1)z$$md5$3UqYqndY$.................DUMMYr`  rc  )	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/)rj   T)z#freebsd|openbsd|netbsd|linux|darwinFc                 ó”   — t        |t        «      r |j                  d«      rt        d«      ‚| j                  j                  ||«      S )Nz$.................DUMMYz,pretending '$...' stub hash is config string)ró   ÚstrÚendswithrP   r.   rz   )rS   r   r   s      r4   Ú	do_verifyzsun_md5_crypt_test.do_verify½  s?   € ô �dœCÔ  ] T§]¡]Ð3LÔ%MÜÐKÓLÐLØ�|‰|×"Ñ" 6¨4Ó0Ð0rD   N)r<   r=   r>   r   Úsun_md5_cryptr.   r@   rA   rW  rB   r„   rg  rC   rD   r4   r]  r]  R  s\   „ Ø× Ñ €Gð 	?ð
 	@ð
 	:ð
 	;ð& 
ÐIÐJðM'
ÐòRÐò:
Ðð: 	Ø6ðÐó1rD   r]  c                   óP   ‡ — e Zd Zej                  ZdedfgZg d¢Zˆ fd„Z	d„ Z
ˆ xZS )Úunix_disabled_test©r¸   Ú!Ú*)z$1$xxxÚabcz./azz{SHA}xxxc                 ó8   •— d| _         t        t        | �  «        y )NT)r/  rq   rj  Útest_76_hash_border©rS   ru   s    €r4   rp  z&unix_disabled_test.test_76_hash_borderÚ  s   ø€ à"&ˆÔÜÔ  $Ñ;Õ=rD   c                 ód  — t        j                  dd«       | j                  }| j                  |j	                  dd«      d«       | j                  |j	                  dd«      |j
                  «       | j                  |j                  d«      |j
                  «       | j                  |j                  «       j
                  |j
                  «       | j                  |j	                  ddd¬«      d«       | j                  |j                  dd¬«      d«       | j                  |j                  d¬«      j                  d«      d«       | j                  t        |j                  ddd¬«       | j                  t        |j                  dd¬«       | j                  t        |j                  d¬«       y	)
z%test marker option & special behaviorrn   z-passing settings to .*.hash\(\) is deprecatedrx   ú!asdrb   z*xxx)Úmarkerrn  N)
ro   rp   r.   rË   ÚgenhashÚdefault_markerr   ÚusingrO   rP   ©rS   r.   s     r4   Útest_90_specialz"unix_disabled_test.test_90_specialß  sT  € ä×Ñ Ð*YÔZØ—,‘,ˆð 	×Ñ˜Ÿ™¨°Ó8¸&ÔAð 	×Ñ˜Ÿ™¨°Ó4°g×6LÑ6LÔMØ×Ñ˜Ÿ™ fÓ-¨w×/EÑ/EÔFØ×Ñ˜Ÿ™›×7Ñ7¸×9OÑ9OÔPð 	×Ñ˜Ÿ™¨°¸F˜ÓCÀVÔLØ×Ñ˜Ÿ™ f°V˜Ó<¸fÔEØ×Ñ˜Ÿ™¨f˜Ó5×:Ñ:¸6ÓBÀFÔKð 	×Ñœ* g§o¡o°v¸rÈ%ÐÔPØ×Ñœ* g§l¡l°FÀ5ÐÔIØ×Ñœ* g§m¡m¸EÐÕBrD   )r<   r=   r>   r   Úunix_disabledr.   r@   rA   rU   rp  ry  r…   r†   s   @r4   rj  rj  Ç  s6   ø„ Ø× Ñ €Gð 	Ø	�cÐð	Ðò!Ðô>ö
CrD   rj  c                   óR   ‡ — e Zd Zej                  ZdZdedfgZˆ fd„Z	d„ Z
d„ Zˆ xZS )Úunix_fallback_testTrk  rl  c                 óV   •— t         t        | �  «        t        j                  dd«       y )Nrn   z'unix_fallback' is deprecated)rq   r|  ÚsetUpro   rp   rq  s    €r4   r~  zunix_fallback_test.setUp  s"   ø€ ÜÔ  $Ñ-Ô/Ü×Ñ Ð*IÕJrD   c                 ó:  — | j                   }| j                  |j                  ddd¬«      «       | j                  |j                  dd«      «       dD ]F  }| j                  |j                  d|d¬«      «       | j                  |j                  d|«      «       ŒH y)ztest enable_wildcard flagr¸   rb   T)Úenable_wildcardz!*xN)r.   ry   rz   r|   )rS   rÝ  Úcs      r4   Útest_90_wildcardz#unix_fallback_test.test_90_wildcard  s   € à�L‰LˆØ�‰˜Ÿ™ ¨BÀ˜ÓEÔFØ×Ñ˜Ÿ™ *¨RÓ0Ô1ÛˆAØ×Ñ˜QŸX™X j°ÀD˜XÓIÔJØ×Ñ˜QŸX™X j°Ó3Õ4ñ rD   c                 óæ   — | j                   }| j                  |j                  dd«      d«       | j                  |j                  d«      d«       | j                  |j                  dd«      d«       y)z%test preserves existing disabled hashrx   rb   rl  rs  N)r.   rË   ru  r   rx  s     r4   Útest_91_preserves_existingz-unix_fallback_test.test_91_preserves_existing  s^   € à—,‘,ˆð 	×Ñ˜Ÿ™¨°Ó4°cÔ:Ø×Ñ˜Ÿ™ fÓ-¨sÔ3ð 	×Ñ˜Ÿ™¨°Ó8¸&ÕArD   )r<   r=   r>   r   Úunix_fallbackr.   r/  r@   rA   r~  r‚  r„  r…   r†   s   @r4   r|  r|  ö  s:   ø„ Ø× Ñ €GØÐð 	Ø	�cÐðÐôKò5ö	BrD   r|  )^r‚   Ú
__future__r   ÚloggingÚ	getLoggerr<   ÚlogÚosr(   ro   Úpasslibr   r   Úpasslib.utilsr   rB  r   r   r	   r
   Úpasslib.tests.utilsr   r   r   r   r   r   rù   rø   r@   r  r"   r&   r5   r%   r:   rF   rZ   Ú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*  rI  Úmd5_crypt_os_crypt_testÚmd5_crypt_builtin_testrO  rx  r˜  r·  rÓ  rè  rí  rü  rÿ  r  r&  r-  r1  r<  Úsha1_crypt_os_crypt_testÚsha1_crypt_builtin_testr@  rL  Úsha256_crypt_os_crypt_testÚsha256_crypt_builtin_testrZ  Úsha512_crypt_os_crypt_testÚsha512_crypt_builtin_testr]  rj  r|  rC   rD   r4   Ú<module>rž     sâ  ðÙ Eõ &ã Ð'�g×'Ñ'¨Ó1�Û 	Û 
Û ÷ Ý 'ß DÓ D÷:÷ :ñ Ð:Ó;€	ÙˆoÓ€	ÙÐ+Ó,€à:€ò TÐ òÐ ò&PòT "GÐ ô

˜ô 
ô2$4�Kô $4ôRH9�{ô H9ðV ,×?Ñ?À
Ó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ÑFÀzÓRÐ Ø1×EÑEÀiÓPÐ ô(˜Kô (ð$ !6× IÑ IÈ*Ó UÐ ô
.4Ð&¨ô .4ôf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ÑCÀJÓOÐ Ø.×BÑBÀ9ÓMÐ ô
IG˜ô IGðX 0×CÑCÀJÓOÐ Ø.×BÑBÀ9ÓMÐ ô
p1˜ô p1ôj-C˜ô -Cô^!B˜õ !BrD   