
    df                         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 g dZdded	ed
efdZdeded
efdZdeded
efdZ	 ddededededed
efdZy)    )absolute_import)divisionN   )
__author____copyright__	__email____license____summary__	__title____uri____version__)_bcrypt)r   r
   r   r   r   r   r	   r   gensalthashpwkdfcheckpwroundsprefixreturnc                     |dvrt        d      | dk  s| dkD  rt        d      t        j                  d      }t        j                  |      }d|z   dz   d| z  j                  d	      z   dz   |z   S )
N)s   2a   2bz%Supported prefixes are b'2a' or b'2b'      zInvalid rounds      $z%2.2uascii)
ValueErrorosurandomr   encode_base64encode)r   r   saltoutputs       H/home/api-vastappli/venv/lib/python3.12/site-packages/bcrypt/__init__.pyr   r   4   s    ^#@AAzVb[)**::b>D""4(F 	
	
	 V
#
#G
,	- 		
 	    passwordr"   c                     t        | t              st        |t              rt        d      | d d } t        j                  | |      S )N&Strings must be encoded before hashingH   )
isinstancestr	TypeErrorr   hashpass)r&   r"   s     r$   r   r   H   sA    (C JtS$9@AA }HHd++r%   hashed_passwordc                     t        | t              st        |t              rt        d      t        | |      }t	        j
                  ||      S )Nz'Strings must be encoded before checking)r*   r+   r,   r   hmaccompare_digest)r&   r.   rets      r$   r   r   W   s@    (C J$DABB
?
+CsO44r%   desired_key_bytesignore_few_roundsc                    t        | t              st        |t              rt        d      t        |       dk(  st        |      dk(  rt	        d      |dk  s|dkD  rt	        d      |dk  rt	        d      |dk  r-|s+t        j                  d	j                  |      t        d
       t        j                  | |||      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 more2   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   pbkdf)r&   r"   r3   r   r4   s        r$   r   r   _   s     (C JtS$9@AA
8}SY!^>??A!2S!8:;;z344{, 	PfVn	
 ==41BCCr%   )   r   )F)
__future__r   r   r0   r   r:   	__about__r   r   r   r	   r
   r   r   r    r   __all__intbytesr   r   boolr   r    r%   r$   <module>rH      s     '   	 	 	 	  C e  (,U ,% ,E ,5e 5e 5 5 $ D D
 D  D 	 D
  D  Dr%   