Hacked By AnonymousFox
�
c��fI �
� � d Z ddlZ ddlZn*# e$ r" ej dk r ed� � � ed� � �w xY wddlZddlZ ddl
Z
ddlmZ
ddlmZ e
j ed� � � e j e j z d
z Z e
� � Z G d� d edd
� � � � Zd%dd�d�Zd%d�Zg Zdd�d�Z edddd� � edddd� � dD ]#Z eddez dd ee� � z d�� � r n�$ eddd d!� � ed"dd#d$� � [[dS )&zEWrapper to the POSIX crypt library call and associated functionality.� N�win32z,The crypt module is not supported on Windowsz;The required _crypt module was not built as part of CPython)�SystemRandom)�
namedtuple)� �
)�removez./c � � e Zd ZdZd� ZdS )�_MethodziClass representing a salt method per the Modular Crypt Format or the
legacy 2-character crypt method.c �6 � d� | j � � S )Nz<crypt.METHOD_{}>)�format�name)�selfs �,/opt/alt/python311/lib64/python3.11/crypt.py�__repr__z_Method.__repr__ s � �"�)�)�$�)�4�4�4� N)�__name__�
__module__�__qualname__�__doc__r � r r r
r
s- � � � � � �(� (�5� 5� 5� 5� 5r r
z name ident salt_chars total_size��roundsc � � | �
t d } |�1t |t � � st |j j � d�� � �| j sd}nd| j � d�}| j rs| j d dk rb|�d}nSt � |dz
� � }|d|z k rt d � � �d
|cxk rdk sn t d� � �||d
�d�z
}nG| j dv r*|�'d|cxk rdk sn t d� � �|d|� d�z
}n|�t | � d�� � �|d� d� t | j � � D � � � � z
}|S )zsGenerate a salt for the specified method.
If not specified, the strongest available method will be used.
Nr z+ object cannot be interpreted as an integer� �$�2� � zrounds must be a power of 2� � z%rounds out of the range 2**4 to 2**31�02d)�5�6i� i�ɚ;z+rounds out of the range 1000 to 999_999_999zrounds=z$ doesn't support the rounds argumentc 3 �T K � | ]#}t � t � � V � �$d S �N)�_sr�choice�
_saltchars)�.0�chars r � <genexpr>zmksalt.<locals>.<genexpr>F s. � � � �M�M�D����J�'�'�M�M�M�M�M�Mr )�methods�
isinstance�int� TypeError� __class__r �ident�
bit_length�
ValueError�join�range�
salt_chars)�methodr �s�
log_roundss r �mksaltr: $ s� � � �~�����
��*�V�S�"9�"9���6�+�4� 5� 5� 5� 6� 6� 6��<� �����������
�|� J���Q��3�.�.��>��J�J�����q��1�1�J���j��(�(� �!>�?�?�?��
�(�(�(�(�b�(�(�(�(� �!H�I�I�I� �
�
!�
!�
!�
!�!��� ��� #� #����6�0�0�0�0�[�0�0�0�0� �!N�O�O�O�
�$�6�$�$�$�$�A�� � ��F�H�H�H�I�I�I�����M�M�E�&�:K�4L�4L�M�M�M� M� M�M�A��Hr c �x � |�t |t � � rt |� � }t j | |� � S )aR Return a string representing the one-way hash of a password, with a salt
prepended.
If ``salt`` is not specified or is ``None``, the strongest
available method will be selected and a salt generated. Otherwise,
``salt`` may be one of the ``crypt.METHOD_*`` values, or a string as
returned by ``crypt.mksalt()``.
)r- r
r: �_crypt�crypt)�word�salts r r= r= J s4 � � �|�z�$��0�0�|��d�|�|���<��d�#�#�#r c � � t | g|�R � }|t � � d| z <