
     h                     ~    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  Z G d de          ZdS )	    N)utils)AlreadyFinalized
InvalidKeyUnsupportedAlgorithm)constant_time)KeyDerivationFunction   c                   `    e Zd Z	 ddedededededej        fdZd	ed
efdZd	eded
dfdZ	dS )ScryptNsaltlengthnrpbackendc                 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           e/var/www/html/Sam_Eipo/venv/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|           ddlm} |                    || 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$$$*dlDGTWdg
 
 	
r#   expected_keyc                 x    |                      |          }t          j        ||          st          d          d S )NzKeys do not match.)r)   r   bytes_eqr   )r   r$   r*   derived_keys       r!   verifyzScrypt.verifyF   sA    kk,//%k<@@ 	31222	3 	3r#   )N)
__name__
__module____qualname__bytesinttypingAnyr"   r)   r.    r#   r!   r   r      s         #       	 
            D

5 

U 

 

 

 

35 3 3$ 3 3 3 3 3 3r#   r   )sysr4   cryptographyr   cryptography.exceptionsr   r   r   cryptography.hazmat.primitivesr   "cryptography.hazmat.primitives.kdfr   maxsize
_MEM_LIMITr   r6   r#   r!   <module>r>      s    


                
 9 8 8 8 8 8 D D D D D D [A
23 23 23 23 23" 23 23 23 23 23r#   