
    j                         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dS )    )absolute_import)divisionN   )
__author____copyright__	__email____license____summary__	__title____uri____version__)_bcrypt)r   r
   r   r   r   r   r	   r   gensalthashpwkdfcheckpw      2broundsprefixreturnc                     |dvrt          d          | dk     s| dk    rt          d          t          j        d          }t          j        |          }d|z   dz   d| z                      d	          z   dz   |z   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outputs       Y/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/bcrypt/__init__.pyr   r   4   s    ^##@AAAzzVb[[)***: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   sX    (C   BJtS$9$9 B@A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   sX    (C   CJ$D$D CABBB
?
+
+CsO444r&   F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k    rt	          d          |dk     rt	          d          |dk     r1|s/t          j        d	                    |          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#   r4   r   r5   s        r%   r   r   _   s     (C   BJtS$9$9 B@AAA
8}}SYY!^^>???A!2S!8!8:;;;zz3444{{,{ 	PfVnn	
 	
 	
 	
 =41BCCCr&   )r   r   )F)
__future__r   r   r1   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 5 5 5 $ D  D D
 D  D 	 D
  D  D  D  D  D  D  Dr&   