
    K}bg                    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           n/home/e360mart.nyusoft.in/public_html/e360mart_env/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	))++GG& 	 	 	;;;;;	  &vvwww/6!'  "V+7k'"	3%%%%% 	 	 	D	 ,vv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<     	*dm$#$\?? 	 	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        mG 	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    ,*	) 	vy99:::vx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        ""oG 	-+,,-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        lG 	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        ""nG 	&$%%
 	!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CdCdCCC 	)WKKgallKdKKK 	*gCCsCdCCC*gAAqADAAAAArD   N)r<   r=   r>   r   r   fshpr.   r@   rA   rY   rB   r   rC   rD   r4   r   r   @  s        iG 	<	
		 
 8 	99
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+        lG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!!!OO/777 	=<<<<< 777)*** 2--...../// -/fk:NNN/fmZQUVVVVVrD   N)	r<   r=   r>   r   hex_md5r.   r@   rA   r   rC   rD   r4   r   r     sC        lG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+        mG@	@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+        oG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        oG	 
  		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    mm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    fe$$ 	*"(FD%%)KD%%%%'''rD   N)r<   r=   r>   r   htdigestr.   r@   	UPASS_USD	UPASS_WAVrA   rY   r   r   rC   rD   r4   r   r     so        mG	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+        mG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+        nG;	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    /A4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=kko>	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    mmJ'''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 	? 	?LFDD**6488F9]]40011DZVZ77$77>>>>)VZ33333rD   )r<   r=   r>   r   rF  r.   secret_case_insensitiver	   rA   rY   rH  rC   rD   r4   r,  r,    s        kG" 	<;7
 	17:8 
		AB	
		AB !F))T	>?
!F))W	AB
!F))Y	!CD
!F))W	AB1: 	+!

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        nG 	;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        jG  	D
 	D
 	A@@@
 	P
 	C
 	;@P
!H++qq{{	#%GH
!N

QQ~..	/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        kG  	A>>9MLVWX@@@
!H++u	AB
!N

U	#%GH
!N

W	%'IJ u	AB3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`0x01005B20054332752E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B332752E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B3AF60x01005B20054332752E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B3s^   0x01005B200543327G2E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B332752E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B3^0x01005B200543327G2E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B332752E1BC2E7C5DF0F9EBFE486E9BEE063E8D3B3N)r<   r=   r>   r   	mssql2000r.   rI  r   r@   rA   rx  rY   r	   rB   rC   rD   r4   r  r    s        nG+ 	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)toto60x01004086CEB6BF932BC4151A1AF1F13CD17301D70816A8886908)r  60x01004A335DCEDB366D99F564D460B1965B146D6184E4E1025195)r  60x0100E11D573F359629B344990DCD3D53DE82CF8AD6BBA7B638B6)r  60x010036D726AE86834E97F20B198ACD219D60B446AC5E48C54F30)titi60x01004086CEB60ED526885801C23B366965586A43D3DEAC6DD3FD)r  60x0100A607BA7C54A24D17B565C59F1743776A10250F581D482DA8)r  60x01000508513EADDF6DB7DDD270CCA288BF097F2FF69CC2DB74FB)r  60x01008408C523CF06DCB237835D701C165E68F9460580132E28ED)r  60x0100BF088517935FC9183FE39FDEC77539FD5CB52BA5F5761881)r  60x010034767D5C0CFA5FDCA28C4A56085E65E882E71CB0ED250341)r  60x0100993BF2315F36CC441485B35C4D84687DC02C78B0E680411F)r  60x010086489146C46DD7318D2514D1AC706457CBF6CD3DF8407F07)r  60x0100CF465B7B12625EF019E157120D58DD46569AC7BF4118455D)r  60x01002D60BA07FE612C8DE537DF3BFCFA49CD9968324481C1A8A8)r  r  60x0100624C0961B28E39FEE13FD0C35F57B4523F0DA1861C11D5A560x010083104228FAD559BE52477F2131E538BE9734E5C4B0ADEFD7)60x01005b20054332752e1bc2e7c5df0f9ebfe486e9bee063e8d3b3r  r  )60X010036D726AE86834E97F20B198ACD219D60B446AC5E48C54F3060x020036D726AE86834E97F20B198ACD219D60B446AC5E48C54F3040x010036D726AE86834E97F20B198ACD219D60B446AC5E48C54F80x010036D726AE86834E97F20B198ACD219D60B446AC5E48C54F3012r  60x010036D726AE86G34E97F20B198ACD219D60B446AC5E48C54F30N)r<   r=   r>   r   	mssql2005r.   r   r@   rA   rx  rY   rB   rC   rD   r4   r  r    s        nG 	K
 	K
 	JI 	K
 	KJIILK
 	LKKKKK 
NO	NOm7v	L! ! !" 	A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@    OOH%%__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]]3r-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        mG 	%(
 	' 
()$ 	!
     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        lG
 	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        kG 
<==>	<==> 	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        oG 	?= 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        mG"  	1
!J--5	"$673<
 	65
 	24>
 x	 "457@  !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        mG 	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[        kG 	<
 	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        nG 	  
S=kko>	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        oG 	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$anotherlongsaltstringTa very much longer text to encrypt.  This one even stretches over morethan one line.zK$5$rounds=1400$anotherlongsalts$Rx.j8H.h8HjEDGomFU8bDkXm3XIUnzyxf12oP84Bnq1)z$5$rounds=77777$short4we have a short salt string but not a short passwordzA$5$rounds=77777$short$JiO1O3ZpDAxGJeaDIuqCoEFysAe1mZNJRs3pw0KQRd/)z!$5$rounds=123456$asaltof16chars..a short stringzM$5$rounds=123456$asaltof16chars..$gP3VQ/6X7UUEW3HkBn2w1/Ptq2jxPyzV/cZKmF/wJvD)z$5$rounds=10$roundstoolow$the minimum number is still observedzG$5$rounds=1000$roundstoolow$yfvwcWrQ8l/K0DAWyuPMDNHpIVlTQebY9l/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     dC   	M]T]3L%M%M 	MKLLL|""64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JM'
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4g6LMMMf--w/EFFF79OPPP 	FCCVLLLfV<<fEEEf55::6BBFKKK 	*govr%PPP*glF5III*gmE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 	5AQXXjDXIIJJJQXXj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4c:::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:;;	Ao	a+,,: TSS    &P &P &PT "G!F!F 

 
 
 
 
 
 
 
2$4 $4 $4 $4 $4K $4 $4 $4RH9 H9 H9 H9 H9{ H9 H9 H9V ,??
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FzRR 1EEiPP ( ( ( ( (K ( ( ($ !6 I I* U U 
.4 .4 .4 .4 .4& .4 .4 .4f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CJOO .BB9MM 
IG IG IG IG IG IG IG IGX 0CCJOO .BB9MM 
p1 p1 p1 p1 p1 p1 p1 p1j-C -C -C -C -C -C -C -C^!B !B !B !B !B !B !B !B !B !BrD   