3
ãde³  ã               @   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} |jƒ stdƒ‚|| _tj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   ú`/var/www/agendate/envp3/lib/python3.6/site-packages/cryptography/hazmat/primitives/kdf/scrypt.pyÚ__init__   s"    	zScrypt.__init__)Úkey_materialÚreturnc             C   sJ   | j rtdƒ‚d| _ tjd|ƒ ddlm} |j|| 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"   | j |ƒ}tj||ƒstdƒ‚d S )NzKeys do not match.)r    r   Zbytes_eqr   )r   r   r!   Zderived_keyr   r   r   ÚverifyF   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   
