__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
�

�M�g<��
�&�SrSSKJrJr SSKrSSKJr \R"\5r	SSK
r
SSKrSSKJ
r
 SrSqSSKJr SSKJr SSKJrJrJr SS	KJrJr SS
KJrJrJrJrJ r  SSK!J"s J#r$ S/r%\"S5r&\"S
5r'\"S5r(\(\&\'4r)\*"\)5r+Sr,SSK-r\."\S5(dSr,SrO\."\S5(dSr,Sr\."\S5(a(\R`"5r1\RdRfr4O"SS5r5\5"5r1Sr4"SS\$Rl\$Rn\$Rp\$Rr\$Rt\$Rv5r<"SS\<5r="SS\<5r>"SS\<5r?"SS\=\<5r-g!\/a SrN�f=f) a�passlib.handlers.argon2 -- argon2 password hash wrapper

References
==========
* argon2
    - home: https://github.com/P-H-C/phc-winner-argon2
    - whitepaper: https://github.com/P-H-C/phc-winner-argon2/blob/master/argon2-specs.pdf
* argon2 cffi wrapper
    - pypi: https://pypi.python.org/pypi/argon2_cffi
    - home: https://github.com/hynek/argon2_cffi
* argon2 pure python
    - pypi: https://pypi.python.org/pypi/argon2pure
    - home: https://github.com/bwesterb/argon2pure
�)�with_statement�absolute_importN)�metadata)�warn)�exc)�
MAX_UINT32)�
classproperty�to_bytes�render_bytes)�b64s_encode�b64s_decode)�u�unicode�
bascii_to_str�
uascii_to_str�PY2�argon2�i�d�id�Typezb'argon2' module points to unsupported 'argon2' pypi package; please install 'argon2-cffi' instead.�	low_levelz@'argon2-cffi' is too old, please update to argon2_cffi >= 18.2.0�PasswordHasherc�,�\rSrSrSrSrSrSrSrSr	Sr
g)�_DummyCffiHasher�^z�
dummy object to use as source of defaults when argon2_cffi isn't present.
this tries to mimic the attributes of ``argon2.PasswordHasher()`` which the rest of
this module reads.

.. note:: values last synced w/ argon2 19.2 as of 2019-11-09
�i��N)�__name__�
__module__�__qualname__�__firstlineno__�__doc__�	time_cost�memory_cost�parallelism�salt_len�hash_len�__static_attributes__r��9/usr/lib/python3/dist-packages/passlib/handlers/argon2.pyrr^s"��	��	��������r+r�c�^�\rSrSrSrSrSr\Rr	\
RRS-r\
RRS-r
\RrSr\r\R&rSr\rS	rS
r\rSrSrSrS
r0r\ S5r!\"r#\RHr$\r%\RLr&\'S5r(Sr)\*S!U4Sjj5r+\*S5r,\-R\"S5r/\*S5r0\-R\"S\-Rb5r2\*S5r3Sr4S"U4Sjjr5\*S5r6\*S5r7\*S#Sj5r8\*S5r9U4Sjr:Sr;\*S5r<\*S$Sj5r=S r>U=r?$)%�
_Argon2Common�ta
Base class which implements brunt of Argon2 code.
This is then subclassed by the various backends,
to override w/ backend-specific methods.

When a backend is loaded, the bases of the 'argon2' class proper
are modified to prepend the correct backend-specific subclass.
r)
�salt�	salt_sizer(�roundsr%r&r'�digest_sizer)�type)r5)r(r%r)r4���lineari���N���Fc�L�UR5 [UR5$)zJ
return tuple of types supported by this backend

.. versionadded:: 1.7.2
)�get_backend�tuple�_backend_type_map)�clss r,�type_values�_Argon2Common.type_values�s��	�����S�*�*�+�+r+c�(�UR[:H$)zV
flag indicating a Type D hash

.. deprecated:: 1.7.2; will be removed in passlib 2.0
)r5�TYPE_D��selfs r,�type_d�_Argon2Common.type_d�s���y�y�F�"�"r+c		�6>�UbSU	;a[S5eXIS'UbSU	;a[S5eX9S'UbUb[S5eUnUbUb[S5eUn[[U]"S0U	D6n
UbU
R	U5U
lU	R
S5nUbK[U[R5(a[U5n[R"X�S[S	US
9U
l
Ub>[U[R5(a[U5nU
RX+S9U
lU
R!U
RU
R"5 UbK[U[R5(a[U5nUS:aUS
:wa[%SU4-5eX�lU
$)Nr3z/'time_cost' and 'rounds' are mutually exclusiver2z1'salt_len' and 'salt_size' are mutually exclusivez3'hash_len' and 'digest_size' are mutually exclusivez8'checksum_size' and 'digest_size' are mutually exclusive�relaxedrr4)�min�max�paramrH)rHr7r9z7max_threads (%d) must be -1 (unlimited), or at least 1.r)�	TypeError�superr/�using�
_norm_typer5�get�
isinstance�uh�native_string_types�int�norm_integerr�
checksum_size�_norm_memory_costr&�_validate_constraintsr'�
ValueError�max_threads)
r>r5r&r(r%r4rVr)rZ�kwds�subclsrH�	__class__s
            �r,rN�_Argon2Common.usings����� ��4��� Q�R�R�&��N����d�"�� S�T�T� (������&�� U�V�V�"�K��$��&�� Z�[�[�'�K��}�c�0�8�4�8���� �+�+�D�1�F�K��(�(�9�%���"��+�r�'=�'=�>�>�!�+�.��#%�?�?�6�B�T^�9F�PW�$Y�F� ��"��+�r�'=�'=�>�>�!�+�.��!'�!9�!9�+�!9�!W�F��	�$�$�V�%7�%7��9K�9K�L��"��+�r�'=�'=�>�>�!�+�.���Q��;�"�#4� �!Z�"-��"0�1�1�!,���
r+c�N�SU-nX:a[SURUX#4-5eg)Nr6zO%s: memory_cost (%d) is too low, must be at least 8 * parallelism (8 * %d = %d))rY�name)r>r&r'�min_memory_costs    r,rX�#_Argon2Common._validate_constraintsCs@���k�/���(��=�!�h�h��)�<�<�=�
=�)r+z^\$argon2[a-z]+\$c�h�[R"U5nURRU5SL$�N)rR�to_unicode_for_identify�_ident_regex�match)r>�hashs  r,�identify�_Argon2Common.identifyUs.���)�)�$�/�����%�%�d�+�4�7�7r+s�
        ^
        \$argon2(?P<type>[a-z]+)\$
        (?:
            v=(?P<version>\d+)
            \$
        )?
        m=(?P<memory_cost>\d+)
        ,
        t=(?P<time_cost>\d+)
        ,
        p=(?P<parallelism>\d+)
        (?:
            ,keyid=(?P<keyid>[^,$]+)
        )?
        (?:
            ,data=(?P<data>[^,$]+)
        )?
        (?:
            \$
            (?P<salt>[^$]+)
            (?:
                \$
                (?P<digest>.+)
            )?
        )?
        $
    c�z�[U[5(aURS5n[U[5(d[R
"US5eURRU5nU(d[R"U5eURSSSSSSS	S
S5	u	p4pVpxp�nU(a[S5eU"URS
5U(a[U5OS[U5[U5[U5U
(a[U
5OSU	(a[U	5OSU(a
[U5S9$SS9$)N�utf-8rhr5�versionr&r%r'�keyid�datar1�digestz&argon2 'keyid' parameter not supported�asciir)r5rmr&r3r'r1ro�checksum)rQr�encode�bytesr�ExpectedStringError�_hash_regexrg�MalformedHashError�group�NotImplementedError�decoderTr
)r>rh�mr5rmr&r%r'rnror1rps            r,�from_string�_Argon2Common.from_string�s���d�G�$�$��;�;�w�'�D��$��&�&��)�)�$��7�7��O�O�!�!�$�'����(�(��-�-�
�G�G�F�I�}�k�=��V�V�X�
7�	V��{�{�4�v��%�&N�O�O�����W�%�$+�C��L���K�(��y�>��K�(�&*��T�"��&*��T�"��,2�[��(�	
�		
�9=�	
�		
r+c
��URnUS:XaSnOSU-nURnU(a"S[[UR55-nOSnS[	UR
5UURURURU[[UR55[[UR554-$)Nr�zv=%d$z,data=z"$argon2%s$%sm=%d,t=%d,p=%d%s$%s$%s)rmrorrrr5r&r3r'r1rr)rDrm�vstrro�kdstrs     r,�	to_string�_Argon2Common.to_string�s����,�,���d�?��D��W�$�D��y�y����}�[����-C�D�D�E��E�4��$�)�)�$������K�K������+�d�i�i�0�1��+�d�m�m�4�5�	7
�	
�		
r+c�>�U(a[S5 Ube[nURS5nUb[U5Ul[
[U]"S	0UD6 Uc2[R"XRURSS9(deOURU5Ul
Uc2[R"XRURSS9(deOURU5UlUc2[R"XRURSS9(deOURU5UlUcUR beg[#U[$5(d![R&R)USS5eXPlg)
Nzoargon2 `type_d=True` keyword is deprecated, and will be removed in passlib 2.0; please use ``type="d"`` insteadrrr5)rKrmr&rtror)rrBrP�lenrVrMr/�__init__rR�validate_default_valuer5rOrm�
_norm_versionr&rWrorQrtr�ExpectedTypeError)	rDr5rErmr&ror[rrr]s	        �r,r��_Argon2Common.__init__�sc�����3�
4��<��<��D��8�8�J�'����!$�X��D��	�m�T�+�3�d�3��<��,�,�T�9�9�d�o�o�U[�\�\�\�����-�D�I��?��,�,�T�<�<��AS�AS�3<�>�
>�>� �-�-�g�6�D�L����,�,�T�3C�3C�T�E[�E[�3@�B�
B�B� $�5�5�k�B�D���<��9�9�$�$�$��d�E�*�*��f�f�.�.�t�W�f�E�E��Ir+c�@�[U[5(dS[(a'[U[5(aUR	S5nO![
RRUSS5eU[;aU$UR5nU[;aU$[SU<35e)Nrq�strr5zunknown argon2 hash type: )rQrrrtrzrRrr��
ALL_TYPES_SET�lowerrY)r>�value�temps   r,rO�_Argon2Common._norm_type�s����%��)�)��s�z�%��/�/����W�-���f�f�.�.�u�e�V�D�D��M�!��L��{�{�}���=� ��K��5�B�C�Cr+c�D�[U[R5(d![RR	USS5eUS:aUS:wa[SU4-5eUR
5nXR:�a%[SURXUR4-5eU$)N�integerrmr-rzinvalid argon2 hash version: %dzk%s: hash version 0x%X not supported by %r backend (max version is 0x%X); try updating or switching backends)	rQrR�	int_typesrr�rYr;�max_versionr`)r>rm�backends   r,r��_Argon2Common._norm_version
s����'�2�<�<�0�0��&�&�*�*�7�I�y�I�I��T�>�g��o��>�'��K�L�L��/�/�#���_�_�$��Y�!�h�h��#�/�/�J�K�L�
L��r+c�D�[R"XURSUS9$)Nr&)rIrKrH)rRrUra)r>r&rHs   r,rW�_Argon2Common._norm_memory_costs$�����s�S�5H�5H�%2�G�E�	Er+c��URU$![a Of=fSU<SUR5<S3n[U5e)z.
helper to resolve backend constant from type
zunsupported argon2 hash (type z not supported by z	 backend))r=�KeyErrorr;rY)r>r��msgs   r,�_get_backend_type�_Argon2Common._get_backend_type&sL��
	��(�(��/�/���	��	����c�o�o�'�)����o�s��
�c�Z>�[U5nURUR:wagURnUbX2R:�aURnURU:agURUR:wagUR
UR
:wag[[U]""S0UD6$)NTr)	r5�min_desired_versionr�rmr&rVrMr/�_calc_needs_update)rDr[r>�minverr]s    �r,r�� _Argon2Common._calc_needs_update8s�����4�j���9�9���� ���(�(���>�V�o�o�5��_�_�F��<�<�&� �����s���.������!2�!2�2���]�D�<�D�t�D�Dr+z> -- recommend you install one (e.g. 'pip install argon2_cffi')c�\�URn[U[5(aUS:�deUS:a'[SU-[R
R5 [HnX@R;dMX@l	 g [SU-[R
R5 [Ul	g)z�
helper called by from backend mixin classes' _load_backend_mixin() --
invoked after backend imports have been loaded, and performs
feature detection & testing common to all backends.
rr-z6%r doesn't support argon2 v1.3, and should be upgradedz)%r lacks support for all known hash typesT)r�rQrTrrRr�PasslibSecurityWarning�	ALL_TYPESr=r5�PasslibRuntimeWarning�TYPE_ID)�	mixin_clsr`�dryrunr�r5s     r,�_finalize_backend_mixin�%_Argon2Common._finalize_backend_mixinNs��� �+�+���+�s�+�+��t�0C�C�C�����I�D�P����.�.�
0��D��2�2�2�!%�����

�<�t�C�R�V�V�Ea�Ea�b�$�I�N�r+c�Z�UR5nUcUbURU5nUbDURURUR5 US:XaUR
b[
S5e[U5nUS;aU<SU<SU<3nO[U5n[R"XS9e)ze
internal helper invoked when backend has hash/verification error;
used to adapt to passlib message.
�argon2_cffiz8argon2_cffi backend doesn't support the 'data' parameter)zDecoding failedz reported: z: hash=)�reason)r;r|rXr&r'roryr��reprrrw)r>�errrhrDr��textr�s       r,�_adapt_backend_error�"_Argon2Common._adapt_backend_errorhs����/�/�#���<�D�,��?�?�4�(�D����&�&�t�'7�'7��9I�9I�J��-�'�D�I�I�,A�)�*d�e�e��3�x�����4;�D�$�G�F��$�Z�F��$�$�S�8�8r+)rVror&r5rm)NNNNNNNN)NFNNN)F)NN)@r r!r"r#r$r`�setting_kwds�_default_settingsr)rVrR�GenericHandler�_always_parse_settings�_unparsed_settingsr(�default_salt_size�
min_salt_sizer�
max_salt_sizer%�default_rounds�
min_rounds�
max_rounds�rounds_cost�max_parallelism�_default_versionr�r�rarZ�pure_use_threadsr=r	r?r�r5r'rmr&�propertyrEro�classmethodrNrX�re�compilerfri�Xrvr|r�r�rOr�rWr�r��_no_backend_suggestionr�r�r*�
__classcell__�r]s@r,r/r/ts/���� �D�
�L�0&�.�.�M� �.�.�E�E�&�'���*�*�=�=�M�N��*�2�2���M��M�'�0�0�N��J��J��K�
$�O�#�K����O��K���
���,��,��D�$�/�/�K��G�$�/�/�K�
�#��#��D��[_�=A�9��9�v�=��=��:�:�2�3�L��8��8�2�*�*��6
���7�K�:�
��
�4
�8,�d�D��D�(���� �E��E�����"E�(^������2�9��9r+r/c�^�\rSrSrSr\S5r\S5r\R"SSS9\S55r
U4S	jrS
rU=r
$)�
_NoBackendi�zt
mixin used before any backend has been loaded.
contains stubs that force loading of one of the available backends.
c�D�UR5 URU5$rd)�_stub_requires_backendrh)r>�secrets  r,rh�_NoBackend.hash�s���"�"�$��x�x���r+c�D�UR5 URX5$rd)r��verify)r>r�rhs   r,r��_NoBackend.verify�s���"�"�$��z�z�&�'�'r+z1.7z2.0)�
deprecated�removedc�D�UR5 URX5$rd)r��genhash)r>r��configs   r,r��_NoBackend.genhash�s��	�"�"�$��{�{�6�*�*r+c�J>�UR5 [[U]U5$rd)r�rMr�_calc_checksum)rDr�r]s  �r,r��_NoBackend._calc_checksum�s%���	
�#�#�%��V�T�1�&�9�9r+r)r r!r"r#r$r�rhr�rR�deprecated_methodr�r�r*r�r�s@r,r�r��sc����� �� ��(��(����U�E�:��+��;�+�:�:r+r�c�|�\rSrSrSr\S5r\S5r\"S\	55r
\S5r\S5rSr
S	rg
)�_CffiBackendi�z
argon2_cffi backend
c��U[Lde[c&[(a[R"[5eg[R
Rn[RS[R"S5U5 [Rn0n[Hn[XFR55XV'M! XPlU=Ul
UlUR)X5$![a U[ ["4;d
SU-5eMof=f)NFzOdetected 'argon2_cffi' backend, version %r, with support for 0x%x argon2 hashesr��unexpected missing type: %r)r��_argon2_cffi�_argon2_cffi_errorr�PasslibSecurityErrorr�ARGON2_VERSION�log�debugrrmrr��getattr�upper�AttributeError�TYPE_IrBr=r�r�)r�r`r�r��TypeEnum�type_mapr5s       r,�_load_backend_mixin� _CffiBackend._load_backend_mixin�s����L�(�(�(���!�!��.�.�/A�B�B��"�,�,�;�;���	�	�c��"�"�=�1�;�	@� �$�$�����D�
Z�!(��:�:�<�!@����'/�#�5@�?�	��I�1��0�0��>�>��"�
Z��F�F�#3�3�Y�5R�UY�5Y�Y�3�
Z�s�C�$D�Dc��[R"U5 [US5n[[R
R
URUR5URURUR[UR55URUS95$![RRanUR!U5eSnAff=f)Nrl)r5r&r%r'r1r)r�)rR�validate_secretr
rr�r�hash_secretr�r5r&r�r'�_generate_saltrV�
exceptions�HashingErrorr�)r>r�r�s   r,rh�_CffiBackend.hash�s���	���6�"��&�'�*��	0� ��!7�!7�!C�!C��*�*�3�8�8�4��O�O��,�,��O�O��c�0�0�2�3��*�*��"D�"��
���&�&�3�3�	0��*�*�3�/�/��	0�s�BB(�(C�C�Cc#�\# �UH"n[SURS55U4v� M$ g7f)s
$argon2%s$rqN)rrs)�.0r5s  r,�	<genexpr>�_CffiBackend.<genexpr>�s,���2�'0�t�)�����G�8L�M�t�T�'0�s�*,c	���[R"U5 [US5n[US5nURR	USSURSS5-[5nURU5n[RRX!U5nUSLdeg![RRa g[RRanURXbS9eSnAff=f)Nrlrqr7�$TF�rh)rRr�r
�_byte_ident_maprP�findr�r�r�r�
verify_secretr��VerifyMismatchError�VerificationErrorr�)r>r�rhr5�	type_code�resultr�s       r,r��_CffiBackend.verify�s���	���6�"��&�'�*����g�&���"�"�&�&�t�,A�Q�t�y�y��q�/A�-A�'B�F�K���)�)�$�/�	�	;�!�+�+�9�9�$�	�R�F��T�>�!�>����&�&�:�:�	���&�&�8�8�	;��*�*�3�*�:�:��	;�s�7'B�C0�?C0�C+�+C0c
�2�[R"U5 [US5nURU5n[	[
RRURUR5URURUR[UR5URUURS95nURS:XaUR'SS5nU$![
R R"anUR%XRS9eSnAff=f)Nrl)r5r&r%r'r1r)r�rmr�rz$v=16$�$)rRr�r
r|rr�rr�r�r5r&r3r'r1rVrmr�r�r��replace)r>r�r�rDrr�s      r,r��_CffiBackend.genhashs���	���6�"��&�'�*�����v�&��	=�"�<�#9�#9�#E�#E��*�*�4�9�9�5� �,�,��+�+� �,�,��d�i�i�(��+�+�����$F�	$�	�F��<�<�4���^�^�H�c�2�F��
���&�&�3�3�	=��*�*�3�*�<�<��	=�s�BC$�$D�D�Dc��[S5e)Nz-shouldn't be called under argon2_cffi backend)�AssertionError)rDr�s  r,r��_CffiBackend._calc_checksum+s���L�M�Mr+rN)r r!r"r#r$r�r�rh�dictr�r�r�r�r�r*rr+r,r�r��sv����?��?�>�0��0�&�2�'0�2�2�O��;��;�,����6Nr+r�c�.�\rSrSrSr\S5rSrSrg)�_PureBackendi5z
argon2pure backend
c��U[LdeSSKqSSKJn [
RSU5 U(d[S[R5 0n[H'n[[SUR5-5XE'M) X@lU=UlUlUR)X5$![a gf=f![a [
R
S5 gf=f![a U[[ 4;d
SU-5eM�f=f)	NrF)�ARGON2_DEFAULT_VERSIONz\detected 'argon2pure' backend, but package is too old (passlib requires argon2pure >= 1.2.3)zBdetected 'argon2pure' backend, with support for 0x%x argon2 hashesz�Using argon2pure backend, which is 100x+ slower than is required for adequate security. Installing argon2_cffi (via 'pip install argon2_cffi') is strongly recommended�ARGON2r�)r�
argon2pure�_argon2pure�ImportErrorrr��warningr�rrr�r�r�r�r�r�rBr=rmr�r�)r�r`r�r�r�r5s      r,r�� _PureBackend._load_backend_mixin=s���L�(�(�(�	�,�
	�H�	�	�	�V��	���+�,/�,F�,F�
H�
���D�
Z�!(��h�����6M�!N����'/�#�4?�?�	��I�1��0�0��>�>��=�	��	���	��K�K�A�
B��	��$"�
Z��F�F�#3�3�Y�5R�UY�5Y�Y�3�
Z�s4�B'�B7�#C�'
B4�3B4�7C�C�$D�Dc�>�[R"U5 [US5n[UURUR
URURURURUR5URS9nURS:�aURUS'UR(aSUS'UR(aURUS'[R "S	0UD6$![R"anUR%X0S9eSnAff=f)
Nrl)�passwordr1r%r&r'�
tag_lengthrrmr�threadsT�use_threads�associated_datarCr)rRr�r
rr1r3r&r'rVr�r5rmrZr�rorr�Argon2Errorr�)rDr�r[r�s    r,r��_PureBackend._calc_checksumos���
���6�"��&�'�*��������k�k��(�(��(�(��)�)��,�,�T�Y�Y�7��L�L�	
�����a��"�.�.�D��O�� � �"&�D����9�9�&*�i�i�D�"�#�	<��%�%�-��-�-���&�&�	<��+�+�C�+�;�;��	<�s�C4�4D�D�DrN)	r r!r"r#r$r�r�r�r*rr+r,rr5s!����&?��&?�b<r+rc�,�\rSrSrSrSrSr\\\	S.r
Srg)ri�a�
This class implements the Argon2 password hash [#argon2-home]_, and follows the :ref:`password-hash-api`.

Argon2 supports a variable-length salt, and variable time & memory cost,
and a number of other configurable parameters.

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

:type type: str
:param type:
    Specify the type of argon2 hash to generate.
    Can be one of "ID", "I", "D".

    This defaults to "ID" if supported by the backend, otherwise "I".

:type salt: str
:param salt:
    Optional salt string.
    If specified, the length must be between 0-1024 bytes.
    If not specified, one will be auto-generated (this is recommended).

:type salt_size: int
:param salt_size:
    Optional number of bytes to use when autogenerating new salts.

:type rounds: int
:param rounds:
    Optional number of rounds to use.
    This corresponds linearly to the amount of time hashing will take.

:type time_cost: int
:param time_cost:
    An alias for **rounds**, for compatibility with underlying argon2 library.

:param int memory_cost:
    Defines the memory usage in kibibytes.
    This corresponds linearly to the amount of memory hashing will take.

:param int parallelism:
    Defines the parallelization factor.
    *NOTE: this will affect the resulting hash value.*

:param int digest_size:
    Length of the digest in bytes.

:param int max_threads:
    Maximum number of threads that will be used.
    -1 means unlimited; otherwise hashing will use ``min(parallelism, max_threads)`` threads.

    .. note::

        This option is currently only honored by the argon2pure backend.

: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.

.. versionchanged:: 1.7.2

    Added the "type" keyword, and support for type "D" and "ID" hashes.
    (Prior versions could verify type "D" hashes, but not generate them).

.. todo::

    * Support configurable threading limits.
)r�rT)Nr�rrN)r r!r"r#r$�backends�_backend_mixin_targetr�r�r�_backend_mixin_mapr*rr+r,rr�s+��E�`-�H�!���#�"��r+)@r$�
__future__rr�logging�	importlibr�	getLoggerr r�r��types�warningsrr�r�passlibr�passlib.crypto.digestr�
passlib.utilsr	r
r�passlib.utils.binaryrr
�passlib.utils.compatrrrrr�passlib.utils.handlers�utils�handlersrR�__all__r�rBr�r��setr�r�r�hasattrrrr�rr�r�r�SubclassBackendMixin�ParallelismMixin�	HasRounds�
HasRawSalt�HasRawChecksumr�r/r�r�rrr+r,�<module>r;s���
�"7���
����!��	��������,�?�?�9�N�N�#�#�
��� 
�3���	
�3���
�D�'���f�f�%�	��I��
����!��<��(�(�
4�	���
�\�;�
/�
/�_�����<�)�*�*�$�3�3�5��#�-�-�<�<���� )�*����
R9�B�+�+�R�-@�-@��L�L�"�-�-��1B�1B��%�%�R9�v!:��!:�TsN�=�sN�xT<�=�T<�t[�Z��[��Q���L��s�F�F�F

Filemanager

Name Type Size Permission Actions
__init__.cpython-313.pyc File 250 B 0644
argon2.cpython-313.pyc File 29.75 KB 0644
bcrypt.cpython-313.pyc File 38.25 KB 0644
cisco.cpython-313.pyc File 12.55 KB 0644
des_crypt.cpython-313.pyc File 20.36 KB 0644
digests.cpython-313.pyc File 6.2 KB 0644
django.cpython-313.pyc File 20.54 KB 0644
fshp.cpython-313.pyc File 7.61 KB 0644
ldap_digests.cpython-313.pyc File 13.81 KB 0644
md5_crypt.cpython-313.pyc File 8.95 KB 0644
misc.cpython-313.pyc File 11.23 KB 0644
mssql.cpython-313.pyc File 9.08 KB 0644
mysql.cpython-313.pyc File 4.29 KB 0644
oracle.cpython-313.pyc File 6.42 KB 0644
pbkdf2.cpython-313.pyc File 17.2 KB 0644
phpass.cpython-313.pyc File 4.8 KB 0644
postgres.cpython-313.pyc File 2.03 KB 0644
roundup.cpython-313.pyc File 886 B 0644
scram.cpython-313.pyc File 14.6 KB 0644
scrypt.cpython-313.pyc File 12.57 KB 0644
sha1_crypt.cpython-313.pyc File 5.76 KB 0644
sha2_crypt.cpython-313.pyc File 15.02 KB 0644
sun_md5_crypt.cpython-313.pyc File 11.85 KB 0644
windows.cpython-313.pyc File 10.9 KB 0644
Filemanager