a
a @ sf d dl Z d dlZd dlmZ d dlmZmZmZ d dlm Z d dl
mZ e jd Z
G dd deZdS ) N)utils)AlreadyFinalized
InvalidKeyUnsupportedAlgorithm)
constant_time)KeyDerivationFunction c @ sJ e Zd ZdeeeeeejdddZeedddZeeddd d
Z dS )ScryptN)saltlengthnrpbackendc C s ddl m} | std|| _td| |dk sF||d @ dkrNtd|dk r^td|dk rntd 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 Zscrypt_supportedr _lengthr _check_bytes
ValueError_used_salt_n_r_p)selfr
r r r
r r Zossl r O/usr/lib64/python3.9/site-packages/cryptography/hazmat/primitives/kdf/scrypt.py__init__ s$ zScrypt.__init__)key_materialreturnc C sJ | j rtdd| _ td| ddlm} ||| j| j| j | j
| jS )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||stdd S )NzKeys do not match.)r! r Zbytes_eqr )r r r" Zderived_keyr r r verifyG s
z
Scrypt.verify)N)
__name__
__module____qualname__bytesinttypingAnyr r! r# r r r r r s "r )sysr) Zcryptographyr Zcryptography.exceptionsr r r Zcryptography.hazmat.primitivesr Z"cryptography.hazmat.primitives.kdfr maxsizeZ
_MEM_LIMITr r r r r