+
    i}                        R t ^ RIHt ^ RIt^ RIt^ RIHt ^ RIt^ RIH	t	H
t
 ^ RIHtHt ^ RIHtHtHt ^ RIHu Ht ^ RIHtHt ^ RIHt ]! ]4      tR	 t ! R
 R]4      t ! R R]4      t ! R R]4      t  ! R R]PB                  4      t" ! R R]PF                  ]PH                  4      t%]! R4      t& ! R R]4      t' ! R R]4      t(R# )z>tests for passlib.hash -- (c) Assurance Technologies 2003-2009)with_statementN)	getLogger)ldap_md5sha256_crypt)MissingBackendErrorPasslibHashWarning)str_to_uasciiuascii_to_strunicode)HandlerCaseTestCase)uc                6   a a V V3R lo\        S! V4      4      # )z1generate all strings of given size using alphabetc              3      <"   V ^8  d   S F  pVx  K	  	  R# S F#  pS! V ^,
          4       F  pW,           x  K  	  K%  	  R# 5i)   N )sizechartailalphabethelpers   &  _/var/www/html/photoedit/myenv/lib/python3.14/site-packages/passlib/tests/test_utils_handlers.pyr   _makelang.<locals>.helper   sA     !8 
 ! !"46ND)O + !s   AA)set)r   r   r   s   f&@r   	_makelangr      s    $ vd|    c                   l   a  ] tR t^)t o RtR tR tR tR tR t	R t
R tR	 tR
 tR tR tR tRtV tR# )SkeletonTestztest hash support classesc                "  a  ! V3R lR\         P                  4      oV P                  SP                  \	        R4      4      4       V P                  SP                  R4      4       V P                  SP                  \	        R4      4      4       V P                  SP                  \	        R4      4      4       V P                  SP                  R4      4       V P                  SP                  \	        R4      4      4       V P                  SP                  \	        R	4      4      4       V P                  SP                  \	        R
4      4      4       V P                  \        SP                  R4       V P                  \        SP                  ^4       V P                  SP                  4       SP                  R4      4       V P                  SP                  RR4      4       V P                  SP                  R\	        R4      4      4       V P                  SP                  RR4      4       V P                  SP                  R\	        R4      4      4       V P                  SP                  RRRR7      4       V P                  \        SP                  RR4       V P                  \        SP                  R\	        R4      4       V P                  SP                  R4      R4       V P                  SP                  RRR7      R4       R# )ztest StaticHandler classc                   l   <a a ] tR t^2t oRtRt]! R4      t]! R4      t^t	RV V3R llt
R tRtVtV ;t# )/SkeletonTest.test_00_static_handler.<locals>.d1d1_abc                4   < \         SV `  ! R/ VB  Wn        R # Nr   )super__init__flag)selfr(   kwds	__class__r!   s   &&,r   r'   8SkeletonTest.test_00_static_handler.<locals>.d1.__init__9   s    b$(040 	r   c                R    V P                   '       d   \        R 4      # \        R4      # )ba)r(   r   r)   secrets   &&r   _calc_checksum>SkeletonTest.test_00_static_handler.<locals>.d1._calc_checksum=   s    !%qv6#6r   r(   )F)__name__
__module____qualname____firstlineno__namecontext_kwdsr   _hash_prefixchecksum_charschecksum_sizer'   r2   __static_attributes____classdictcell____classcell__)r+   __classdict__r!   s   @@r   r!   r    2   s:     D$LS6LtWNM! !7 7r   r!   _as   _a_b_cs   _cr/   r.   cN ss   _bTr4   )uhStaticHandler
assertTrueidentifyr   assertFalseassertRaises	TypeErrorassertEqual	genconfighashverify
ValueErrorr)   r!   s   &@r   test_00_static_handler#SkeletonTest.test_00_static_handler/   s   	7!! 	7 	AdG,-E*+AdG,-QtW-.U+,QsV,-QsV,-QsV,-)R[[$7)R[[!4 	5 			#u-.		#ag./3./3qw/0		#u4	89*biie<*biiag> 	t,40$7r   c                    ! R R\         P                  4      pV P                  R4      ;_uu_ 4        VP                  R4      pRRR4       V P	                  XR4       V P                  VP                  RV4      4       V P                  VP                  RV4      4       V=V P                  \        VP                  R4       R#   + '       g   i     L; i)ztest StaticHandler legacy attrc                   T   a  ] tR t^ct o Rt]R 4       t]R 4       t]R 4       tRt	V t
R# )3SkeletonTest.test_01_calc_checksum_hack.<locals>.d1r!   c                x    V'       d   \        V4      ^(8w  d   R#  \        V^4       R#   \         d     R# i ; i)(   FT)lenintrS   clsrQ   s   &&r   rK   <SkeletonTest.test_01_calc_checksum_hack.<locals>.d1.identifyf   s9    s4yB !bM  " ! !s   * 99c                   Vf   \        R4      h\        V\        4      '       d   VP                  R4      pVe#   V P	                  V4      '       g   \        R4      h\        P                  ! RV,           4      P                  4       # )Nzno secret providedutf-8zinvalid hashs   xyz)	rN   
isinstancer
   encoderK   rS   hashlibsha1	hexdigestr_   r1   rQ   s   &&&r   genhash;SkeletonTest.test_01_calc_checksum_hack.<locals>.d1.genhashp   si    >#$899fg..#]]73F#CLL,>,>$^44||FVO4>>@@r   c                d    Vf   \        R4      hV P                  W4      VP                  4       8H  # )Nzno hash specified)rS   ri   lowerrh   s   &&&r   rR   :SkeletonTest.test_01_calc_checksum_hack.<locals>.d1.verify{   s-    <$%899{{60DJJL@@r   r   N)r5   r6   r7   r8   r9   classmethodrK   ri   rR   r>   r?   rA   s   @r   r!   rY   c   sH     D  A A A Ar   r!   z%d1.*should be updated.*_calc_checksumtestN(7c622762588a0e5cc786ad0a143156f9fd38eea3xtest)rH   rI   assertWarningListrQ   rO   rJ   rR   rL   ri   rM   NotImplementedError)r)   r!   rQ   s   &  r   test_01_calc_checksum_hack'SkeletonTest.test_01_calc_checksum_hack]   s    	A!! 	A> ##$KLL776?D MIJ		&$/07D12 J-rww? MLs   CC	c                    ! R R\         P                  4      pV P                  \        VP                  R4       V P                  \        VP                  ^4       V P                  VP	                  R4      4       V P                  VP	                  R4      4       V P                  VP	                  R4      4       \        P                  ! \        R4      4      Vn
        V P                  \        VP                  R4       V P                  \        VP                  ^4       V P                  VP	                  R4      4       V P                  VP	                  R4      4       V=
\        R	4      Vn        V P                  \        VP                  R4       V P                  \        VP                  ^4       V P                  VP	                  R
4      4       V P                  VP	                  R4      4       V=R# )ztest GenericHandler.identify()c                   0   a  ] tR t^t o ]R 4       tRtV tR# ))SkeletonTest.test_10_identify.<locals>.d1c                    \        V\        4      '       d   VP                  R 4      pV\        R4      8X  d
   V ! VR7      # \        h)asciir/   checksum)rc   bytesdecoder   rS   r^   s   &&r   from_string5SkeletonTest.test_10_identify.<locals>.d1.from_string   s9    dE**;;w/D1S6>--$$r   r   N)r5   r6   r7   r8   rn   r   r>   r?   ro   s   @r   r!   ry      s     % %r   r!   NrF   r/   r.   z@.z@a!z!a)rH   GenericHandlerrM   rN   rK   rL   rJ   recompiler   _hash_regexidentrT   s   & r   test_10_identifySkeletonTest.test_10_identify   sa   	%"" 	% 	)R[[$7)R[[!4R)C()S)* AdG,)R[[$7)R[[!4D)*S)*N S6)R[[$7)R[[!4D)*S)*Hr   c                4  a  ! R R\         P                  4      oRV3R llpV P                  \        V\	        R4      4       V P                  V! \	        R4      4      \	        R4      4       V P                  V! \	        R4      4      \	        R4      4       V P                  \        V\	        R4      4       V P                  \        V\	        R	4      4       V P                  \        VR
4       V P                  S! 4       P                  \	        R4      4       R# )z%test GenericHandler checksum handlingc                   .    ] tR t^tRt^t]! R4      tRtR# ).SkeletonTest.test_11_norm_checksum.<locals>.d1r!   xzr   N)	r5   r6   r7   r8   r9   r=   r   r<   r>   r   r   r   r!   r      s    DMtWNr   r!   Nc                 ,   < S! RR V /VB P                   # )r}   r   r|   )r}   kr!   s   &,r   norm_checksum9SkeletonTest.test_11_norm_checksum.<locals>.norm_checksum   s    -x-1-666r   xxxxxxxxzxzxxxxxxxyxs   xxyxN)rH   r   rM   rS   r   rO   rN   _stub_checksumr)   r   r!   s   & @r   test_11_norm_checksum"SkeletonTest.test_11_norm_checksum   s    	%"" 	%
	7 	*mQuX> 	qy11V9=qy11V9= 	*mQwZ@ 	*mQvY? 	)]G< 	,,ai8r   c                  a  ! R R\         P                  \         P                  4      oV3R lpV P                  V! R4      R4       V P	                  \
        V\        R4      4       V P                  S! 4       P                  R4       R# )z*test GenericHandler + HasRawChecksum mixinc                       ] tR t^tRt^tRtR# )2SkeletonTest.test_12_norm_checksum_raw.<locals>.d1r!   r   N)r5   r6   r7   r8   r9   r=   r>   r   r   r   r!   r      s    DMr   r!   c                  (   < S! V / VB P                   # r   r|   )r/   r   r!   s   *,r   r   =SkeletonTest.test_12_norm_checksum_raw.<locals>.norm_checksum   s    q;A;'''r   s   1234r   Ns       )rH   HasRawChecksumr   rO   rM   rN   r   r   r   s   & @r   test_12_norm_checksum_raw&SkeletonTest.test_12_norm_checksum_raw   sk    	""B$5$5 		( 	w/9 	)]AfI> 	,,i8r   c           	       a  ! R R\         P                  \         P                  4      oV3R lpV3R lp\        R^4      p\        R^4      p\        R^4      pV P	                  \
        V4       V P	                  \
        VRR7       V P                  V! RR	7      V4       \        P                  ! RR
7      ;_uu_ 4       pV P	                  \        VRR7       V P	                  \        VRR7       V P                  V4       V P                  V! RR7      R4       V P                  V! RR7      R4       V P                  V! RR7      R4       V P                  V4       V P	                  \        VRR7       V P                  V4       RRR4       \        P                  ! RR
7      ;_uu_ 4       pV P	                  \        V^ 4       V P	                  \        V^4       V P                  V4       V P                  V! ^4      V4       V P                  V! ^4      V4       V P                  V! ^4      V4       V P                  V4       V P	                  \        V^4       V P                  V4       V P                  V! ^RR7      V4       V P                  VR.4       RRR4       S=V P                  . 4      ;_uu_ 4        V P                  \        V! R4      4      ^4       V P                  \        V! ^4      4      ^4       RRR4       R#   + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     R# ; i)z#test GenericHandler + HasSalt mixinc                   .    ] tR t^tRtRt^t^t^tRt	Rt
R# )*SkeletonTest.test_20_norm_salt.<locals>.d1r!   r#   r   Nsalt)r5   r6   r7   r8   r9   setting_kwdsmin_salt_sizemax_salt_sizedefault_salt_size
salt_charsr>   r   r   r   r!   r      s!    D$LMM !Jr   r!   c                  (   < S! R/ V B P                   # r%   r   r   r!   s   ,r   	norm_salt1SkeletonTest.test_20_norm_salt.<locals>.norm_salt   s    77<<r   c                 N   < SP                   ! RR V /VB ! RR7      P                  # )	salt_sizeTuse_defaultsr   )usingr   )szr   r!   s   &,r   gen_salt0SkeletonTest.test_20_norm_salt.<locals>.gen_salt   s%    88.b.A.DAFFFr   r#   Nr   Tr   recordrF   r/   abaabbaaaaabb)relaxedzsalt_size.*above max_salt_size)rH   HasSaltr   r   rM   rN   assertInwarningscatch_warningsrS   consumeWarningListrO   r   rs   r\   )r)   r   r   salts2salts3salts4wlogr!   s   &      @r   test_20_norm_saltSkeletonTest.test_20_norm_salt   s   	R.. 		 	G 4#4#4# 	)Y/)YT:iT2F; $$D11T j)"=j)#>##D) YD148YE2E:YF3V<##D) j)(C##D) 2$ $$D11T j(A6j(A6##D) MM(1+v.MM(1+v.MM(1+v.##D) j(A6##D)MM(1d3V<##D+K*LM% 2* ##B''S$0!4S!-q1 ('Q 211$ 21, (''s'    CL.C.L ?AL3L	 L0	3M	c                2  a  ! R R\         P                  \         P                  4      oV3R lpV P                  \        V4       V P                  \        VRR7       V P                  V! RR7      ^4       V P                  \        VRR7       \        P                  ! RR	7      ;_uu_ 4       pV P                  \        V^ R7       V P                  V4       V P                  V! ^R7      ^4       V P                  V! ^R7      ^4       V P                  V! ^R7      ^4       V P                  V4       V P                  \        V^R7       V P                  V4       RRR4       RSn
        V P                  \        VRR7       R#   + '       g   i     L1; i)
z%test GenericHandler + HasRounds mixinc                   *    ] tR tRtRtRt^t^t^tRt	R# ),SkeletonTest.test_30_init_rounds.<locals>.d1i8  r!   r   Nrounds)
r5   r6   r7   r8   r9   r   
min_rounds
max_roundsdefault_roundsr>   r   r   r   r!   r   8  s    D&LJJNr   r!   c                  (   < S! R/ V B P                   # r%   r   r   s   ,r   norm_rounds5SkeletonTest.test_30_init_rounds.<locals>.norm_rounds@  s    77>>!r   Nr   Tr   g      ?r   )rH   	HasRoundsr   rM   rN   rO   r   r   rS   r   r   )r)   r   r   r!   s   &  @r   test_30_init_rounds SkeletonTest.test_30_init_rounds5  sL   	r00 		" 	)[1)[>$7; 	)[= $$D11Tj+a@##D) [2A6[2A6[2A6##D) j+a@##D) 2  !)[tD# 21s   .B/FF	c                    ! R R\         P                  \         P                  4      pV P                  \        VP
                  4       V P                  \        VP                  4       V P                  \        VP                  R4       V P                  \        VP                  R4       V P                  VP                  4       4       RVn	        V! 4       pV P                  VP                  R4      R4       VP                  R4       VP                  R4       V P                  VP                  R4      R4       V P                  \        VP                  R4       V P                  VP                  R4      4       V P                  VP                  R4      4       RVn        V P                  VP                  4       4       VP                  R4       V P                  VP                  R4      R4       V P                  \        VP                  R	4       V P                  \        VP                  R	4       VP                  R4        ! R
 RV4      pV P                  \        VP                  R4       R# )z+test GenericHandler + HasManyBackends mixinc                   `   a  ] tR tRt o RtRtR
tRtRt]	R 4       t
]	R 4       tR tR tRtV tR	# ))SkeletonTest.test_40_backends.<locals>.d1ia  r!   Fc                d    V P                   '       d   V P                  V P                  4       R # R# TF)	_enable_a_set_calc_checksum_backend_calc_checksum_ar_   s   &r   _load_backend_a9SkeletonTest.test_40_backends.<locals>.d1._load_backend_aj  %    ===2233G3GH r   c                d    V P                   '       d   V P                  V P                  4       R # R# r   )	_enable_br   _calc_checksum_br   s   &r   _load_backend_b9SkeletonTest.test_40_backends.<locals>.d1._load_backend_br  r   r   c                    R # r/   r   r0   s   &&r   r   :SkeletonTest.test_40_backends.<locals>.d1._calc_checksum_az      r   c                    R # r.   r   r0   s   &&r   r   :SkeletonTest.test_40_backends.<locals>.d1._calc_checksum_b}  r   r   r   Nr/   r.   )r5   r6   r7   r8   r9   r   backendsr   r   rn   r   r   r   r   r>   r?   ro   s   @r   r!   r   a  sS     DL!HII! ! ! ! r   r!   anydefaultTrG   r.   r/   rE   c                       ] tR tRtRtRtR# ))SkeletonTest.test_40_backends.<locals>.d2i  Tr   N)r5   r6   r7   r8   _has_backend_ar>   r   r   r   d2r     s    !Nr   r   N)rH   HasManyBackendsr   rM   r   get_backendset_backendrL   has_backendr   rO   r2   rJ   r   rS   AssertionError)r)   r!   objr   s   &   r   test_40_backendsSkeletonTest.test_40_backends_  s   	##R%6%6 	@ 	-r~~>-r~~>-r~~uE-r~~yI)*  d++C0#6 	s
u++C0#6 	-r~~sCs+,,-  	()
s++C0#6 	*bnnc:*bnnc: 	s	" 	"."..#>r   c                   \         P                  ! R\        RR7        ! R R\        P                  \        P
                  4      pV P                  \        VP                  4       V P                  \        VP                  4       V P                  \        VP                  R4       V P                  \        VP                  R4       V P                  VP                  4       4       RVn        V! 4       pV P                  VP                  R	4      R
4       VP                  R
4       VP                  R4       V P                  VP                  R	4      R
4       V P                  \        VP                  R4       V P                  VP                  R
4      4       V P                  VP                  R4      4       RVn        V P                  VP                  4       4       VP                  R4       V P                  VP                  R	4      R4       V P                  \"        VP                  R4       V P                  \"        VP                  R4       R# )z<test GenericHandler + HasManyBackends mixin (deprecated api)ignorez0.* support for \._has_backend_.* is deprecated.*)categorymessagec                   @   a  ] tR tRt o RtRtRtRtRtR t	R t
RtV tR# )	)SkeletonTest.test_41_backends.<locals>.d1i  r!   Fc                    R # r   r   r0   s   &&r   r   :SkeletonTest.test_41_backends.<locals>.d1._calc_checksum_a  r   r   c                    R # r   r   r0   s   &&r   r   :SkeletonTest.test_41_backends.<locals>.d1._calc_checksum_b  r   r   r   Nr   )r5   r6   r7   r8   r9   r   r   r   _has_backend_br   r   r>   r?   ro   s   @r   r!   r    s-     DL!H"N"N r   r!   r   r   TrG   r.   r/   rE   N)r   filterwarningsDeprecationWarningrH   r   r   rM   r   r   r   rL   r   r  rO   r2   rJ   r   rS   )r)   r!   r   s   &  r   test_41_backendsSkeletonTest.test_41_backends  s   'G	
	##R%6%6 	  	-r~~>-r~~>-r~~uE-r~~yI)* ! d++C0#6 	s
u++C0#6 	-r~~sCs+,,- ! 	()
s++C0#6 	*bnnc:*bnnc:r   c                  a  ! R R\         P                  \         P                  4      oV3R lpV P                  \        V4       V P                  \        VRR7       V P                  V! RR7      \        R4      4       V P                  V! \        R4      R7      \        R4      4       V P                  V! \        R	4      R7      \        R	4      4       V P                  \        V\        R
4      R7       V P                  V! \        R4      R7      \        R4      4       V P                  \        V\        R4      R7       V P                  SP                  \        R4      4      4       V P                  SP                  \        R4      4      4       V P                  SP                  \        R4      4      4       V P                  SP                  \        R4      4      4       V P                  SP                  \        R4      4      4       V P                  \        SP                  R4       V P                  \        SP                  ^4       RSn        V P                  \        VRR7       R# )z#test GenericHandler + HasManyIdentsc                   n    ] tR tRtRtRt]! R4      t]! R4      ]! R4      3t]! R4      ]! R4      /t	Rt
R# )	+SkeletonTest.test_50_norm_ident.<locals>.d1i  r!   !A!BAr   Nr   )r5   r6   r7   r8   r9   r   r   default_identident_valuesident_aliasesr>   r   r   r   r!   r    s9    D%LdGMdGQtW-Lfag.Mr   r!   c                  (   < S! R/ V B P                   # r%   r  r   s   ,r   
norm_ident3SkeletonTest.test_50_norm_ident.<locals>.norm_ident  s    77== r   Nr  Tr   r  r  z!Cr  Bz!Axxxz!Bxxxz!CxxxrF   )rH   HasManyIdentsr   rM   rN   rO   r   rS   rJ   rK   rL   r  r   )r)   r  r!   s   & @r   test_50_norm_identSkeletonTest.test_50_norm_ident  s   	/!!2#4#4 	/	! 	)Z0)Zt<6$@ 	!D'2AdG<!D'2AdG<*j$@ 	!C&11T7; 	*j#? 	AgJ/0AgJ/0QwZ01QsV,-QrU+,)R[[$7)R[[!4  .*4Hr   c                   ^ RI Hp VP                  P                  R4      pV P	                  VR\        R4      R\        R4      /4       Rp\        R4      p\        R	4      pVP                  P                  V4      pV P	                  V\        VR
RVR7      4       VP                  P                  VRR7      pV P	                  V\        VR
RR7      4       VP                  P                  VRR7      pV P	                  V\        R
R\        R4      \        R4      R7      4       VP                  P                  R4      pV P	                  V\        \        R4      \        R4      RR7      4       RpVP                  P                  V4      pV P	                  V\        RRRR7      4       VP                  P                  VRR7      pV P	                  V\        \        R4      R\        R4      R7      4       R # )!ztest parsehash()rQ   OgAwTx2l6NADIr}   AwTx2l6NADIr   Ogz?$5$LKO/Ute40T3FNF95$U0prpBQd4PloSGU0pnpM4z9wKn4vZ1.jsrzQfPqxph9zLKO/Ute40T3FNF95z+U0prpBQd4PloSGU0pnpM4z9wKn4vZ1.jsrzQfPqxph9i  T)r   r   implicit_roundsr}   Fr|   )r   r   r&  )sanitizezLK**************z+U0pr***************************************)r   r&  r   r}   zL$5$rounds=10428$uy/jIAhCetNCTtb0$YWvUOXbkqlqhyoPMpN8BMe.ZGsGx2aBvxTvDFI613c3z+YWvUOXbkqlqhyoPMpN8BMe.ZGsGx2aBvxTvDFI613c3zuy/jIAhCetNCTtb0i(  )r}   r   r   z@$pbkdf2$60000$DoEwpvQeA8B4T.k951yLUQ$O26Y3/NJEiLCVaOVPxGXshyjW8ks   ;nI"U?[i`  s   0xO=\Q)r}   r   r   zO26************************zDo********************N)	passlibrQ   	des_crypt	parsehashrO   r   r   dictpbkdf2_sha1)r)   rQ   resulthrG   rE   h1s   &      r   test_91_parsehashSkeletonTest.test_91_parsehash  s    	! ))/:*a.>$!PQ N !;<"",,Q/1T6:Q"H 	I "",,Q,?1T4!PQ "",,Q,>T4%&EF"H 	I
 "",,-{|DE%&"
 	 P!!++B/SC"
 	 !!++B+>45+,"
 	r   c           	        ^ RI Hp V P                  VP                  P	                  4       R^BR^/4       V P                  VP
                  P	                  4       R^R^/4       V P                  VP                  RR4       V P                  VP                  P	                  4       RRR^R^`/4       V P                  VP                  RR	4       V P                  VP                  P	                  4       R^R^R^/4       R# )
ztest bitsize()r"  r}   r   r   i  r   Ni   i   )	r(  rQ   rO   r)  bitsizebcrypt	patchAttrr   r,  r)   rQ   s   & r   test_92_bitsizeSkeletonTest.test_92_bitsizeJ  s     	! 	//1$b&"5	7 	,,.$c637	9 	t((*:MJ**224$c8RD	F 	t'')9=I))113$c8RE	Gr   r   N)r5   r6   r7   r8   __doc__rU   ru   r   r   r   r   r   r   r  r  r0  r7  r>   r?   ro   s   @r   r   r   )   sZ     #
,8\.@f!F"9H9*E2R(ETI?V8;t(I\6pG Gr   r   c                   6   a  ] tR tRt o RtR tR tR tRtV t	R# )dummy_handler_in_registryin  z6context manager that inserts dummy handler in registryc           	     x    Wn         \        R V,           \        P                  3\	        VRR7      4      V n        R# )dummy_)r9   r   Nr   )r9   typerH   r   r+  dummy)r)   r9   s   &&r   r'   "dummy_handler_in_registry.__init__p  s2    	(T/B,=,=+?B
 
r   c                    ^ RI Hp VP                  V P                  RR7       VP	                  V P
                  4       VP                  V P                  4      V P
                  J g   Q hV P
                  # )    registryF	locations)r(  rD  _unload_handler_namer9   register_crypt_handlerr?  get_crypt_handler)r)   rD  s   & r   	__enter__#dummy_handler_in_registry.__enter__w  sY    $%%dii5%A''

3))$))4

BBBzzr   c                L    ^ RI Hp VP                  V P                  RR7       R# )rB  rC  FrE  N)r(  rD  rG  r9   )r)   exc_inforD  s   &* r   __exit__"dummy_handler_in_registry.__exit__~  s    $%%dii5%Ar   )r?  r9   N)
r5   r6   r7   r8   r9  r'   rJ  rN  r>   r?   ro   s   @r   r;  r;  n  s     @B Br   r;  c                   T   a  ] tR tRt o RtR tR tR tR tR t	R t
R	 tR
 tRtV tR# )PrefixWrapperTesti  ztest PrefixWrapper classc                   \         P                  ! RRRRRR7      pV P                  VP                  R4       V P	                  VP
                  R4       V P	                  VP                  \        4       V P	                  VP
                  \        4       \        R4      ;_uu_ 4       pV P	                  VP                  \        4       RRR4       R#   + '       g   i     R# ; i)z*test PrefixWrapper lazy loading of handlerr!   r   {XXX}{MD5}T)lazyN)	rH   PrefixWrapperrO   _wrapped_nameassertIs_wrapped_handlerwrappedr   r;  r)   r!   r?  s   &  r   test_00_lazy_loading&PrefixWrapperTest.test_00_lazy_loading  s    dJtL 	)):6b))40 	bjj(+b))84 'z22eMM"**h/ 3222s   '!CC#	c                   \         P                  ! RRRR4      pV P                  VP                  R4       V P	                  VP
                  \        4       V P	                  VP                  \        4       \        R4      ;_uu_ 4       pV P	                  VP                  \        4       RRR4       R#   + '       g   i     R# ; i)z,test PrefixWrapper active loading of handlerr!   r   rS  rT  N)	rH   rV  rO   rW  rX  rY  r   rZ  r;  r[  s   &  r   test_01_active_loading(PrefixWrapperTest.test_01_active_loading  s    dJA 	)):6b))84bjj(+ 'z22eMM"**h/ 3222s   	!B44C	c                   \         P                  ! R\        RR4      pV P                  VP                  R4       V P                  VP                  \        4       V P                  VP                  \        4       \        R4      ;_uu_ 4       pV P                  VP                  \        4       RRR4       R#   + '       g   i     R# ; i)z4test PrefixWrapper with explicitly specified handlerr!   rS  rT  Nr   )	rH   rV  r   rO   rW  rX  rY  rZ  r;  r[  s   &  r   test_02_explicit"PrefixWrapperTest.test_02_explicit  s     dHgw? 	))40b))84bjj(+ 'z22eMM"**h/ 3222s   !B88C		c                   \         P                  ! R RRR4      pV P                  VP                  R 4       V P	                  VP
                  \        P
                  4       V P                  R\        V4      9   4       \         P                  ! RRR4      pV P	                  VP
                  \        P
                  4       V P                  R\        V4      9   4       R# )r!   r   rS  rT  r   r   r   N)rH   rV  rO   r9   rX  r   r   rL   dirr   rJ   )r)   r!   r   s   &  r   test_10_wrapped_attributes,PrefixWrapperTest.test_10_wrapped_attributes  s    dJA$'boox'<'<=R01dNG<boo|'@'@AB/0r   c                   \         P                  ! R RRR4      pRpRpV P                  VP                  4       R4       V P	                  \
        VP                  RR4       V P                  VP                  RV4      V4       V P	                  \        VP                  RV4       V P                  VP                  R4      V4       V P                  VP                  V4      4       V P                  VP                  V4      4       V P	                  \        VP                  RV4       V P                  VP                  RV4      4       R# )	r!   r   rS  rT  z{XXX}X03MO1qnZdYdgyfeuILPmQ==z{MD5}X03MO1qnZdYdgyfeuILPmQ==z{XXX}1B2M2Y8AsgTpgAmY7PhCfg==passwordN)rH   rV  rO   rP   rM   rN   ri   rS   rQ   rJ   rK   rL   rR   )r)   r!   dphlphs   &   r   test_11_wrapped_methods)PrefixWrapperTest.test_11_wrapped_methods  s   dJA-- 	)HI 	)RZZTBJ4c:*bjj*cB 	,c2 	C()S)* 	*biiSA		*c23r   c           	     d   \         P                  ! R RR4      pV P                  VP                  \	        R4      4       V P                  VP                  R4       \         P                  ! R RR4      pV P                  VP                  R4       V P                  VP                  R4       \         P                  ! RRRR4      pV P                  VP                  R4       V P                  VP                  R4       \         P                  ! RRRR	R
7      pV P                  VP                  \	        R	4      4       V P                  VP                  R4       \         P                  ! RRRRR
7      pV P                  \        \         P                  RRRRR
7       V P                  \        \         P                  RRRRR
7       \         P                  ! RRR4      pV P                  VP                  R4       V P                  VP                  \	        R4      \	        R4      34       \         P                  ! RRRRR
7      pV P                  VP                  \	        R4      4       V P                  VP                  R4       V P                  \        \         P                  RRRR
7       V P                  R4      ;_uu_ 4        \         P                  ! RRRRR7      pRRR4       V P                  VP                  R4       V P                  VP                  R4       R#   + '       g   i     LJ; i)h2r   rS  z
{XXX}{MD5}Nr)  r/  rT  h3z{Xr  z{XXX}Az{XYz{XXXXh4phpassz{XXX}$P$z{XXX}$H$h5Th6z#orig_prefix.*may not work correctlyh7$?)orig_prefixprefix)
rH   rV  rO   r   r   rX  r  rM   rS   rs   r)   r.  s   & r   test_12_identPrefixWrapperTest.test_12_ident  sk   T:w7!L/2annd+ T;8aggt$annd+ T:w@aggt$annd+ T:wdC!D'*annd+ T:whG*b&6&6j! 	 	0*b&6&6j! 	 	2 T8W5aggt$!J-:)GH T;tD!G*-annd+ 	*b&6&6kQUV ##$IJJ  xSMA K.$' KJs   LL/	c                p    \         P                  ! RRRRR7      pV P                  \        V4      R4       R# )ztest repr()ro  	md5_cryptrS  z$1$rx  z(?x)^PrefixWrapper\(
                ['"]h2['"],\s+
                ['"]md5_crypt['"],\s+
                prefix=u?["']{XXX}['"],\s+
                orig_prefix=u?["']\$1\$['"]
            \)$N)rH   rV  assertRegexreprrz  s   & r   test_13_reprPrefixWrapperTest.test_13_repr  s1    T;UKa	r   c                z    \         P                  ! RRRR7      pV P                  \        VP                  R4       R# )ztest orig_prefix sanity checkro  r~  z$6$r  rp   N)rH   rV  rM   rS   rQ   rz  s   & r   test_14_bad_hash"PrefixWrapperTest.test_14_bad_hash  s.     T;EB*afff5r   r   N)r5   r6   r7   r8   r9  r\  r_  rb  rf  rl  r{  r  r  r>   r?   ro   s   @r   rQ  rQ    s6     "0 00140-(^	6 6r   rQ  c                   J   a  ] tR tRt o RtRt]P                  t^(t	R t
RtV tR# )UnsaltedHashi  z!test algorithm which lacks a saltunsalted_test_hashc                    \        V\        4      '       d   VP                  R 4      pRV,           p\        \        P
                  ! V4      P                  4       4      # )rb   s   boblious)rc   r
   rd   r   re   rf   rg   r)   r1   datas   && r   r2   UnsaltedHash._calc_checksum  sD    fg&&]]7+FV#W\\$/99;<<r   r   N)r5   r6   r7   r8   r9  r9   rH   LOWER_HEX_CHARSr<   r=   r2   r>   r?   ro   s   @r   r  r    s'     +D''NM= =r   r  c                      a  ] tR tRt o RtRtR
t^t^t^(t	]
P                  ;tt]P                  ! ]! R4      4      t]R 4       tR tR tRtV tR	# )
SaltedHashi$  ztest algorithm with a saltsalted_test_hashz^@salt[0-9a-f]{42,44}$c                    V P                  V4      '       g    \        P                  P                  V 4      h\	        V\
        4      '       d   VP                  R 4      pV ! V^R VRR R7      # )r{   N)r   r}   i)rK   rH   excInvalidHashErrorrc   r~   r   r^   s   &&r   r   SaltedHash.from_string0  sZ    ||D!!&&))#..dE"";;w'DQsd34j99r   c                h    \        R 4      V P                  V P                  3,          p\        V4      # )z	@salt%s%s)r   r   r}   r	   r6  s   & r   	to_stringSaltedHash.to_string8  s(    ~DMM ::T""r   c                .   \        V\        4      '       d   VP                  R 4      pV P                  P                  R4      V,           V P                  P                  R4      ,           p\	        \
        P                  ! V4      P                  4       4      # )rb   r{   )rc   r
   rd   r   r   re   rf   rg   r  s   && r   r2   SaltedHash._calc_checksum<  sg    fg&&]]7+Fyy(61DII4D4DW4MMW\\$/99;<<r   r   Nr   )r5   r6   r7   r8   r9  r9   r   r   r   r=   rH   r  r   r<   r   r   r   r   rn   r   r  r2   r>   r?   ro   s   @r   r  r  $  sf     $DLMMM"$"4"44J**Q789K: :#= =r   r  u   Ιωαννηςc                   6   a  ] tR tRt o ]tR]R3.tR tRt	V t
R# )UnsaltedHashTestiK  (96b329d120b97ff81ada770042e44ba87343ad2bc                    V P                  \        \        R R7       V P                  \        \        P                  ^R7       R# )xr   r   N)rM   rN   r  rP   )r)   s   &r   test_bad_kwdsUnsaltedHashTest.test_bad_kwdsS  s2    )\<)\%;%;AFr   r   N)ri  (61cfd32684c47de231f1f982c214e884133762c0)r5   r6   r7   r8   r  handler
UPASS_TEMPknown_correct_hashesr  r>   r?   ro   s   @r   r  r  K  s-     G 	A	?@
G Gr   r  c                   6   a  ] tR tRt o ]tR]R3.tR tRt	V t
R# )SaltedHashTestiW  z1@salt9f978a9bfe360d069b0c13f2afecd570447407fa7e48c                    \        R R7      P                  pV P                  \        \         VRR7       V P                  \        \         VRR7       R# )Tr   N)r}   r   r   )r  r   rM   rN   rS   )r)   stubs   & r   r  SaltedHashTest.test_bad_kwds_  s@    t,;;)Z$TJ*j4eLr   r   N)ri  z/@salt77d71f8fe74f314dac946766c1ac4a2a58365482c0)r5   r6   r7   r8   r  r  r  r  r  r>   r?   ro   s   @r   r  r  W  s-     G 	H	HI
M Mr   r  ))r9  
__future__r   r   re   loggingr   r   passlib.hashr   r   passlib.excr   r   passlib.utils.compatr   r	   r
   passlib.utils.handlersutilshandlersrH   passlib.tests.utilsr   r   r   r5   logr   r   objectr;  rQ  rI   r  r   r   r  r  r  r  r   r   r   <module>r     s    D & 	    0 ?8 8 # # 5 "

xG8 xGJB B(O6 O6l
=2## 
==R.. =J ;<

G{ 
GM[ Mr   