Ë
    zñ�j,  ã                   ó†  — 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         úM/var/www/api.ozpay.ru/ozpay/venv/lib/python3.12/site-packages/nacl/hashlib.pyÚ__init__zblake2b.__init__0   s7   € ô:  Ø˜$ v¸;ô
ˆŒð (ˆÔáØ�K‰K˜Õð 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   € Ü�D—K‘K Õ&r   c                 óL   — | j                   j                  «       }t        |«      S r   )r   ÚcopyÚ
_b2b_final)r   Ú_sts     r   Údigestzblake2b.digestd   s   € Ø�k‰k×ÑÓ ˆÜ˜#‹Ð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   € ØŒd�4‹j T×%5Ñ%5Ô6ˆØ�k‰k×ÑÓ ˆØˆŒ
Øˆ
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/   € ô$ �=‰=×>Ñ>Ø�$˜˜1˜a¨°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:  ðó  Ý ã Ý &à�‰×.Ñ.€Ø�M‰M×6Ñ6€	Ø�M‰M×6Ñ6€	Ø�=‰=×4Ñ4€Ø�}‰}×<Ñ<€Ø�}‰}×<Ñ<€Ø�M‰M×6Ñ6€	Ø—‘×>Ñ>€à—=‘=×GÑGÐ à�M‰M×9Ñ9€	Ø�]‰]×;Ñ;€
Ø�m‰m×=Ñ=€÷R
ñ R
ðn ØØØØØñØðà
ðð ðð ð	ð
 ðð ðð ðð ôr   