U
    ÌZjÅ  ã                   @   sÖ   d dl mZ d dl mZ d dlZd dlZd dlZddlmZmZm	Z	m
Z
mZmZmZmZ ddlmZ ddd	d
ddddddddgZdeeedœdd„Zeeedœdd„Zeeedœdd„Zdeeeeeedœdd„ZdS ) é    )Úabsolute_import)ÚdivisionNé   )Ú
__author__Ú__copyright__Ú	__email__Ú__license__Ú__summary__Ú	__title__Ú__uri__Ú__version__)Ú_bcryptr
   r	   r   r   r   r   r   r   ÚgensaltÚhashpwÚkdfÚcheckpwé   ó   2b)ÚroundsÚprefixÚreturnc                 C   s^   |dkrt dƒ‚| dk s | dkr(t dƒ‚t d¡}t |¡}d| d d|   d	¡ d | S )
N)s   2ar   z%Supported prefixes are b'2a' or b'2b'é   é   zInvalid roundsé   ó   $z%2.2uÚascii)Ú
ValueErrorÚosÚurandomr   Úencode_base64Úencode)r   r   ÚsaltÚoutput© r#   úR/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/bcrypt/__init__.pyr   4   s$    

ÿþýüûÿ)Úpasswordr!   r   c                 C   s4   t | tƒst |tƒrtdƒ‚| d d… } t | |¡S )Nú&Strings must be encoded before hashingéH   )Ú
isinstanceÚstrÚ	TypeErrorr   Zhashpass)r%   r!   r#   r#   r$   r   H   s    )r%   Úhashed_passwordr   c                 C   s2   t | tƒst |tƒrtdƒ‚t| |ƒ}t ||¡S )Nz'Strings must be encoded before checking)r(   r)   r*   r   ÚhmacÚcompare_digest)r%   r+   Úretr#   r#   r$   r   W   s    
F)r%   r!   Údesired_key_bytesr   Úignore_few_roundsr   c                 C   s–   t | tƒst |tƒrtdƒ‚t| ƒdks4t|ƒdkr<tdƒ‚|dksL|dkrTtdƒ‚|dk rdtdƒ‚|dk r†|s†tjd	 |¡td
d� t	 
| |||¡S )Nr&   r   z#password and salt must not be emptyi   zdesired_key_bytes must be 1-512r   zrounds must be 1 or moreé2   zrWarning: bcrypt.kdf() called with only {0} round(s). This few is not secure: the parameter is linear, like PBKDF2.é   )Ú
stacklevel)r(   r)   r*   Úlenr   ÚwarningsÚwarnÚformatÚUserWarningr   Zpbkdf)r%   r!   r/   r   r0   r#   r#   r$   r   _   s$    ÿýú	)r   r   )F)Ú
__future__r   r   r,   r   r5   Ú	__about__r   r   r   r   r	   r
   r   r   Ú r   Ú__all__ÚintÚbytesr   r   Úboolr   r   r#   r#   r#   r$   Ú<module>   s>   (
ô ûú