%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /lib/python3.9/site-packages/passlib/handlers/__pycache__/
Upload File :
Create Path :
Current File : //lib/python3.9/site-packages/passlib/handlers/__pycache__/fshp.cpython-39.opt-1.pyc

a

f�Wcw�@s�dZddlmZmZddlZddlZe�e�Zddl	m
Z
ddlmm
ZddlmZmZmZmZddlmZdgZGdd�dejejejej�ZdS)	zpasslib.handlers.fshp
�)�	b64encode�	b64decodeN)�
to_unicode)�
bascii_to_str�	iteritems�u�unicode)�pbkdf1�fshpcs�eZdZdZdZdZejZe	d�Z
dZdZdZ
dZdZd	ZdZd
ddd
d�Zedd�eD�dd�ee�D��Zed#�fdd�	�ZdZd$�fdd�	Zedd��Zedd��Zedd��Ze�e	d�ej �Z!edd��Z"dd �Z#d!d"�Z$�Z%S)%r
apThis class implements the FSHP password hash, and follows the :ref:`password-hash-api`.

    It supports a variable-length salt, and a variable number of rounds.

    The :meth:`~passlib.ifc.PasswordHash.using` method accepts the following optional keywords:

    :param salt:
        Optional raw salt string.
        If not specified, one will be autogenerated (this is recommended).

    :param salt_size:
        Optional number of bytes to use when autogenerating new salts.
        Defaults to 16 bytes, but can be any non-negative value.

    :param rounds:
        Optional number of rounds to use.
        Defaults to 480000, must be between 1 and 4294967295, inclusive.

    :param variant:
        Optionally specifies variant of FSHP to use.

        * ``0`` - uses SHA-1 digest (deprecated).
        * ``1`` - uses SHA-2/256 digest (default).
        * ``2`` - uses SHA-2/384 digest.
        * ``3`` - uses SHA-2/512 digest.

    :type relaxed: bool
    :param relaxed:
        By default, providing an invalid value for one of the other
        keywords will result in a :exc:`ValueError`. If ``relaxed=True``,
        and the error can be corrected, a :exc:`~passlib.exc.PasslibHashWarning`
        will be issued instead. Correctable errors include ``rounds``
        that are too small or too large, and ``salt`` strings that are too long.

        .. versionadded:: 1.6
    )�salt�	salt_size�rounds�variantz{FSHP�NiS�l��Zlinear)Zsha1�)Zsha256� )Zsha384�0)Zsha512�@)rr��cCsg|]}t|�|f�qS�)r)�.0�krr�9/usr/lib/python3.9/site-packages/passlib/handlers/fshp.py�
<listcomp>_�zfshp.<listcomp>cCsg|]\}}|d|f�qS)rr)rr�vrrrr`rcs.tt|�jfi|��}|dur*|�|�|_|S)N)�superr
�using�
_norm_variant�default_variant)�clsr�kwds�subcls��	__class__rrrfsz
fshp.usingcsV|�d�|_|dur |�|�}n|jr.|j}ntd��||_tt|�jfi|��dS)N�use_defaultszno variant specified)	�getr'r r!�	TypeErrorrrr
�__init__)�selfrr#r%rrr*usz
fshp.__init__cCspt|t�r|�d�}t|t�rHz|j|}WntyFtd��Yn0t|t�sZtd��||j	vrltd��|S)N�asciizinvalid fshp variantz'fshp variant must be int or known alias)
�
isinstance�bytes�decoder�_variant_aliases�KeyError�
ValueError�intr)�
_variant_info)r"rrrrr �s




zfshp._norm_variantcCs|j|jdS)Nr�r4r�r+rrr�checksum_alg�szfshp.checksum_algcCs|j|jdS)Nrr5r6rrr�
checksum_size�szfshp.checksum_sizez�
            ^
            \{FSHP
            (\d+)\| # variant
            (\d+)\| # salt size
            (\d+)\} # rounds
            ([a-zA-Z0-9+/]+={0,3}) # digest
            $c	Cs�t|dd�}|j�|�}|s(tj�|��|�dddd�\}}}}t|�}t|�}t|�}zt|�	d��}Wnt
y�tj�|��Yn0|d|�}||d�}|||||d�S)Nr,�hashrrr�)r�checksumr
r)r�_hash_regex�match�uh�excZInvalidHashError�groupr3r�encoder)ZMalformedHashError)	r"r9�mrrr
�datar�chkrrr�from_string�szfshp.from_stringcCs4|j}|j}tt||��}d|jt|�|j|fS)Nz{FSHP%d|%d|%d}%s)r;rrrr�lenr
)r+rDrrCrrr�	to_string�szfshp.to_stringcCs.t|t�r|�d�}t|j|j||j|jd�S)Nzutf-8)�digest�secretrr
Zkeylen)r-rrAr	r7rr
r8)r+rIrrr�_calc_checksum�s

�zfshp._calc_checksum)N)N)&�__name__�
__module__�__qualname__�__doc__�nameZsetting_kwdsr>ZPADDED_BASE64_CHARSZchecksum_charsr�identZdefault_salt_sizeZ
max_salt_sizeZdefault_roundsZ
min_roundsZ
max_roundsZrounds_costr!r4�dictrr0�classmethodrrr*r �propertyr7r8�re�compile�Xr<rErGrJ�
__classcell__rrr%rr
sN)���	




�	

)rN�base64rrrTZloggingZ	getLoggerrK�logZ
passlib.utilsrZpasslib.utils.handlersZutils�handlersr>Zpasslib.utils.compatrrrrZpasslib.crypto.digestr	�__all__Z	HasRoundsZ
HasRawSaltZHasRawChecksumZGenericHandlerr
rrrr�<module>s�

Zerion Mini Shell 1.0