
    _f2	                        d dl mZ 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 d dlmZ ej        dz  Z G d	 d
e          ZdS )    )annotationsN)utils)AlreadyFinalized
InvalidKeyUnsupportedAlgorithm)openssl)constant_time)KeyDerivationFunction   c                  *    e Zd Z	 dddZddZddZdS )ScryptNsaltbyteslengthintnrpbackend
typing.Anyc                l   ddl m} |                                st          d          || _        t          j        d|           |dk     s||dz
  z  dk    rt          d          |dk     rt          d          |dk     rt          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           [/var/www/html/env/lib/python3.11/site-packages/cryptography/hazmat/primitives/kdf/scrypt.py__init__zScrypt.__init__   s    	
 	
 	
 	
 	
 	
 $$&& 	&A   64(((q55Q!a%[Q&&LMMMq55DEEEq55DEEE

    key_materialreturnc           	         | j         rt          d          d| _         t          j        d|           t          j                            || j        | j        | j	        | j
        t          | j                  S )Nz'Scrypt instances can only be used once.Tr(   )r   r   r   _check_byteslikerust_opensslkdfderive_scryptr   r    r!   r"   
_MEM_LIMITr   )r#   r(   s     r%   derivezScrypt.derive<   sp    : 	N"#LMMM
~|<<<--JGGGL
 
 	
r'   expected_keyNonec                x    |                      |          }t          j        ||          st          d          d S )NzKeys do not match.)r0   r	   bytes_eqr   )r#   r(   r1   derived_keys       r%   verifyzScrypt.verifyM   sA    kk,//%k<@@ 	31222	3 	3r'   )N)r   r   r   r   r   r   r   r   r   r   r   r   )r(   r   r)   r   )r(   r   r1   r   r)   r2   )__name__
__module____qualname__r&   r0   r6    r'   r%   r   r      s[         #         D
 
 
 
"3 3 3 3 3 3r'   r   )
__future__r   systypingcryptographyr   cryptography.exceptionsr   r   r   "cryptography.hazmat.bindings._rustr   r,   cryptography.hazmat.primitivesr	   "cryptography.hazmat.primitives.kdfr
   maxsizer/   r   r:   r'   r%   <module>rD      s   
 # " " " " " 



                
 G F F F F F 8 8 8 8 8 8 D D D D D D [A
73 73 73 73 73" 73 73 73 73 73r'   