+
    ¢THi.  ã                  ó`   € ^ RI Ht ^ RIHtHt ^ RIHt R.t ! R R]4      t ! R R]4      t	R# )	é    )Úannotations)ÚABCÚabstractmethod)Údeprecated_methodÚPasswordHashc                  ó:  € ] tR t^t$ RtRtRtR]R&   RtRt	]
]R 4       4       t]! RR	R
R7      ]
R 4       4       t]
]R 4       4       t]
]RR l4       4       t]
RR l4       t]
]R 4       4       t]! RR	R7      ]
R 4       4       t]! RR	R7      ]
R 4       4       tRtRtR# )r   zìThis class describes an abstract interface which all password hashes
in Passlib adhere to. Under Python 2.6 and up, this is an actual
Abstract Base Class built using the :mod:`!abc` module.

See the Passlib docs for full documentation.
FNz
int | NoneÚtruncate_sizeTc                ó   € \        R4      h)a¨  
Hash secret, returning result.
Should handle generating salt, etc, and should return string
containing identifier, salt & other configuration, as well as digest.

:param \\*\\*settings_kwds:

    Pass in settings to customize configuration of resulting hash.

    .. deprecated:: 1.7

        Starting with Passlib 1.7, callers should no longer pass settings keywords
        (e.g. ``rounds`` or ``salt`` directly to :meth:`!hash`); should use
        ``.using(**settings).hash(secret)`` construction instead.

        Support will be removed in Passlib 2.0.

:param \\*\\*context_kwds:

    Specific algorithms may require context-specific information (such as the user login).
úmust be implemented by subclass©ÚNotImplementedError)ÚclsÚsecretÚsetting_and_context_kwdss   &&,Ú-/usr/lib/python3/dist-packages/passlib/ifc.pyÚhashÚPasswordHash.hashR   s   € ô< "Ð"CÓDÐDó    z1.7z2.0z.hash())Ú
deprecatedÚremovedÚreplacementc                ó&   € V P                   ! V/ VB # )zç
Legacy alias for :meth:`hash`.

.. deprecated:: 1.7
    This method was renamed to :meth:`!hash` in version 1.7.
    This alias will be removed in version 2.0, and should only
    be used for compatibility with Passlib 1.3 - 1.6.
©r   )r   ÚargsÚkwdss   &*,r   ÚencryptÚPasswordHash.encryptr   s   € ð �xŠx˜Ð& Ñ&Ð&r   c                ó   € \        R4      h)z.verify secret against hash, returns True/Falser   r   )r   r   r   Úcontext_kwdss   &&&,r   ÚverifyÚPasswordHash.verify‚   s   € ô "Ð"CÓDÐDr   c                ó   € \        R4      h)aœ  
Return another hasher object (typically a subclass of the current one),
which integrates the configuration options specified by ``kwds``.
This should *always* return a new object, even if no configuration options are changed.

.. todo::

    document which options are accepted.

:returns:
    typically returns a subclass for most hasher implementations.

.. todo::

    add this method to main documentation.
r   r   )r   Úrelaxedr   s   &&,r   ÚusingÚPasswordHash.usingŠ   s   € ô& "Ð"CÓDÐDr   c                ó   € R# )a˜  
check if hash's configuration is outside desired bounds,
or contains some other internal option which requires
updating the password hash.

:param hash:
    hash string to examine

:param secret:
    optional secret known to have verified against the provided hash.
    (this is used by some hashes to detect legacy algorithm mistakes).

:return:
    whether secret needs re-hashing.

.. versionadded:: 1.7
F© )r   r   r   s   &&&r   Úneeds_updateÚPasswordHash.needs_updateŸ   s   € ñ( r   c                ó   € \        R4      h)z8check if hash belongs to this scheme, returns True/Falser   r   ©r   r   s   &&r   ÚidentifyÚPasswordHash.identifyµ   s   € ô "Ð"CÓDÐDr   )r   r   c                ó~   € V P                   '       d   \        R4      hV P                  ! R/ VB P                  R4      # )am  
compile settings into a configuration string for genhash()

.. deprecated:: 1.7

    As of 1.7, this method is deprecated, and slated for complete removal in Passlib 2.0.

    For all known real-world uses, hashing a constant string
    should provide equivalent functionality.

    This deprecation may be reversed if a use-case presents itself in the mean time.
r   Ú r'   )r   r   r$   r   )r   Úsetting_kwdss   &,r   Ú	genconfigÚPasswordHash.genconfig»   s9   € ð$ ××ÐÜ%Ð&GÓHÐHØ�yŠyÑ(˜<Ñ(×-Ñ-¨bÓ1Ð1r   c                ó   € \        R4      h)a	  
generated hash for secret, using settings from config/hash string

.. deprecated:: 1.7

    As of 1.7, this method is deprecated, and slated for complete removal in Passlib 2.0.

    This deprecation may be reversed if a use-case presents itself in the mean time.
r   r   )r   r   ÚconfigÚcontexts   &&&,r   ÚgenhashÚPasswordHash.genhashÑ   s   € ô "Ð"CÓDÐDr   r'   )F©N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Úis_disabledr	   Ú__annotations__Útruncate_errorÚtruncate_verify_rejectÚclassmethodr   r   r   r   r    r$   r(   r,   r1   r6   r   Ú__static_attributes__r'   r   r   r   r      s*  ‡ ñð" €Kð !%€M�:Ó$ð €Nð "Ðð. ØñEó ó ðEñ<  %°ÀIÔNØñ	'ó ó Oð	'ð ØñEó ó ðEð ØóEó ó ðEð& óó ðð* ØñEó ó ðEñ  %°Ô7Øñ2ó ó 8ð2ñ(  %°Ô7ØñEó ó 8ðEð: „Jr   c                  óB   € ] tR tRtRtRt]RR l4       t]R 4       tRt	R# )	ÚDisabledHashi  zJ
extended disabled-hash methods; only need be present if .disabled = True
TNc                ó$   € V P                  R4      # )zƒ
return string representing a 'disabled' hash;
optionally including previously enabled hash
(this is up to the individual scheme).
r/   r   r+   s   &&r   ÚdisableÚDisabledHash.disable!  s   € ð �x‰x˜‹|Ðr   c                ó   € \        R4      h)zn
given a disabled-hash string,
extract previously-enabled hash if one is present,
otherwise raises ValueError
zcannot restore original hash)Ú
ValueErrorr+   s   &&r   ÚenableÚDisabledHash.enable+  s   € ô Ð7Ó8Ð8r   r'   r8   )
r9   r:   r;   r<   r=   r>   rB   rG   rK   rC   r'   r   r   rE   rE     s4   † ñð €Kàóó ðð ñ9ó ô9r   rE   N)
Ú
__future__r   Úabcr   r   Úpasslib.utils.decorr   Ú__all__r   rE   r'   r   r   Ú<module>rQ      s5   ðÝ "ç #å 1ð ð€ô
c�3ô côZ9�<ö 9r   