§
    &xÅj­#  ã                   ót  — U d dl mZmZ d dlmZ d dlmZmZ d dl	m
Z
  ej        ¦   «         Zeed<    ej        ¦   «         Zeed<    ej        ¦   «         Zeed<    ej        ¦   «         Zeed<    ej        ¦   «         Zeed	<    ej        ¦   «         Zeed
<    ej        ¦   «         Zeed<    ej        ¦   «         Zeed<    ej        ¦   «         Zeed<   dZdZ dede!de!de!ddf
d„Z"edddfde!dede!de!de!de!fd„Z# edd¬¦  «        Z$ G d„ d¦  «        Z%dddefde!de!de!dede%f
d„Z&de%de!ddfd „Z'de%de!fd!„Z(dS )"é    )ÚNoReturnÚTypeVar)Ú
exceptions)ÚffiÚlib)ÚensureÚcrypto_generichash_BYTESÚcrypto_generichash_BYTES_MINÚcrypto_generichash_BYTES_MAXÚcrypto_generichash_KEYBYTESÚcrypto_generichash_KEYBYTES_MINÚcrypto_generichash_KEYBYTES_MAXÚcrypto_generichash_SALTBYTESÚ crypto_generichash_PERSONALBYTESÚcrypto_generichash_STATEBYTESz!{0} length greater than {1} bytesz{0} greater than {1}Údigest_sizeÚkeyÚsaltÚpersonÚreturnNc                 óä  — t          t          |t          ¦  «        dt          j        ¬¦  «         t          t          |t          ¦  «        dt          j        ¬¦  «         t          t          |t          ¦  «        dt          j        ¬¦  «         t          t          | t
          ¦  «        dt          j        ¬¦  «         t          | t          k    t                               dt          ¦  «        t          j	        ¬¦  «         t          t          |¦  «        t          k    t                               dt          ¦  «        t          j	        ¬¦  «         t          t          |¦  «        t          k    t                               dt          ¦  «        t          j	        ¬¦  «         t          t          |¦  «        t          k    t                               d	t          ¦  «        t          j	        ¬¦  «         d
S )zCheck hash parameterszKey must be a bytes sequence©ÚraisingzSalt must be a bytes sequencezPerson must be a bytes sequencez%Digest size must be an integer numberÚDigest_sizeÚKeyÚSaltÚPersonN)r   Ú
isinstanceÚbytesÚexcÚ	TypeErrorÚintr   Ú_TOOBIGÚformatÚ
ValueErrorÚlenr   Ú	_OVERLONGr   r   )r   r   r   r   s       úQC:\Projects\Historical\venv\Lib\site-packages\nacl/bindings/crypto_generichash.pyÚ_checkparamsr)   )   sÀ  € õ Ý�3�ÑÔØ&Ý”ðñ ô ð õ Ý�4�ÑÔØ'Ý”ðñ ô ð õ Ý�6�5Ñ!Ô!Ø)Ý”ðñ ô ð õ Ý�;¥Ñ$Ô$Ø/Ý”ðñ ô ð õ ØÕ3Ò3Ý�Š�}Õ&BÑCÔCÝ”ðñ ô ð õ ÝˆC‰ŒÕ3Ò3Ý×Ò˜Õ ?Ñ@Ô@Ý”ðñ ô ð õ ÝˆD‰	Œ	Õ1Ò1Ý×Ò˜Õ!=Ñ>Ô>Ý”ðñ ô ð õ ÝˆF‰ŒÕ7Ò7Ý×Ò˜Õ#CÑDÔDÝ”ðñ ô ð ð ð ó    r*   Údatac           
      ó†  — t          ||||¦  «         t          t          | t          ¦  «        dt          j        ¬¦  «         t          j        d|¦  «        }t          j        dt          ¦  «        }t          j        dt          ¦  «        }t          j
        ||t          |¦  «        ¦  «         t          j
        ||t          |¦  «        ¦  «         t          j        ||| t          | ¦  «        |t          |¦  «        ||¦  «        }t          |dk    dt          j        ¬¦  «         t          j        ||¦  «        dd…         S )ab  One shot hash interface

    :param data: the input data to the hash function
    :type data: bytes
    :param digest_size: must be at most
                        :py:data:`.crypto_generichash_BYTES_MAX`;
                        the default digest size is
                        :py:data:`.crypto_generichash_BYTES`
    :type digest_size: int
    :param key: must be at most
                :py:data:`.crypto_generichash_KEYBYTES_MAX` long
    :type key: bytes
    :param salt: must be at most
                 :py:data:`.crypto_generichash_SALTBYTES` long;
                 will be zero-padded if needed
    :type salt: bytes
    :param person: must be at most
                   :py:data:`.crypto_generichash_PERSONALBYTES` long:
                   will be zero-padded if needed
    :type person: bytes
    :return: digest_size long digest
    :rtype: bytes
    ú#Input data must be a bytes sequencer   úunsigned char[]úunsigned char []r   úUnexpected failureN)r)   r   r   r   r    r!   r   Únewr   r   Úmemmover&   r   Ú(crypto_generichash_blake2b_salt_personalÚRuntimeErrorÚbuffer)	r+   r   r   r   r   ÚdigestÚ_saltÚ_personÚrcs	            r(   Ú!generichash_blake2b_salt_personalr:   ^   s  € õ> �˜c 4¨Ñ0Ô0Ð0å
Ý�4�ÑÔØ-Ý”ðñ ô ð õ ŒWÐ&¨Ñ4Ô4€Fõ ŒGÐ&Õ(DÑEÔE€EÝŒgÐ(Õ*JÑKÔK€Gå„K��t�S ™YœYÑ'Ô'Ð'Ý„K�˜¥ V¡¤Ñ-Ô-Ð-å	Ô	5Ø�˜T¥3 t¡9¤9¨cµ3°s±8´8¸UÀGñ
ô 
€Bõ ˆ2�Š7Ð(µ#Ô2BÐCÑCÔCÐCåŒ:�f˜kÑ*Ô*¨1¨1¨1Ô-Ð-r*   Ú_Blake2StateÚBlake2State)Úboundc                   óB   — e Zd ZdZddgZdefd„Zdefd„Zde	de	fd„Z
d	S )
r<   zN
    Python-level wrapper for the crypto_generichash_blake2b state buffer
    Ú	_statebufr   c                 óR   — t          j        dt          ¦  «        | _        || _        d S )Nr.   )r   r1   r   r?   r   )Úselfr   s     r(   Ú__init__zBlake2State.__init__    s+   € ÝœØÕ<ñ
ô 
ˆŒð 'ˆÔÐÐr*   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)r!   r$   Ú	__class__Ú__name__)rA   s    r(   Ú
__reduce__zBlake2State.__reduce__¦   s,   € õ
 Ø%×,Ò,¨T¬^Ô-DÑEÔEñ
ô 
ð 	
r*   rA   c                 ó„   — |                       | j        ¦  «        }t          j        |j        | j        t
          ¦  «         |S )N)rD   r   r   r2   r?   r   )rA   Ú_sts     r(   ÚcopyzBlake2State.copy¯   s=   € Ø�nŠn˜TÔ-Ñ.Ô.ˆÝŒØŒM˜4œ>Õ+Hñ	
ô 	
ð 	
ð ˆ
r*   N)rE   Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r"   rB   r   rF   r;   rI   © r*   r(   r<   r<   ™   s‚   € € € € € ðð ð ˜mÐ,€Ið' Cð 'ð 'ð 'ð 'ð
˜Hð 
ð 
ð 
ð 
ð�<ð  Lð ð ð ð ð ð r*   c                 óÒ  — t          || ||¦  «         t          |¦  «        }t          j        dt          ¦  «        }t          j        dt
          ¦  «        }t          j        ||t          |¦  «        ¦  «         t          j        ||t          |¦  «        ¦  «         t          j	        |j
        | t          | ¦  «        |||¦  «        }t          |dk    dt          j        ¬¦  «         |S )a@  
    Create a new initialized blake2b hash state

    :param key: must be at most
                :py:data:`.crypto_generichash_KEYBYTES_MAX` long
    :type key: bytes
    :param salt: must be at most
                 :py:data:`.crypto_generichash_SALTBYTES` long;
                 will be zero-padded if needed
    :type salt: bytes
    :param person: must be at most
                   :py:data:`.crypto_generichash_PERSONALBYTES` long:
                   will be zero-padded if needed
    :type person: bytes
    :param digest_size: must be at most
                        :py:data:`.crypto_generichash_BYTES_MAX`;
                        the default digest size is
                        :py:data:`.crypto_generichash_BYTES`
    :type digest_size: int
    :return: a initialized :py:class:`.Blake2State`
    :rtype: object
    r/   r   r0   r   )r)   r<   r   r1   r   r   r2   r&   r   Ú-crypto_generichash_blake2b_init_salt_personalr?   r   r    r4   )r   r   r   r   Ústater7   r8   r9   s           r(   Úgenerichash_blake2b_initrR   ·   sÌ   € õ: �˜c 4¨Ñ0Ô0Ð0å˜Ñ$Ô$€Eõ ŒGÐ&Õ(DÑEÔE€EÝŒgÐ(Õ*JÑKÔK€Gå„K��t�S ™YœYÑ'Ô'Ð'Ý„K�˜¥ V¡¤Ñ-Ô-Ð-å	Ô	:ØŒ˜�c #™hœh¨°U¸Gñ
ô 
€Bõ ˆ2�Š7Ð(µ#Ô2BÐCÑCÔCÐCà€Lr*   rQ   c                 óR  — t          t          | t          ¦  «        dt          j        ¬¦  «         t          t          |t
          ¦  «        dt          j        ¬¦  «         t          j        | j        |t          |¦  «        ¦  «        }t          |dk    dt          j
        ¬¦  «         dS )zúUpdate the blake2b hash state

    :param state: a initialized Blake2bState object as returned from
                     :py:func:`.crypto_generichash_blake2b_init`
    :type state: :py:class:`.Blake2State`
    :param data:
    :type data: bytes
    ú"State must be a Blake2State objectr   r-   r   r0   N)r   r   r<   r    r!   r   r   Ú!crypto_generichash_blake2b_updater?   r&   r4   )rQ   r+   r9   s      r(   Úgenerichash_blake2b_updaterV   ç   s¦   € õ Ý�5�+Ñ&Ô&Ø,Ý”ðñ ô ð õ Ý�4�ÑÔØ-Ý”ðñ ô ð õ 
Ô	.ØŒ˜�s 4™yœyñ
ô 
€Bõ ˆ2�Š7Ð(µ#Ô2BÐCÑCÔCÐCÐCÐCr*   c                 óX  — t          t          | t          ¦  «        dt          j        ¬¦  «         t          j        dt          ¦  «        }t          j	        | j
        || j        ¦  «        }t          |dk    dt          j        ¬¦  «         t          j        || j        ¦  «        dd…         S )a:  Finalize the blake2b hash state and return the digest.

    :param state: a initialized Blake2bState object as returned from
                     :py:func:`.crypto_generichash_blake2b_init`
    :type state: :py:class:`.Blake2State`
    :return: the blake2 digest of the passed-in data stream
    :rtype: bytes
    rT   r   r.   r   r0   N)r   r   r<   r    r!   r   r1   r   r   Ú crypto_generichash_blake2b_finalr?   r   r4   r5   )rQ   Ú_digestr9   s      r(   Úgenerichash_blake2b_finalrZ     s    € õ Ý�5�+Ñ&Ô&Ø,Ý”ðñ ô ð õ ŒgÐ'Õ)EÑFÔF€GÝ	Ô	-ØŒ˜ %Ô"3ñ
ô 
€Bõ ˆ2�Š7Ð(µ#Ô2BÐCÑCÔCÐCÝŒ:�g˜uÔ0Ñ1Ô1°!°!°!Ô4Ð4r*   ))Útypingr   r   Únaclr   r    Únacl._sodiumr   r   Únacl.exceptionsr   Ú crypto_generichash_blake2b_bytesr	   r"   Ú__annotations__Ú$crypto_generichash_blake2b_bytes_minr
   Ú$crypto_generichash_blake2b_bytes_maxr   Ú#crypto_generichash_blake2b_keybytesr   Ú'crypto_generichash_blake2b_keybytes_minr   Ú'crypto_generichash_blake2b_keybytes_maxr   Ú$crypto_generichash_blake2b_saltbytesr   Ú(crypto_generichash_blake2b_personalbytesr   Úcrypto_generichash_statebytesr   r'   r#   r   r)   r:   r;   r<   rR   rV   rZ   rN   r*   r(   ú<module>ri      s  ðð %Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $à "Ð "Ð "Ð "Ð "Ð "Ø !Ð !Ð !Ð !Ð !Ð !Ð !Ð !Ø "Ð "Ð "Ð "Ð "Ð "ð !E Ô DÑ FÔ FÐ ˜#Ð FÐ FÑ FØ$L CÔ$LÑ$NÔ$NÐ ˜cÐ NÐ NÑ NØ$L CÔ$LÑ$NÔ$NÐ ˜cÐ NÐ NÑ NØ#J 3Ô#JÑ#LÔ#LÐ ˜SÐ LÐ LÑ Là/€CÔ/Ñ1Ô1ð   ð ð ñ ð 0€CÔ/Ñ1Ô1ð   ð ð ñ ð %M CÔ$LÑ$NÔ$NÐ ˜cÐ NÐ NÑ Nà0€CÔ0Ñ2Ô2ð ! #ð ð ñ ð &G SÔ%FÑ%HÔ%HÐ ˜sÐ HÐ HÑ Hà/€	Ø
 €ð2Øð2Ø ð2Ø(-ð2Ø7<ð2à	ð2ð 2ð 2ð 2ðn 0ØØØð5.ð 5.Ø
ð5.àð5.ð 
ð5.ð ð	5.ð
 ð5.ð ð5.ð 5.ð 5.ð 5.ðp ˆw�~¨]Ð;Ñ;Ô;€ðð ð ð ð ñ ô ð ð> ØØØ/ð	-ð -Ø	ð-à
ð-ð ð-ð ð	-ð
 ð-ð -ð -ð -ð`D kð D¸ð DÀ4ð Dð Dð Dð Dð85 [ð 5°Uð 5ð 5ð 5ð 5ð 5ð 5r*   