
    Mh0                        d dl Z d dlmZ d dlZd dlmZ ej                  j                  Z	ej                  j                  Zej                  j                  Zej                  j                  Zej                  j                   Zej                  j$                  Zej                  j(                  Zej                  j,                  Zej                  j0                  Zej                  j4                  Zej                  j8                  Zej                  j<                  Z G d d      Z 	 	 	 	 	 	 dde!de!de"d	e"d
e"de"de"de!fdZ#y)    N)NoReturn)bytes_as_stringc                       e Zd ZdZeZeZeZ	e
Zdedddfdededededef
dZed	efd
       Zed	efd       Zed	efd       Zded	dfdZd	efdZd	efdZddZd	efdZy)blake2bzK
    :py:mod:`hashlib` API compatible blake2b algorithm implementation
        datadigest_sizekeysaltpersonc                 b    t        ||||      | _        || _        |r| j                  |       yy)ab  
        :py:class:`.blake2b` algorithm initializer

        :param data:
        :type data: bytes
        :param int digest_size: the requested digest size; must be
                                at most :py:attr:`.MAX_DIGEST_SIZE`;
                                the default digest size is :py:data:`.BYTES`
        :param key: the key to be set for keyed MAC/PRF usage; if set,
                    the key must be at most :py:data:`.KEYBYTES_MAX` long
        :type key: bytes
        :param salt: a initialization salt at most
                     :py:attr:`.SALT_SIZE` long; it will be zero-padded
                     if needed
        :type salt: bytes
        :param person: a personalization string at most
                       :py:attr:`.PERSONAL_SIZE` long; it will be zero-padded
                       if needed
        :type person: bytes
        )r
   r   r   r	   N)	_b2b_init_state_digest_sizeupdate)selfr   r	   r
   r   r   s         d/var/www/pru.catia.catastroantioquia-mas.com/valormasv2/lib/python3.12/site-packages/nacl/hashlib.py__init__zblake2b.__init__0   s7    :  $v;
 (KK r   returnc                     | j                   S N)r   r   s    r   r	   zblake2b.digest_sizeU   s       r   c                      y)N    r   s    r   
block_sizezblake2b.block_sizeY   s    r   c                      y)Nr   r   r   s    r   namezblake2b.name]   s    r   Nc                 0    t        | j                  |       y r   )_b2b_updater   )r   r   s     r   r   zblake2b.updatea   s    DKK&r   c                 L    | j                   j                         }t        |      S r   )r   copy
_b2b_final)r   _sts     r   digestzblake2b.digestd   s    kk #r   c                 Z    t        t        j                  | j                                     S r   )r   binasciihexlifyr%   r   s    r   	hexdigestzblake2b.hexdigesth   s    x//>??r   c                      t        |       | j                        }| j                  j                         }||_        |S )N)r	   )typer	   r   r"   )r   _cpr$   s      r   r"   zblake2b.copyk   s6    d4jT%5%56kk 

r   c                 ^    t        dj                  | j                  j                              )zc
        Raise the same exception as hashlib's blake implementation
        on copy.copy()
        zcan't pickle {} objects)	TypeErrorformat	__class____name__r   s    r   
__reduce__zblake2b.__reduce__q   s)    
 %,,T^^-D-DE
 	
r   )r   r   )r1   
__module____qualname____doc__BYTESMAX_DIGEST_SIZEKEYBYTES_MAXMAX_KEY_SIZEPERSONALBYTESPERSON_SIZE	SALTBYTES	SALT_SIZEbytesintr   propertyr	   r   strr   r   r%   r)   r"   r   r2   r   r   r   r   r   &   s     OLKI  ## # 	#
 # #J !S ! ! C   c  '5 'T ' @3 @
H 
r   r   passwordr   nrpmaxmemdklenr   c           	      N    t         j                  j                  | ||||||      S )a  
    Derive a cryptographic key using the scrypt KDF.

    :raises nacl.exceptions.UnavailableError: If called when using a
        minimal build of libsodium.

    Implements the same signature as the ``hashlib.scrypt`` implemented
    in cpython version 3.6
    )rF   rG   )naclbindings%crypto_pwhash_scryptsalsa208sha256_ll)rB   r   rC   rD   rE   rF   rG   s          r   scryptrL   {   s/    $ ==>>$1ae ?  r   )r   i         i   @   )$r'   typingr   nacl.bindingsrI   
nacl.utilsr   rJ   crypto_generichash_BYTESr6   crypto_generichash_BYTES_MIN	BYTES_MINcrypto_generichash_BYTES_MAX	BYTES_MAXcrypto_generichash_KEYBYTESKEYBYTEScrypto_generichash_KEYBYTES_MINKEYBYTES_MINcrypto_generichash_KEYBYTES_MAXr8   crypto_generichash_SALTBYTESr<    crypto_generichash_PERSONALBYTESr:   &has_crypto_pwhash_scryptsalsa208sha256SCRYPT_AVAILABLEcrypto_generichash_blake2b_initr    crypto_generichash_blake2b_finalr#   !crypto_generichash_blake2b_updater    r   r>   r?   rL   r   r   r   <module>rd      s:       &..MM66	MM66	==44}}<<}}<<MM66	>>==GG MM99	]];;
mm==R
 R
n 
  	
    r   