§
    HŠtj ã                   óD  — 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% &                    d¦  «        Z'e% &                    d¦  «        Z( G d„ de¦  «        Z) G d„ de¦  «        Z*e* &                    d¦  «        Z+e* &                    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; &                    d¦  «        Z<e; &                    d¦  «        Z= G d:„ d;e¦  «        Z>e> &                    d¦  «        Z? G d<„ d=ee¦  «        Z@ G d>„ d?e¦  «        ZAeA &                    d¦  «        ZBeA &                    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¦  «        ZQeQ &                    d¦  «        ZReQ &                    d¦  «        ZS G d\„ d]e¦  «        ZT G d^„ d_e¦  «        ZUeU &                    d¦  «        ZVeU &                    d¦  «        ZW G d`„ dae¦  «        ZXeX &                    d¦  «        ZYeX &                    d¦  «        ZZ G db„ dce¦  «        Z[ G dd„ dee¦  «        Z\ G df„ dge¦  «        Z]dS )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¦  «        rG| t          vr>	 |                     ¦   «         }n# t
          j        $ r | t          v sJ ‚‚ w xY w| ›d|›d�}nd| z  }t          D ]J}d|z   }t          |¦  «         t          j        |         }	 t          ||¦  «        c S # t          $ r Y ŒGw xY wt          d|›d	| ›�¦  «        ‚)
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           úY/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/passlib/tests/test_handlers.pyÚget_handler_caser5   -   s9  € ð 3Ð2Ð2Ð2Ð2Ð2ØÐ Ñ'Ô'€GÝˆw˜
Ñ#Ô#ð 
"¨Õ6LÐ(LÐ(Lð	Ø×)Ò)Ñ+Ô+ˆGˆGøÝÔ&ð 	ð 	ð 	ØÕ;Ð;Ð;Ð;Ð;Øð	øøøð  &˜v˜v w w wÐ/ˆˆà˜6Ñ!ˆÝ'ð ð ˆØ" VÑ+ˆÝ�7ÑÔÐÝŒk˜'Ô"ˆð	Ý˜3 Ñ%Ô%Ð%Ð%Ð%øÝð 	ð 	ð 	ØˆDð	øøøõ ˆ,ÀÀÀÀvÀvÐNÑ
OÔ
OÐOs   ¬A ÁAÂB0Â0
B=Â<B=)Úargon2ÚbcryptÚbcrypt_sha256c                   ó.   — e Zd Zej        ZdedfgZdgZdS )Ú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:   \   s>   € € € € € ØÔ €Gð 	@ð 
Ð=Ð>ð
Ðð  4ð
ÐÐÐrD   r:   c                   óX   — e Zd Zej        ZddedfgZdgZd„ e	j
        D ¦   «         Z
d„ ZdS )Úbigcrypt_test)Ú
passphraseÚqiyh4XPJGsOZ2MEAyLkfWqeQ)zThis is very long passwdz#f8.SVpL2fvwjkAnxn8/rgTkwvrif6bjYB5cÚSEChBAyMbMNhgGLyP7kD1HZUz;qiyh4XPJGsOZ2MEAyLkfWqef8.SVpL2fvwjkAnxn8/rgTkwvrif6bjYB5cdc                 ó*   — g | ]}|d          dk    ¯|‘ŒS )r   Ú	des_cryptrC   )Ú.0Úrows     r4   ú
<listcomp>zbigcrypt_test.<listcomp>’   s0   € ð 4ð 4ð 4 #Ø  œV {Ò2Ð2ð Ø2Ð2Ð2rD   c                 óp   — |                       t          t          j        dt	          d¦  «        ¬¦  «         d S )NTÚ
yh4XPJGsOZ)Úuse_defaultsÚchecksum)ÚassertRaisesÚ
ValueErrorr   Úbigcryptr	   ©Úselfs    r4   Útest_90_internalzbigcrypt_test.test_90_internal•   s<   € ð 	×Ò�*¥d¤mÀ$Ý#$ \¡?¤?ð 	ñ 	4ô 	4ð 	4ð 	4ð 	4rD   N)r<   r=   r>   r   rU   r.   r@   rA   Úknown_unidentified_hashesr   Úknown_other_hashesrX   rC   rD   r4   rF   rF   u   st   € € € € € ØŒm€Gð 	AØKð 
Ð0Ð1ðÐð$	/ð!Ðð4ð 4¨Ô)Gð 4ñ 4ô 4Ðð4ð 4ð 4ð 4ð 4rD   rF   c                   óp   ‡ — 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                 ór   •— t          j        dd¦  «          t          t          | ¦  «        j        di |¤Ž d S )NÚignorez!bsdi_crypt rounds should be odd.*rC   )ÚwarningsÚfilterwarningsÚsuperr\   Útest_77_fuzz_input©rW   ÚkwdsÚ	__class__s     €r4   rt   z#_bsdi_crypt_test.test_77_fuzz_inputÐ   sA   ø€ åÔ Ð*MÑNÔNÐNØ8�Õ Ñ%Ô%Ô8Ð@Ð@¸4Ð@Ð@Ð@Ð@Ð@rD   c                 óÞ  — | j         }d}d}d}|                      |                     ||¦  «        ¦  «         |                      |                     ||¦  «        ¦  «         |                      |                     |¦  «        ¦  «         |                      |                     |¦  «        ¦  «         |                     d¦  «        }|                      |                     |¦  «        ¦  «         dS )z&needs_update() should flag even roundsz_Y/../cG0zkJa6LY6k4cz_Z/..TgFg0/ptQtpAgwsÚtestÚstubN)r.   Ú
assertTrueÚverifyÚneeds_updateÚassertFalser   )rW   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Ô9Ñ:Ô:Ð:Ø�Š˜Ÿš v¨xÑ8Ô8Ñ9Ô9Ð9ð 	�Š˜×,Ò,¨YÑ7Ô7Ñ8Ô8Ð8Ø×Ò˜×-Ò-¨hÑ7Ô7Ñ8Ô8Ð8ð —<’< Ñ'Ô'ˆØ×Ò˜×-Ò-¨hÑ7Ô7Ñ8Ô8Ð8Ð8Ð8rD   )r<   r=   r>   Ú__doc__r   Ú
bsdi_cryptr.   r@   rA   rY   Úplatform_crypt_supportrt   rƒ   Ú__classcell__©rw   s   @r4   r\   r\   ž   sÃ   ø€ € € € € Ø"Ð"ØŒo€Gð 	-Ø+Ø,Ø,Ø-Ø4Ø5Ø-Ø-Ø2Ø,Ø$ð
 	&Ø&Ø,Ø/Ø4ð 
Ð,Ð-ð7Ðð@ 	ð!Ðð	ð 	ð 	ÐðAð Að Að Að Að
9ð 9ð 9ð 9ð 9ð 9ð 9rD   r\   Úos_cryptÚbuiltinc            	       ó4   — e Zd Zej        ZdddddddedfgZd	S )
Ú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Œ   ï   sA   € € € € € ØŒl€Gð 	4Ø3Ø3Ø8Ø3Ø3Ø3ð 
Ð0Ð1ð%
ÐÐÐrD   rŒ   c                   ób   — 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
dS )Ú_des_crypt_testztest des-crypt algorithm)r]   ÚCCNf8Sbh3HDfQ)r^   zCCX.K.MFy4Ois)r_   zCC4rMpbg9AMZ.)r`   ÚXXxzOu6maQKqQ)rd   ÚSDbsugeBiC58A)rd   ÚOgAwTx2l6NADI)re   z/Hk.VPuwQTXbc)ry   ÚN1tQbOFcM5fpg)úCompl3X AlphaNu3mericzum.Wguz3eVCx2)ú%4lpHa N|_|M3r1K W/ Cur5Es: #$%(*)(*%#ÚsNYqfOyauIyic)ÚAlOtBsOlÚcEpWz5IUCShqMu   hellÃ–ÚsaykDgk3BPZ9E)z!gAwTx2l6NADIÚOgAwTx2l6NADÚOgAwTx2l6NADIj)rg   rh   rj   )z#freebsd|netbsd|linux|solaris|darwinTN)r<   r=   r>   r„   r   rK   r.   r	   rA   rY   r†   rC   rD   r4   r–   r–     s€   € € € € € Ø"Ð"ØŒn€Gð 	&Ø$Ø%Ø%Øð
 	ØØ!Ø2ØBØ%ð 
ˆˆ<‰Œ˜/Ð*ð+
Ðð.!
ð !
ð !
Ððð ð ÐÐÐrD   r–   c                   óH   — 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dS )Ú	fshp_testztest fshp algorithm)ry   z'{FSHP0|0|1}qUqP5cyxm6YcTAhz05Hph5gvu9M=)ry   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|¤Ž d	S )ztest variant keywordó   aé   )ÚsaltÚroundsÚvariantÚ1ó   1Úsha256s   sha256NÚ9é	   rC   )r.   Údictr	   rS   Ú	TypeErrorÚcomplexrT   )rW   r.   rv   s      r4   Útest_90_variantzfshp_test.test_90_variantu  sP  € à”,ˆÝ˜ aÐ(Ñ(Ô(ˆð 	ˆÐ"Ð"˜Ð"˜TÐ"Ð"Ð"ð 	ˆÐ'Ð'�˜#™œÐ' $Ð'Ð'Ð'ØˆÐ%Ð%˜Ð% Ð%Ð%Ð%ð 	ˆÐ,Ð,�˜(™œÐ, tÐ,Ð,Ð,ØˆÐ*Ð*˜	Ð* TÐ*Ð*Ð*ð 	ˆÔ�) WÐCÐC°dÐC¸dÐCÐCÐCð 	ˆÔ�) WÐKÐKµg¸aÀ±l´lÐKÀdÐKÐKÐKð 	ˆÔ�* gÐCÐC°sÐC¸dÐCÐCÐCØˆÔ�* gÐAÐA°qÐA¸DÐAÐAÐAÐAÐArD   N)r<   r=   r>   r„   r   Úfshpr.   r@   rA   rY   rB   r¶   rC   rD   r4   r¥   r¥   @  sƒ   € € € € € ØÐØŒi€Gð 	<ð	ð
	ð	ð 
ð 8ð 	9ð9
ÐðD 	2Ø0ð!
Ðð	ð 	ð 	ÐðBð Bð Bð Bð BrD   r¥   c                   ó(   — e Zd Zej        ZdedfgZdS )Úhex_md4_test)ÚpasswordÚ 8a9d093f14f8701df17732b2bb182c74Ú 876078368c47817ce5f9115f3a42cf74N)r<   r=   r>   r   Úhex_md4r.   r@   rA   rC   rD   r4   r¹   r¹   ’  s+   € € € € € ØŒl€Gà8Ø	Ð8Ð9ðÐÐÐrD   r¹   c                   ó.   — e Zd Zej        ZdedfgZd„ ZdS )Úhex_md5_test)rº   Ú 5f4dcc3b5aa765d61d8327deb882cf99Ú 05473f8a19f66815e737b33264a0d0b0c                 óF  — ddl m} ddlm}m}  |dd¬¦  «        j        }|                      | j        j        |¦  «         |r  |¦   «          |                      |d¦  «         ddl	m
}  |dd¬¦  «        }|                      |j        ¦  «         d}d	}|                      |                     |¦  «        ¦  «         |                      |                     |¦  «        ¦  «         d
}	|                      ||	|j        d¦  «         |                      ||	|j        d|¦  «         dS )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~   r{   ÚidentifyÚassertRaisesRegexr   r|   )
rW   rÃ   rÄ   rÅ   rÌ   rÈ   ÚhasherÚref1Úref2Úpats
             r4   Útest_mock_fips_modez hex_md5_test.test_mock_fips_mode¡  sa  € ð
 	1Ð0Ð0Ð0Ð0Ð0ØJÐJÐJÐJÐJÐJÐJÐJð  �K °Ð6Ñ6Ô6Ô@ˆ	Ø×Ò˜œÔ/°Ñ;Ô;Ð;Øð 	8ØÐÑ!Ô!Ð!Ø�OŠOÐ/°Ñ7Ô7Ð7ð 	=Ð<Ð<Ð<Ð<Ð<Ø � °Ð7Ñ7Ô7ˆØ×Ò˜Ô)Ñ*Ô*Ð*ð 2ˆØˆØ�Š˜Ÿš¨Ñ-Ô-Ñ.Ô.Ð.Ø×Ò˜Ÿš¨Ñ.Ô.Ñ/Ô/Ð/ð -ˆØ×ÒÐ/°°f´kÀ:ÑNÔNÐNØ×ÒÐ/°°f´mÀZÐQUÑVÔVÐVÐVÐVrD   N)	r<   r=   r>   r   Úhex_md5r.   r@   rA   rÖ   rC   rD   r4   r¿   r¿   ™  sC   € € € € € ØŒl€Gà8Ø	Ð8Ð9ðÐðWð Wð Wð Wð WrD   r¿   c                   ó(   — e Zd Zej        ZdedfgZdS )Úhex_sha1_test)rº   Ú(5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8Ú(e059b2628e3a3e2de095679de9822c1d1466e0f0N)r<   r=   r>   r   Úhex_sha1r.   r@   rA   rC   rD   r4   rÙ   rÙ   Â  s+   € € € € € ØŒm€Gà@Ø	Ð@ÐAðÐÐÐrD   rÙ   c                   ó(   — e Zd Zej        ZdedfgZdS )Úhex_sha256_test)rº   Ú@5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8Ú@6ed729e19bf24d3d20f564375820819932029df05547116cfc2cc868a27b4493N)r<   r=   r>   r   Ú
hex_sha256r.   r@   rA   rC   rD   r4   rÞ   rÞ   É  s+   € € € € € ØŒo€GàXØ	ÐXÐYðÐÐÐrD   rÞ   c                   ó(   — e Zd Zej        ZdedfgZdS )Úhex_sha512_test)rº   Ú€b109f3bbbc244eb82441917ed06d618b9008dd09b3befd1b5e07394c706a8bb980b1d7785e5976ec049b46df5f1326af5a2ea6d103fd07c95385ffab0cacbc86Ú€d91bb0a23d66dca07a1781fd63ae6a05f6919ee5fc368049f350c9f293b078a18165d66097cf0d89fdfbeed1ad6e7dba2344e57348cd6d51308c843a06f29cafN)r<   r=   r>   r   Ú
hex_sha512r.   r@   rA   rC   rD   r4   rã   rã   Ð  s3   € € € € € ØŒo€Gð	ð 
ð ð 	ð	ÐÐÐrD   rã   c                   óB   — e Zd Zej        ZdeeefdfgZ	ddgZ
d„ Zd„ ZdS )Úhtdigest_test))zCircle Of LifeÚMufasaztestrealm@host.comÚ 939e7578ed9e3c518a452acee763bce9Ú 4dabed2727d583178777fab468dd1f17Ú 939e7578edAe3c518a452acee763bce9Ú 939e7578edxe3c518a452acee763bce9c                 ó,   — |                       d¦  «        ‚)Nz)test case doesn't support 'realm' keyword©ÚskipTestrV   s    r4   Útest_80_userzhtdigest_test.test_80_userõ  s   € Ø�mŠmÐGÑHÔHÐHrD   c                 ó    — t          |t          ¦  «        r|\  }}}nd\  }}|                     d|¦  «         |                     d|¦  «         |S )zinsert username into kwds)ÚuserÚrealmró   rô   )Ú
isinstanceÚtupleÚ
setdefault)rW   r�   rv   ró   rô   s        r4   Úpopulate_contextzhtdigest_test.populate_contextø  sX   € å�f�eÑ$Ô$ð 	*Ø"(ÑˆF�D˜%˜%à)‰KˆD�%Ø�Š˜ Ñ%Ô%Ð%Ø�Š˜ Ñ'Ô'Ð'ØˆrD   N)r<   r=   r>   r   Úhtdigestr.   r@   Ú	UPASS_USDÚ	UPASS_WAVrA   rY   rñ   rø   rC   rD   r4   rè   rè   Þ  so   € € € € € ØŒm€Gð	0ð �y )Ð	,Ø.ð	0ð
Ðð 	+ð 	+ð!ÐðIð Ið Iðð ð ð ð rD   rè   c                   ó(   — e Zd Zej        ZdedfgZdS )Ú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€Gà7Ø	Ð5Ð6ðÐÐÐrD   rý   c                   ó(   — e Zd Zej        ZdedfgZdS )Ú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€Gà;Ø	Ð9Ð:ðÐÐÐrD   r  c                   ó6   — e Zd Zej        ZdedfdddgZg d¢ZdS )Úldap_salted_md5_test)Útesting1234z"{SMD5}UjFY34os/pnZQ3oQOzjqGu4yeXE=z"{SMD5}Z0ioJ58LlzUeRxm3K6JPGAvBGIM=)ry   z&{SMD5}LnuZPJhiaY95/4lmVFpg548xBsD4P4cw)ry   z2{SMD5}XRlncfRzvGi0FDzgR98tUgBg7B3jXOs9p9S615qTkg==)ry   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    sI   € € € € € ØÔ"€Gà=Ø	Ð:Ð;ð 	;ØFØFðÐð
ð 
ð 
ÐÐÐrD   r  c                   ó8   — e Zd Zej        ZddedfdddgZg d¢ZdS )	Úldap_salted_sha1_test)Ú
testing123z&{SSHA}0c0blFTXXNuAMHECS4uxrj3ZieMoWImr)r�   z&{SSHA}0H+zTv8o4MR4H43n03eCsvw1luG8LdB7z&{SSHA}3yCSD1nLZXznra4N8XzZgAL+s1sQYsx5)ry   z.{SSHA}P90+qijSp8MJ1tN25j5o1PflUvlqjXHOGeOckw==)ry   z6{SSHA}/ZMF5KymNM+uEOjW+9STKlfCFj51bg3BmBNCiPHeW2ttbU0=)ry   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	  +  sM   € € € € € ØÔ#€Gà@Ø<Ø	Ð>Ð?ð 	CØJØJð	Ðð	ð 	ð 	ÐÐÐrD   r	  c                   óL   — e Zd Zej        Zddd ed¦  «        dfdddgZg d	¢Zd
S )Úldap_salted_sha256_test)rº   zA{SSHA256}x1tymSTVjozxQ2PtT46ysrzhZxbcskK0o2f8hEFx7fAQQmhtDSEkJA==)ry   zA{SSHA256}xfqc9aOR6z15YaEk3/Ufd7UL9+JozB/1EPmCDTizL0GkdA7BuNda6w==)ÚtoomanysecretszA{SSHA256}RrTKrg6HFXcjJ+eDAq4UtbODxOr9RLeG+I69FoJvutcbY0zpfU+p1Q==õ	   letmÃ¨Ã¯nzA{SSHA256}km7UjUTBZN8a+gf1ND2/qn15N7LsO/jmGYJXvyTfJKAbI0RoLWWslQ==)ry   z9{SSHA256}TFv2RpwyO0U9mA0Hk8FsXRa1I+4dNUtv27Qa8dzGVLinlDIm)ry   zI{SSHA256}J6MFQdkfjdmXz9UyUPb773kekJdm4dgSL4y8WQEQW11VipHSundOKaV0LsV4L6U=)ry   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  s]   € € € € € ØÔ%€Gð 	ZØUØ_Ø	
ˆˆ?Ñ	Ô	Ð`Ðað 	NØ]Ø]ðÐðð ð ÐÐÐrD   r  c                   óL   — e Zd Zej        Zd ed¦  «        dfdddddgZg d	¢Zd
S )Ú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=)ry   zi{SSHA512}Tgx/uhHnlM9/GgQvI31dN7cheDXg7WypZwaaIkyRsgV/BKIzBG3G/wUd9o1dpi06p3SYzMedg0lvTc3b6CtdO0Xo/f9/L+Uc)ry   ze{SSHA512}Yg9DQ2wURCFGwobu7R2O6cq7nVbnGMPrFCX0aPQ9kj/y1hd6k9PEzkgWCB5aXdPwPzNrVb0PkiHiBnG1CxFiT+B8L8U=)ry   zu{SSHA512}5ecDGWs5RY4xLszUO6hAcl90W3wAozGQoI4Gqj8xSZdcfU1lVEM4aY8s+4xVeLitcn7BO8i7xkzMFWLoxas7SeHc23sP4dx77937PyeE0A==)ry   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  sl   € € € € € ØÔ%€Gð 	HØ	
ˆˆ?Ñ	Ô	ð  Ið  	Jð 	~Ø}ð 	zð 	Jð 	JðÐð$ð ð ÐÐÐrD   r  c                   ór   — 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dS )Úldap_plaintext_test©rº   rº   z{FOO}barrd   )r   rÿ   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ú%ldap_plaintext_test.FuzzHashGeneratorc                 óh   •— 	 t          t          j        | ¦  «                             ¦   «         }|r|S Œ1)N)rs   r  ÚFuzzHashGeneratorÚrandom_password)rW   Úpwdrw   s     €r4   r  z5ldap_plaintext_test.FuzzHashGenerator.random_password•  s9   ø€ ðÝÕ/ÔAÀ4ÑHÔH×XÒXÑZÔZ�Øð Ø�JðrD   )r<   r=   r>   r  r‡   rˆ   s   @r4   r  r  “  s8   ø€ € € € € ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	rD   r  N)r<   r=   r>   r   Úldap_plaintextr.   r@   r   ÚPASS_TABLE_UTF8rA   rY   rZ   r   r  rC   rD   r4   r  r  €  s•   € € € € € àÔ!€Gà Ø	 SÐ=�k�k¨oÐ>Ø	¨ÐA˜+˜+°/ÐBðÐð 	ð 	ð	!Ðð 	6ðÐðð ð ð ð ˜KÔ9ñ ô ð ð ð rD   r  c                   ó8   — e Zd Zej        ZddddddedfgZdgZd	S )
Ú_ldap_md5_crypt_test)rd   z){CRYPT}$1$dOHYPKoP$tnxS1T8Q6VVn3kpV8cN6o.)re   z){CRYPT}$1$m/5ee7ol$bZn0kIBFipq39e.KDXX8I0)ry   z){CRYPT}$1$ec6XvcoW$ghEtNK2U1MC5l.Dwgi3020)rœ   z){CRYPT}$1$nX1e7EeI$ljQn72ZUgt6Wxd9hfvHdV0)r�   z){CRYPT}$1$jQS7o98J$V6iTcr71CGgwW2laf17pi1)ry   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   œ  sN   € € € € € ð Ô!€Gð 	:Ø:Ø=ØNØ^Ø=ð 
ÐAÐBð
Ðð" 	4ð
ÐÐÐrD   r   c                   ó>   ‡ — 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                 ó„   •— |                      dd¦  «         t          t          | ¦  «                             |¦  «         d S )Nr¬   é
   )r÷   rs   r#  Úpopulate_settingsru   s     €r4   r&  z'_ldap_sha1_crypt_test.populate_settingsÃ  s<   ø€ Ø�Š˜ "Ñ%Ô%Ð%ÝÕ# TÑ*Ô*×<Ò<¸TÑBÔBÐBÐBÐBrD   c                 ó,   — |                       d¦  «        ‚)NÚunneededrï   )rW   Úignoreds     r4   rt   z(_ldap_sha1_crypt_test.test_77_fuzz_inputÇ  s   € Ø�mŠm˜JÑ'Ô'Ð'rD   )r<   r=   r>   r   Úldap_sha1_cryptr.   r@   rA   r&  rt   r‡   rˆ   s   @r4   r#  r#  ¹  sm   ø€ € € € € ð Ô"€Gð 	NØ	ÐMÐNðÐð
Cð Cð Cð Cð 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
dS )Úlmhash_testT)ÚOLDPASSWORDÚ c9b81d939d6fd80cd408e6b105741864)ÚNEWPASSWORDÚ 09eeab5aa415d6e4d408e6b105741864)ÚwelcomeÚ c23413a8a1e7665faad3b435b51404ee)rd   Ú 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 ]S\  }}i }|                      ||¦  «        } | ||¦  «        ¦  «        }|                       |j        |fi |¤Ž|¦  «         ŒT|  	                    t          |j        d¦  «         dS )ztest lmhash.raw() methodr   )Ú	unhexlify)Ústr_to_basciirª   N)ÚbinasciirA  Úpasslib.utils.compatrB  r.   rA   rø   rÍ   ÚrawrS   r´   )rW   rA  rB  Úlmhashr�   r   rv   Údatas           r4   Útest_90_rawzlmhash_test.test_90_rawô  sÃ   € à&Ð&Ð&Ð&Ð&Ð&Ø6Ð6Ð6Ð6Ð6Ð6Ø”ˆØ Ô5ð 	?ð 	?‰LˆF�DØˆDØ×*Ò*¨6°4Ñ8Ô8ˆFØ�9˜]˜]¨4Ñ0Ô0Ñ1Ô1ˆDØ×Ò˜Z˜VœZ¨Ð7Ð7°$Ð7Ð7¸Ñ>Ô>Ð>Ð>Ø×Ò�) V¤Z°Ñ3Ô3Ð3Ð3Ð3rD   )r<   r=   r>   r   rF  r.   Úsecret_case_insensitiver	   rA   rY   rH  rC   rD   r4   r,  r,  Ð  sâ   € € € € € ØŒ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Ðð: 	+ð!Ðð

4ð 
4ð 
4ð 
4ð 
4rD   r,  c                   óf   — 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
dS )Ú_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)rd   z"$1$Eu.GHtia$CFkL/nE1BYTlEPiVx1VWX0)rd   z"$1$dOHYPKoP$tnxS1T8Q6VVn3kpV8cN6o.)re   z"$1$m/5ee7ol$bZn0kIBFipq39e.KDXX8I0)ry   z"$1$ec6XvcoW$ghEtNK2U1MC5l.Dwgi3020)rœ   z"$1$nX1e7EeI$ljQn72ZUgt6Wxd9hfvHdV0)r�   z"$1$jQS7o98J$V6iTcr71CGgwW2laf17pi1)ry   ú"$1$SuMrG47N$ymvzYjr7QcEQjaK5m1PGx1)s   testrL  Úsz"$1$ssssssss$YgmLTApYTv12qgTwBoj8i/z"$1$d6/Ky1lU$/xpf8m7ftmWLF.TjHCqel0z"$1$dOHYPKoP$tnxS1T8Q6VVn3kpV8cN6o!z#$1$dOHYPKoP$tnxS1T8Q6VVn3kpV8cN6o.$)rg   rh   rj   )zfreebsd|netbsd|linux|solarisT)ÚdarwinFN)r<   r=   r>   r   Ú	md5_cryptr.   r	   r@   rA   rB   r†   rC   rD   r4   rK  rK    sˆ   € € € € € ØŒn€Gð 	;Ø9Ø:Ø:Ø2ð 	3Ø3Ø6ØGØWØ6Ø7Ø	
ˆˆ3‰ŒÐ5Ð6ð 
Ð:Ð;ð7
Ðð@ 0ð 	.ð
Ððð ð ÐÐÐrD   rK  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
dS )Ú
msdcc_testT)©ÚAsdf999ÚsevansÚ b1176c2587478785ec1037e5abc916d0))Ú	ASDqwe123ÚjdoeÚ 592cdfbc3f1ef77ae95c75f851e37166)©Útest1rZ  Ú 64cd29e36a8431a2b111378564a10631))Útest2r\  Ú ab60bdb4493822b175486810ac2abe63)©Útest3r_  Ú 14dd041848e12fc48c0aa7a416a4a00c)©Útest4rb  Ú b945d24866af4b01a6d89b9d932a153c))z1234qwer!@#$ÚAdministratorÚ 7b69d06ef494621e3f47b9802fe7776d))rº   ró   Ú 2d9f0b052932ad18b87f315641921cda))rd   ÚrootÚ 176a4c2bd45ac73687676c2f09045353))rZ  ÚTEST1r[  ))ÚokoladaÚnineteen_charactersÚ 290efa10307e36a79b3eebf2a6b29455õ   Ã¼Ú 48f84e6f73d6d5305f6558a33fa2c9bbõ   Ã¼Ã¼Ú 593246a8335cf0261799bda2a2a9c623õ   â‚¬â‚¬ró   Ú 9121790702dda0fa5d353014c334c2ceÚbobÚ fcb82eb4212865c7ac3503156ca3f349)Ú B1176C2587478785EC1037E5ABC916D0rR  rU  N)r<   r=   r>   r   Úmsdccr.   Úuser_case_insensitiver	   r@   rA   Úknown_alternate_hashesrC   rD   r4   rQ  rQ  =  sÎ   € € € € € ØŒj€GØ Ðð 	Dð
 	Dð
 	AØ@Ø@Ø@ð
 	Pð
 	Cð
 	;Ø@ØPØ
ˆ!ˆH‰+Œ+�q�q˜‘{”{Ð	#Ð%GÐHØ
ˆ!ˆNÑ
Ô
˜Q˜Q˜~Ñ.Ô.Ð	/Ð1SÐTØ
ˆ!ˆNÑ
Ô
˜VÐ	$Ð&HÐIð �uÐ	ÐAÐBð[.Ððd	0ðÐÐÐrD   rQ  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	dS )Úmsdcc2_testT)rY  Ú 607bbe89611e37446e736f7856515bf8))ÚqerwtÚJoeÚ e09b38f84ab0be586b730baf61781e30))Ú12345r}  Ú 6432f517a900b3fc34ffe57f0f346e16))rd   ÚbinÚ c0cbe0313a861062e29f92ede58f9b36))Úw00trk  Ú 87136ae0a18b2dafe4a41d555425b2ed))rƒ  ÚeighteencharactersÚ fc5df74eca97afd7cd5abb0032496223))ÚlongpasswordÚtwentyXXX_charactersÚ cfc6a1e33eb36c3d4f84e4c2606623d2))r‡  ÚtwentyoneX_charactersÚ 99ff74cea552799da8769d30b2684bee))r‡  ÚtwentytwoXX_charactersÚ 0a721bdc92f27d7fb23b87a445ec562f))r\  ÚTEST2Ú c6758e5be7fc943d00b97972a8a97620)r^  Ú 360e51304a2d383ea33467ab0b639cc4)ra  Ú 6f79ee93518306f071c47185998566aerm  ÚjoeÚ bdb80f2c4656a8b8591bd27d39064a54rq  Ú 1e1e20f482ff748038e47d801d0d1bdaro  ÚadminÚ 0839e4a07c00f18a8c65cf5b985b9e73rs  Ú cad511dc9edefcf69201da72efb6bb55N)
r<   r=   r>   r   Úmsdcc2r.   rw  r	   r@   rA   rC   rD   r4   rz  rz  w  s¢   € € € € € ØŒ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   rz  c                   ól   — 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dS )Ú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.   rI  rú   r@   rA   rx  rY   r	   rB   rC   rD   r4   rš  rš  š  s§   € € € € € ØŒn€GØ+Ðð 	sØrð
 	pð
 	sð
 	rð
 	tð 	rØqØtØsð 
ÐvÐwØ	ÐvÐwð_1Ððj	tðÐð!ð !ð !Ðð" 	jØ	ˆÐ
jÑkÔkðÐÐÐrD   rš  c                   ób   — 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dS )Ú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   rx  rY   rB   rC   rD   r4   r¹  r¹  í  s¨   € € € € € ØŒ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                   ó^   — 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d	S )
Úmysql323_test)ÚdrewÚ697a7de87c5390b2)rº   Ú5d2e19393cc5ef67)ÚmypassÚ6f8c114b58f2ce9eÚ4ef327ca5491c8d7Ú6z8c114b58f2ce9ec                 ó†   — |                       d¦  «        }|                       d¦  «        }|                      ||¦  «         dS )z$check whitespace is ignored per specrÙ  zmy passN)Ú
do_encryptrÍ   )rW   Ú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dS )úmysql323_test.FuzzHashGeneratorc                 ó^   — |                      dd¦  «        |                      dd¦  «        k    S )Nre   rd   )Úreplace)rW   r�   Úothers      r4   Úaccept_password_pairz4mysql323_test.FuzzHashGenerator.accept_password_pairf  s)   € à—>’> # bÑ)Ô)¨U¯]ª]¸3¸rÑ-BÔ-BÒBÐBrD   N)r<   r=   r>   rç  rC   rD   r4   r  rã  d  s(   € € € € € ð	Cð 	Cð 	Cð 	Cð 	CrD   r  N)r<   r=   r>   r   Úmysql323r.   r@   rA   rY   rá  r   r  rC   rD   r4   rÕ  rÕ  F  sŽ   € € € € € ØŒm€Gð 	%Ø(ð
 	'ð 
Ð(Ð)ðÐð$ 	ð!Ðð
 ð  ð  ðCð Cð Cð Cð C˜KÔ9ñ Cô Cð Cð Cð CrD   rÕ  c                   ó4   — e Zd Zej        ZddddedfgZdgZdS )Úmysql41_test)Úverysecretpasswordz)*2C905879F74F28F8570989947D06A8429FB943E6)Ú 12345678123456781234567812345678z)*F9F1470004E888963FB466A5452C9CBD9DF6239C)z
' OR 1 /*'z)*97CF7A3ACBE0CA58D5391AC8377B5D9AC11D46D9)rÙ  z)*6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4z)*E7AFE21A9CFA2FC9D15D942AE8FB5C240FE5837Bz)*6Z8989366EAF75BB670AD8EA7A7FC1176A95CEF4N)	r<   r=   r>   r   Úmysql41r.   r@   rA   rY   rC   rD   r4   rê  rê  j  sI   € € € € € ØŒl€Gð
 	LØYØCð
 	@ð 
ÐAÐBðÐð$ 	4ð!ÐÐÐrD   rê  c            	       ód   — 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dS )Únthash_testr-  Ú 6677b2c394311355b54f25eec5bfacf5r/  Ú 256781a62031289d3c2c98c14f1efc8c)rd   Ú 31d6cfe0d16ae931b73c59d7e0c089c0)ÚtiggerÚ b7e0ea9fbffcf6dd83086e905089effd)ó   Ã¼Ú 8bd6e4fb88e01009818749c5443ea712)s   Ã¼Ã¼Ú cc1260adb6985ca749f150c7e0b22063)s   â‚¬Ú 030926b781938db4365d46adc7cfbcb8)s   â‚¬â‚¬Ú 682467b963bb4e61943e170a04f7db46)rG   Ú 7f8fe03093cc84b267b109625f6bbf4bÚ 7f8fe03093cc84b267b109625f6bbfxbN)	r<   r=   r>   r   Únthashr.   r	   rA   rY   rC   rD   r4   rï  rï  „  so   € € € € € ØŒk€Gð 
˜˜Ð<Ñ=Ô=Ð>Ø	˜˜Ð<Ñ=Ô=Ð>ð 	1Ø6ð 	:ØAØ=ØHð
 	;ð1Ðð: 	+ð!ÐÐÐrD   rï  c                   ó*   — e Zd Zej        ZddgZdgZdS )Úbsd_nthash_test)rG   z$$3$$7f8fe03093cc84b267b109625f6bbf4b)rõ  z$$3$$8bd6e4fb88e01009818749c5443ea712z$$3$$7f8fe03093cc84b267b109625f6bbfxbN)r<   r=   r>   r   Ú
bsd_nthashr.   rA   rY   rC   rD   r4   rþ  rþ  §  s4   € € € € € ØŒo€Gð 	?Ø=ðÐð 3ð!ÐÐÐrD   rþ  c                   óv   — 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dS )Ú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.   rI  rw  r	   r@   rA   rY   rC   rD   r4   r  r  ·  s…   € € € € € ØŒm€GØ"ÐØ Ðð 	1Ø
ˆ!ˆJ‰-Œ-˜˜˜5™œÐ	"Ð$6Ð7Ø3Ø<ð
 	6Ø5ð
 	2Ø4Ø>ð
 �xÐ	 Ð"4Ð5ð7Ðð@  ð!ÐÐÐrD   r  c                   ó2   — e Zd Zej        ZddddddedfgZdS )	Ú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!  à  sB   € € € € € ØŒm€Gð 	UØZØTØQØQð
 	Vð
 
ÐVÐWð%ÐÐÐrD   r!  c                   ó@   — 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dS )Úphpass_test)Ú	test12345z"$P$9IQRaTwmfeRo7ud9Fh4E2PdI0S3r.L0)rZ  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)rd   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(  û  s[   € € € € € ØŒk€Gð 	<ð
 	8Ø8Ø8ØEØ<Ø<Ø<ð
 	3Ø:ð 
Ð:Ð;ð3
Ðð> 	-ð
ÐÐÐrD   r(  c                   óD   — e Zd Zej        ZdZddeerene	fe	erene	fgZ
dS )Úplaintext_testT)rd   rd   r  N)r<   r=   r>   r   Ú	plaintextr.   Úaccepts_all_hashesr@   r   r  rA   rC   rD   r4   r/  r/  #  sQ   € € € € € àŒn€GØÐð 	Ø ð 
 SÐ=�k�k¨oÐ>Ø	¨ÐA˜+˜+°/ÐBðÐÐÐrD   r/  c                   ó6   — e Zd Zej        ZdddedfdfgZdgZdS )Úpostgres_md5_test))rÙ  ÚpostgresÚ#md55fba2ea04fd36069d2574ea71c8efe9d))rÙ  rg  Ú#md540c31989b20437833f697e485811254b))ÚtestpasswordÚtestuserÚ#md5d4fc5129cc2c25465a5370113ae9835fr4  Ú#md5cb9f11283265811ce076db86d18a22d2Ú#md54zc31989b20437833f697e485811254bN)	r<   r=   r>   r   Úpostgres_md5r.   r@   rA   rY   rC   rD   r4   r3  r3  4  sI   € € € € € ØÔ€Gð 	HØCØLð �zÐ	"Ð$IÐJðÐð& 	.ð!ÐÐÐrD   r3  c                   ó:   — e Zd Zej        ZddedfgZg d¢Zg d¢Z	dS )Ú_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|darwinFrm   N)
r<   r=   r>   r   Ú
sha1_cryptr.   r@   rA   rB   r†   rC   rD   r4   r>  r>  O  sU   € € € € € ØŒo€Gð 	JØIØ	ÐIÐJðÐðð ð Ððð ð ÐÐÐrD   r>  c                   ó   — e Zd Zd„ Zd„ ZdS )ÚRoundupTestc                 ó°   — |                       |                     ||¦  «        ¦  «         |                      |                     d|z   |¦  «        ¦  «         d S )NrŸ  )r{   r|   r~   )rW   rß  r�   r   s       r4   Ú
_test_pairzRoundupTest._test_pair}  sN   € Ø�Š˜Ÿš ¨Ñ.Ô.Ñ/Ô/Ð/Ø×Ò˜Ÿš # f¡*¨dÑ3Ô3Ñ4Ô4Ð4Ð4Ð4rD   c                 óP  — |                       t          j        dd¦  «         |                       t          j        dd¦  «         |                       t          j        dd¦  «         |                       t          j        dd¦  «         |                       t          j        dd¦  «         d S )NÚsekritz-{SHA}8d42e738c7adee551324955458b5e2c0b49ee655z%{MD5}ccbc53f4464604e714f69dd11138d8b5z{CRYPT}nFia0rj2TT59Az{plaintext}sekritzD{PBKDF2}5000$7BvbBq.EZzz/O0HuwX3iP.nAG3s$g3oPnFFaga2BJaX5PoPRljl4XIE)rD  r   Úldap_hex_sha1Úldap_hex_md5Úldap_des_cryptÚroundup_plaintextÚldap_pbkdf2_sha1rV   s    r4   Ú
test_pairszRoundupTest.test_pairs�  sÃ   € Ø�ŠÝÔØØ;ñ	=ô 	=ð 	=ð
 	�ŠÝÔØØ3ñ	5ô 	5ð 	5ð
 	�ŠÝÔØØ"ñ	$ô 	$ð 	$ð
 	�ŠÝÔ"ØØñ	!ô 	!ð 	!ð
 	�ŠÝÔ!ØØRñ	Tô 	Tð 	Tð 	Tð 	TrD   N)r<   r=   r>   rD  rL  rC   rD   r4   rB  rB  {  s7   € € € € € ð5ð 5ð 5ðTð Tð Tð Tð TrD   rB  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 	                    g d¢¦  «         g d¢Z
g d¢ZdZg d¢ZdS )Ú_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)rd   z?$5$kc7lRD1fpYg0g.IP$d7CMTcEqJyTXyeq8hTdu/jB/I6DGkoo62NXbHIR7S43)rd   zL$5$rounds=10428$uy/jIAhCetNCTtb0$YWvUOXbkqlqhyoPMpN8BMe.ZGsGx2aBvxTvDFI613c3)re   zL$5$rounds=10376$I5lNtXtRmf.OoMd8$Ko3AI1VvTANdyKhBPavaRjJzNpSatKU6QVN9uwS9MH.)ry   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$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$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)rl   NN)r<   r=   r>   r   Úsha256_cryptr.   r	   rA   r   ÚextendrB   Úknown_correct_configsÚfilter_config_warningsr†   rC   rD   r4   rN  rN  ž  sÖ   € € € € € ØÔ€Gð 	XØVØWØWØOð
 	]Ø]Ø`Øqð 	BØ	
ˆÐÑ	Ô	Ð!nÐoð%
Ðð* €y�ÑÔð ð
 	×#Ò#ð 
%
ð 
%
ð 
%
ñ 
	ô 
	ð 
	ð	ð 	ð 	Ððð ð Ðð< "Ððð ð ÐÐÐrD   rN  c                   ó\   — 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dS )Ú_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)rd   zj$6$ojWH1AiTee9x1peC$QVEnTvRVlPRhcLQCk/HnHaZmlGAAjCfrAN0FtOsOnUk5K5Bn/9eLHHiRzrTzaIKjW9NTLNIBUCtNVOowWS2mN.)rd   zw$6$rounds=11021$KsvQipYPWpr93wWP$v7xjI4X6vyVptJjB1Y02vZC5SaSijBkGmq1uJhPr3cvqvvkd42Xvo48yLVPFt8dvhCsnlUgpX.//Cxn91H4qy1)re   zw$6$rounds=11104$ED9SA4qGmd57Fq2m$q/.PqACDM/JpAHKmr86nkPzzuR5.YpYa8ZJJvI8Zd89ZPUYTJExsFEIuTYbM7gAGcQtTkCEhBKmp1S1QZwaXx0)ry   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$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.TN)r<   r=   r>   r   Úsha512_cryptr.   r@   rA   rB   rY  rZ  rN  r†   rC   rD   r4   r\  r\     s¢   € € € € € ØÔ€Gð 	Cð 	Bð 	Cð 	CØzð
 	Hð 	Ið 	Lð 	]ð 	mð 
ð  Pð  	Qð)
Ðð2 	Cð 	Bð	Ðð$ð $ð $ÐðL "Ðà/ÔFÐÐÐrD   r\  c                   óL   — 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dS )Ú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$rb  rc  )z%$md5$3UqYqndY$$.................DUMMYrb  rc  )z$md5$3UqYqndYrb  ú$$md5$3UqYqndY$HIZVnfJNGCPbDZ9nIRSgP1)z$$md5$3UqYqndY$.................DUMMYrb  re  )	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/)rl   T)z#freebsd|openbsd|netbsd|linux|darwinFc                 ó    — t          |t          ¦  «        r |j        d¦  «        rt          d¦  «        ‚| j                             ||¦  «        S )Nz$.................DUMMYz,pretending '$...' stub hash is config string)rõ   ÚstrÚendswithrT   r.   r|   )rW   r�   r   s      r4   Ú	do_verifyzsun_md5_crypt_test.do_verify½  sS   € õ �d�CÑ Ô ð 	M ] T¤]Ð3LÑ%MÔ%Mð 	MÝÐKÑLÔLÐLØŒ|×"Ò" 6¨4Ñ0Ô0Ð0rD   N)r<   r=   r>   r   Úsun_md5_cryptr.   r@   rA   rY  rB   r†   ri  rC   rD   r4   r_  r_  R  s‰   € € € € € ØÔ €Gð 	?ð
 	@ð
 	:ð
 	;ð& 
ÐIÐJðM'
ÐðRð ð Ðð:
ð 
ð 
Ðð: 	Ø6ðÐð1ð 1ð 1ð 1ð 1rD   r_  c                   óF   ‡ — 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                 ód   •— d| _         t          t          | ¦  «                             ¦   «          d S )NT)r1  rs   rl  Útest_76_hash_border©rW   rw   s    €r4   rr  z&unix_disabled_test.test_76_hash_borderÚ  s.   ø€ à"&ˆÔÝÕ  $Ñ'Ô'×;Ò;Ñ=Ô=Ð=Ð=Ð=rD   c                 óª  — t          j        dd¦  «         | j        }|                      |                     dd¦  «        d¦  «         |                      |                     dd¦  «        |j        ¦  «         |                      |                     d¦  «        |j        ¦  «         |                      |                     ¦   «         j        |j        ¦  «         |                      |                     ddd¬¦  «        d¦  «         |                      |                     dd¬¦  «        d¦  «         |                      |                     d¬¦  «                             d¦  «        d¦  «         |                      t          |j        ddd¬¦  «         |                      t          |j        dd¬¦  «         |                      t          |j        d¬¦  «         d	S )
z%test marker option & special behaviorrp   z-passing settings to .*.hash\(\) is deprecatedrz   ú!asdrd   z*xxx)Úmarkerrp  N)
rq   rr   r.   rÍ   ÚgenhashÚdefault_markerr   ÚusingrS   rT   ©rW   r.   s     r4   Útest_90_specialz"unix_disabled_test.test_90_specialß  sœ  € åÔ Ð*YÑZÔZÐZØ”,ˆð 	×Ò˜Ÿš¨°Ñ8Ô8¸&ÑAÔAÐAð 	×Ò˜Ÿš¨°Ñ4Ô4°gÔ6LÑMÔMÐMØ×Ò˜Ÿš fÑ-Ô-¨wÔ/EÑFÔFÐFØ×Ò˜Ÿš™œÔ7¸Ô9OÑPÔPÐPð 	×Ò˜Ÿš¨°¸F˜ÑCÔCÀVÑLÔLÐLØ×Ò˜Ÿš f°V˜Ñ<Ô<¸fÑEÔEÐEØ×Ò˜Ÿš¨f˜Ñ5Ô5×:Ò:¸6ÑBÔBÀFÑKÔKÐKð 	×Ò�* g¤o°v¸rÈ%ÐÑPÔPÐPØ×Ò�* g¤l°FÀ5ÐÑIÔIÐIØ×Ò�* g¤m¸EÐÑBÔBÐBÐBÐBrD   )r<   r=   r>   r   Úunix_disabledr.   r@   rA   rY   rr  r{  r‡   rˆ   s   @r4   rl  rl  Ç  s}   ø€ € € € € ØÔ €Gð 	Ø	�cÐð	Ðð!ð !ð !Ðð>ð >ð >ð >ð >ð
Cð Cð Cð Cð Cð Cð CrD   rl  c                   óH   ‡ — 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_testTrm  rn  c                 ó€   •— t          t          | ¦  «                             ¦   «          t          j        dd¦  «         d S )Nrp   z'unix_fallback' is deprecated)rs   r~  ÚsetUprq   rr   rs  s    €r4   r€  zunix_fallback_test.setUp  s:   ø€ ÝÕ  $Ñ'Ô'×-Ò-Ñ/Ô/Ð/ÝÔ Ð*IÑJÔJÐJÐJÐJrD   c                 ón  — | j         }|                      |                     ddd¬¦  «        ¦  «         |                      |                     dd¦  «        ¦  «         dD ]V}|                      |                     d|d¬¦  «        ¦  «         |                      |                     d|¦  «        ¦  «         ŒWdS )ztest enable_wildcard flagrº   rd   T)Úenable_wildcardz!*xN)r.   r{   r|   r~   )rW   rß  Úcs      r4   Útest_90_wildcardz#unix_fallback_test.test_90_wildcard  s³   € àŒLˆØ�Š˜Ÿš ¨BÀ˜ÑEÔEÑFÔFÐFØ×Ò˜Ÿš *¨RÑ0Ô0Ñ1Ô1Ð1Øð 	5ð 	5ˆAØ×Ò˜QŸXšX j°ÀD˜XÑIÔIÑJÔJÐJØ×Ò˜QŸXšX j°Ñ3Ô3Ñ4Ô4Ð4Ð4ð	5ð 	5rD   c                 ó  — | j         }|                      |                     dd¦  «        d¦  «         |                      |                     d¦  «        d¦  «         |                      |                     dd¦  «        d¦  «         dS )z%test preserves existing disabled hashrz   rd   rn  ru  N)r.   rÍ   rw  r   rz  s     r4   Útest_91_preserves_existingz-unix_fallback_test.test_91_preserves_existing  s}   € à”,ˆð 	×Ò˜Ÿš¨°Ñ4Ô4°cÑ:Ô:Ð:Ø×Ò˜Ÿš fÑ-Ô-¨sÑ3Ô3Ð3ð 	×Ò˜Ÿš¨°Ñ8Ô8¸&ÑAÔAÐAÐAÐArD   )r<   r=   r>   r   Úunix_fallbackr.   r1  r@   rA   r€  r„  r†  r‡   rˆ   s   @r4   r~  r~  ö  s…   ø€ € € € € ØÔ €GØÐð 	Ø	�cÐðÐðKð Kð Kð Kð Kð5ð 5ð 5ð	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	BrD   r~  )^r„   Ú
__future__r   ÚloggingÚ	getLoggerr<   ÚlogÚosr(   rq   Úpasslibr   r   Úpasslib.utilsr   rD  r   r   r	   r
   Úpasslib.tests.utilsr   r   r   r   r   r   rû   rú   r@   r  r"   r&   r5   r%   r:   rF   r\   Ú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,  rK  Úmd5_crypt_os_crypt_testÚmd5_crypt_builtin_testrQ  rz  rš  r¹  rÕ  rê  rï  rþ  r  r!  r(  r/  r3  r>  Úsha1_crypt_os_crypt_testÚsha1_crypt_builtin_testrB  rN  Úsha256_crypt_os_crypt_testÚsha256_crypt_builtin_testr\  Úsha512_crypt_os_crypt_testÚsha512_crypt_builtin_testr_  rl  r~  rC   rD   r4   ú<module>r      s\
  ðØ EÐ Eð &Ð %Ð %Ð %Ð %Ð %à €€€Ð'�gÔ'¨Ñ1Ô1�Ø 	€	€	€	Ø 
€
€
€
Ø €€€ð Ð Ð Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ Dð:ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð ˆAÐ:Ñ;Ô;€	ØˆAˆoÑÔ€	ØˆaÐ+Ñ,Ô,€à:€ð TÐSÐSÐ ðð ð Ð ð&Pð &Pð &PðT "GÐ!FÐ!FÐ ð

ð 
ð 
ð 
ð 
˜ñ 
ô 
ð 
ð2$4ð $4ð $4ð $4ð $4�Kñ $4ô $4ð $4ðRH9ð H9ð H9ð H9ð H9�{ñ H9ô H9ð H9ðV ,×?Ò?À
ÑKÔKÐ Ø*×>Ò>¸yÑIÔIÐ ð

ð 
ð 
ð 
ð 
�;ñ 
ô 
ð 
ð8,ð ,ð ,ð ,ð ,�kñ ,ô ,ð ,ð^ *×=Ò=¸jÑIÔIÐ Ø(×<Ò<¸YÑGÔGÐ ð
MBð MBð MBð MBð MB�ñ MBô MBð MBðdð ð ð ð �;ñ ô ð ð&Wð &Wð &Wð &Wð &W�;ñ &Wô &Wð &WðRð ð ð ð �Kñ ô ð ðð ð ð ð �kñ ô ð ð	ð 	ð 	ð 	ð 	�kñ 	ô 	ð 	ð"ð "ð "ð "ð "Ð$ kñ "ô "ð "ðNð ð ð ð �Kñ ô ð ðð ð ð ð �[ñ ô ð ðð ð ð ð ˜;ñ ô ð ð0ð ð ð ð ˜Kñ ô ð ð2ð ð ð ð ˜kñ ô ð ð:ð ð ð ð ˜kñ ô ð ð>ð ð ð ð ˜+ñ ô ð ð8
ð 
ð 
ð 
ð 
˜;ñ 
ô 
ð 
ð4 3×FÒFÀzÑRÔRÐ Ø1×EÒEÀiÑPÔPÐ ð(ð (ð (ð (ð (˜Kñ (ô (ð (ð$ !6× IÒ IÈ*Ñ UÔ UÐ ð
.4ð .4ð .4ð .4ð .4Ð&¨ñ .4ô .4ð .4ðf1ð 1ð 1ð 1ð 1�kñ 1ô 1ð 1ðh *×=Ò=¸jÑIÔIÐ Ø(×<Ò<¸YÑGÔGÐ ð
8ð 8ð 8ð 8ð 8Ð! ;ñ 8ô 8ð 8ðtð ð ð ð Ð" Kñ ô ð ðFQð Qð Qð Qð Q�[ñ Qô Qð QðfTð Tð Tð Tð T�[ñ Tô Tð Tðr"Cð "Cð "Cð "Cð "C�Kñ "Cô "Cð "CðHð ð ð ð �;ñ ô ð ð4!ð !ð !ð !ð !�+ñ !ô !ð !ðFð ð ð ð �kñ ô ð ð 'ð 'ð 'ð 'ð 'Ð$ kñ 'ô 'ð 'ðRð ð ð ð �Kñ ô ð ð6#
ð #
ð #
ð #
ð #
�+ñ #
ô #
ð #
ðPð ð ð ð �[ñ ô ð ð"ð ð ð ð Ð(¨+ñ ô ð ð6ð ð ð ð �{ñ ô ð ðB ,×?Ò?À
ÑKÔKÐ Ø*×>Ò>¸yÑIÔIÐ ðTð Tð Tð Tð T�(ñ Tô Tð TðFYð Yð Yð Yð Y˜ñ Yô Yð Yðx 0×CÒCÀJÑOÔOÐ Ø.×BÒBÀ9ÑMÔMÐ ð
IGð IGð IGð IGð IG˜ñ IGô IGð IGðX 0×CÒCÀJÑOÔOÐ Ø.×BÒBÀ9ÑMÔMÐ ð
p1ð p1ð p1ð p1ð p1˜ñ p1ô p1ð p1ðj-Cð -Cð -Cð -Cð -C˜ñ -Cô -Cð -Cð^!Bð !Bð !Bð !Bð !B˜ñ !Bô !Bð !Bð !Bð !BrD   