§
    &xÅ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        j        Zej        j        Zej        j        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#dS )é    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dS )Úblake2bzK
    :py:mod:`hashlib` API compatible blake2b algorithm implementation
    ó    ÚdataÚdigest_sizeÚkeyÚsaltÚpersonc                 óv   — t          ||||¬¦  «        | _        || _        |r|                      |¦  «         dS dS )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         ú=C:\Projects\Historical\venv\Lib\site-packages\nacl/hashlib.pyÚ__init__zblake2b.__init__0   sW   € õ:  Ø˜$ v¸;ð
ñ 
ô 
ˆŒð (ˆÔàð 	Ø�KŠK˜ÑÔÐÐÐð	ð 	r   Úreturnc                 ó   — | j         S ©N)r   ©r   s    r   r	   zblake2b.digest_sizeU   s   € àÔ Ð r   c                 ó   — dS )Né€   © r   s    r   Ú
block_sizezblake2b.block_sizeY   s   € àˆsr   c                 ó   — dS )Nr   r   r   s    r   Únamezblake2b.name]   s   € àˆyr   Nc                 ó0   — t          | j        |¦  «         d S r   )Ú_b2b_updater   )r   r   s     r   r   zblake2b.updatea   s   € Ý�D”K Ñ&Ô&Ð&Ð&Ð&r   c                 óR   — | j                              ¦   «         }t          |¦  «        S r   )r   ÚcopyÚ
_b2b_final)r   Ú_sts     r   Údigestzblake2b.digestd   s!   € ØŒk×ÒÑ Ô ˆÝ˜#‰ŒÐr   c                 óh   — t          t          j        |                      ¦   «         ¦  «        ¦  «        S r   )r   ÚbinasciiÚhexlifyr%   r   s    r   Ú	hexdigestzblake2b.hexdigesth   s#   € Ý�xÔ/°·²±´Ñ>Ô>Ñ?Ô?Ð?r   c                 ó‚   —  t          | ¦  «        | j        ¬¦  «        }| j                             ¦   «         }||_        |S )N)r	   )Útyper	   r   r"   )r   Ú_cpr$   s      r   r"   zblake2b.copyk   s<   € Ø�d�4‰jŒj TÔ%5Ð6Ñ6Ô6ˆØŒk×ÒÑ Ô ˆØˆŒ
Øˆ
r   c                 óZ   — t          d                     | 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ÑEÔ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ð !ð !ð !ñ „Xð!ð ð˜Cð ð ð ñ „Xðð ð�cð ð ð ñ „Xðð'˜5ð ' Tð 'ð 'ð 'ð 'ð˜ð ð ð ð ð@˜3ð @ð @ð @ð @ðð ð ð ð
˜Hð 
ð 
ð 
ð 
ð 
ð 
r   r   r   é   é   é   é   é@   Úpasswordr   ÚnÚrÚpÚmaxmemÚdklenr   c           	      óN   — t           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
    )rK   rL   )ÚnaclÚbindingsÚ%crypto_pwhash_scryptsalsa208sha256_ll)rG   r   rH   rI   rJ   rK   rL   s          r   ÚscryptrQ   {   s2   € õ$ Œ=×>Ò>Ø�$˜˜1˜a¨°eð ?ñ ô ð r   )r   rB   rC   rD   rE   rF   )$r'   Útypingr   Únacl.bindingsrN   Ú
nacl.utilsr   rO   Ú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?   rQ   r   r   r   ú<module>rf      sm  ðð  €€€Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &àŒÔ.€ØŒMÔ6€	ØŒMÔ6€	ØŒ=Ô4€ØŒ}Ô<€ØŒ}Ô<€ØŒMÔ6€	Ø”Ô>€à”=ÔGÐ àŒMÔ9€	ØŒ]Ô;€
ØŒmÔ=€ðR
ð R
ð R
ð R
ð R
ñ R
ô R
ð R
ðn ØØØØØðð Øðà
ðð ðð ð	ð
 ðð ðð ðð ðð ð ð ð ð r   