U
    ÒZj´  ã                   @   sf   d dl Z d dlZd dlmZ d dlmZmZmZ d dlm	Z	 d dl
mZ e jd ZG dd„ deƒZdS )	é    N)Úutils)ÚAlreadyFinalizedÚ
InvalidKeyÚUnsupportedAlgorithm)Úconstant_time)ÚKeyDerivationFunctioné   c                   @   sJ   e Zd Zdeeeeeejdœdd„Zeedœdd„Zeeddœd	d
„Z	dS )ÚScryptN)ÚsaltÚlengthÚnÚrÚpÚbackendc                 C   s�   ddl m} | ¡ stdƒ‚|| _t d|¡ |dk sF||d @ dkrNtdƒ‚|dk r^tdƒ‚|dk rntd	ƒ‚d
| _|| _	|| _
|| _|| _d S )Nr   ©r   z/This version of OpenSSL does not support scryptr
   r   é   z-n must be greater than 1 and be a power of 2.z%r must be greater than or equal to 1.z%p must be greater than or equal to 1.F)Ú,cryptography.hazmat.backends.openssl.backendr   Zscrypt_supportedr   Ú_lengthr   Ú_check_bytesÚ
ValueErrorÚ_usedÚ_saltÚ_nÚ_rÚ_p)Úselfr
   r   r   r   r   r   Zossl© r   úl/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/cryptography/hazmat/primitives/kdf/scrypt.pyÚ__init__   s$    	ÿzScrypt.__init__)Úkey_materialÚreturnc                 C   sJ   | j rtdƒ‚d| _ t d|¡ ddlm} | || j| j| j	| j
| j¡S )Nz'Scrypt instances can only be used once.Tr   r   r   )r   r   r   Z_check_bytesliker   r   Zderive_scryptr   r   r   r   r   )r   r   r   r   r   r   Úderive;   s         ÿzScrypt.derive)r   Úexpected_keyr    c                 C   s"   |   |¡}t ||¡stdƒ‚d S )NzKeys do not match.)r!   r   Zbytes_eqr   )r   r   r"   Zderived_keyr   r   r   ÚverifyG   s    
zScrypt.verify)N)
Ú__name__Ú
__module__Ú__qualname__ÚbytesÚintÚtypingÚAnyr   r!   r#   r   r   r   r   r	      s    ùù"r	   )Úsysr)   Zcryptographyr   Zcryptography.exceptionsr   r   r   Zcryptography.hazmat.primitivesr   Z"cryptography.hazmat.primitives.kdfr   ÚmaxsizeZ
_MEM_LIMITr	   r   r   r   r   Ú<module>   s   
