/
lib
/
python3
/
dist-packages
/
cryptography
/
hazmat
/
primitives
/
kdf
/
__pycache__
/
Upload File
HOME
� p�g� � �~ � d dl Z d dlZd dlmZ d dlmZmZmZ d dlm Z d dl mZ e j dz Z G d� de� � ZdS ) � N)�utils)�AlreadyFinalized� InvalidKey�UnsupportedAlgorithm)� constant_time)�KeyDerivationFunction� c �` � e Zd Z ddedededededej fd�Zd ed efd�Zd eded dfd �Z dS )�ScryptN�salt�length�n�r�p�backendc �l � ddl m} |� � � st d� � �|| _ t j d|� � |dk s||dz z dk rt d� � �|dk rt d� � �|dk rt 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 �scrypt_supportedr �_lengthr �_check_bytes� ValueError�_used�_salt�_n�_r�_p)�selfr r r r r r �ossls �K/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/kdf/scrypt.py�__init__zScrypt.__init__ s� � � � � � � � � �$�$�&�&� �&�A�� � � ��� ��6�4�(�(�(��q�5�5�Q�!�a�%�[�Q�&�&��L�M�M�M��q�5�5��D�E�E�E��q�5�5��D�E�E�E��� ��� ������������ �key_material�returnc �� � | j rt d� � �d| _ t j d|� � ddlm} |� || j | j | j | j | j � � S )Nz'Scrypt instances can only be used once.Tr$ r r )r r r �_check_bytesliker r � derive_scryptr r r r r )r r$ r s r! �derivez Scrypt.derive; sw � ��:� N�"�#L�M�M�M��� � ��~�|�<�<�<�H�H�H�H�H�H��$�$��$�*�d�l�D�G�T�W�d�g� � � r# �expected_keyc �x � | � |� � }t j ||� � st d� � �d S )NzKeys do not match.)r) r �bytes_eqr )r r$ r* �derived_keys r! �verifyz Scrypt.verifyG sA � ��k�k�,�/�/���%�k�<�@�@� 3��1�2�2�2� 3� 3r# )N) �__name__� __module__�__qualname__�bytes�int�typing�Anyr"