File: //lib/python3/dist-packages/cryptography/hazmat/primitives/kdf/__pycache__/scrypt.cpython-310.pyc
o
�)%a� � @ sz d dl Z d dlmZ d dlmZmZmZmZ d dlm Z d dl
mZ d dlm
Z
d dlmZ e jd ZG d d
� d
e�ZdS )� N)�utils)�AlreadyFinalized�
InvalidKey�UnsupportedAlgorithm�_Reasons)�_get_backend)�
ScryptBackend)�
constant_time)�KeyDerivationFunction� c @ sV e Zd Z ddededededef
dd�Zd ed
efdd�Zd ed
ed
dfdd�ZdS )�ScryptN�salt�length�n�r�pc C s� t |�}t|t�stdtj��|| _t�d|� |dk s$||d @ dkr(t d��|dk r0t d��|dk r8t d��d | _
|| _|| _|| _
|| _|| _d S )
Nz0Backend object does not implement ScryptBackend.r
r � 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)r �
isinstancer r r �BACKEND_MISSING_INTERFACE�_lengthr �_check_bytes�
ValueError�_used�_salt�_n�_r�_p�_backend)�selfr
r r r r �backend� r �K/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/kdf/scrypt.py�__init__ s(
�
zScrypt.__init__�key_material�returnc C s@ | j rtd��d| _ t�d|� | j�|| j| j| j| j | j
�S )Nz'Scrypt instances can only be used once.Tr# )r r r �_check_bytesliker �
derive_scryptr r r r r )r r# r r r! �derive7 s �z
Scrypt.derive�expected_keyc C s"