U
    ah                     @   s^   d Z ddlZddlZddlZddlmZ ddlmZ dddZdd	d
Z	dd Z
dddZdS )z3
Django's standard crypto functions and utilities.
    N)settings)force_bytesc                 C   sF   |dkrt j}t| } t|}t| |  }tj|t|tjdS )z
    Return the HMAC-SHA1 of 'value', using a key generated from key_salt and a
    secret (which defaults to settings.SECRET_KEY).

    A different key_salt should be passed in for every application of HMAC.
    N)msg	digestmod)r   Z
SECRET_KEYr   hashlibsha1digesthmacnew)Zkey_saltvaluesecretkey r   /home/adriano.carvalho/ftp/files/BrinquedotecaVirtual/brinquedotecavirtual/venv/lib/python3.8/site-packages/django/utils/crypto.pysalted_hmac   s    r      >abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789c                    s   d  fddt| D S )z
    Return a securely generated random string.

    The default length of 12 with the a-z, A-Z, 0-9 character set returns
    a 71-bit value. log_2((26+26+10)^12) =~ 71 bits
     c                 3   s   | ]}t  V  qd S )N)secretschoice).0iallowed_charsr   r   	<genexpr>.   s     z$get_random_string.<locals>.<genexpr>)joinrange)lengthr   r   r   r   get_random_string%   s    	r   c                 C   s   t t| t|S )z:Return True if the two strings are equal, False otherwise.)r   compare_digestr   )Zval1Zval2r   r   r   constant_time_compare1   s    r    c                 C   s<   |dkrt j}|pd}t| } t|}t | j| |||S )z)Return the hash of password using pbkdf2.N)r   sha256r   pbkdf2_hmacname)passwordZsaltZ
iterationsZdklenr   r   r   r   pbkdf26   s    r%   )N)r   r   )r   N)__doc__r   r	   r   Zdjango.confr   Zdjango.utils.encodingr   r   r   r    r%   r   r   r   r   <module>   s   
  
