§
    ‹r°d­  ã                   ó�   — d dl mZ d dlmZmZmZmZmZmZm	Z	 d dl
mZ d dlmZ d„ Zd„ Zd„ Zd„ Z G d	„ d
e¦  «        Zd„ Zdd„ZdS )é    )Úbchr)ÚVoidPointerÚSmartPointerÚcreate_string_bufferÚget_raw_bufferÚc_size_tÚc_uint8_ptrÚc_ubyte)Úlong_to_bytes)Ú_raw_keccak_libc                 ó¦   — | ddz  k     r| dk    sJ ‚| dk    rdn|                       ¦   «         dz   dz  }t          |¦  «        t          | ¦  «        z   S )z2Left encode function as defined in NIST SP 800-185é   éø  r   é   é   )Ú
bit_lengthr   r   ©ÚxÚnums     úZ/var/www/pp.vulcan-creative.com/venv/lib/python3.11/site-packages/Crypto/Hash/cSHAKE128.pyÚ_left_encoder   +   s[   € ð ��d‘ŠOˆO  Q¢   ð �AŠvˆvˆ!ˆ!˜AŸLšL™NœN¨QÑ.°1Ñ4€Cå�‰9Œ9•} QÑ'Ô'Ñ'Ð'ó    c                 ó¦   — | ddz  k     r| dk    sJ ‚| dk    rdn|                       ¦   «         dz   dz  }t          | ¦  «        t          |¦  «        z   S )z3Right encode function as defined in NIST SP 800-185r   r   r   r   r   )r   r   r   r   s     r   Ú_right_encoder   6   s[   € ð ��d‘ŠOˆO  Q¢   ð �AŠvˆvˆ!ˆ!˜AŸLšL™NœN¨QÑ.°1Ñ4€Cå˜ÑÔ�d 3™iœiÑ'Ð'r   c                 óz   — t          | ¦  «        dz  }|ddz  k    rt          d¦  «        ‚t          |¦  «        | z   S )z4Encode string function as defined in NIST SP 800-185r   r   r   z$String too large to encode in cSHAKE)ÚlenÚ
ValueErrorr   )r   Úbitlens     r   Ú_encode_strr   A   sD   € õ �‰VŒV�a‰Z€FØ�!�t‘)ÒÐÝÐ?Ñ@Ô@Ð@å˜ÑÔ !Ñ#Ð#r   c                 óf   — t          |¦  «        | z   }|t          |¦  «        |z  z
  |z  }|d|z  z   S )z2Zero pad byte string as defined in NIST SP 800-185ó    )r   r   )r   ÚlengthÚto_padÚnpads       r   Ú_bytepadr%   K   sA   € õ ˜&Ñ!Ô! AÑ%€Fð •S˜‘[”[ 6Ñ)Ñ)¨VÑ3€Dà�G˜d‘NÑ"Ð"r   c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )Ú
cSHAKE_XOFz]A cSHAKE hash object.
    Do not instantiate directly.
    Use the :func:`new` function.
    c                 ó8  — t          ¦   «         }|s|r=t          |¦  «        t          |¦  «        z   }t          |d|z
  dz  ¦  «        }d| _        n	d }d| _        t	          j        |                     ¦   «         t          |dz  ¦  «        t          d¦  «        ¦  «        }|rt          d|z  ¦  «        ‚t          |                     ¦   «         t          j        ¦  «        | _        d| _        |r|                      |¦  «         |r|                      |¦  «         d S d S )Ni@  r   é   é   é   z#Error %d while instantiating cSHAKEF)r   r   r%   Ú_paddingr   Úkeccak_initÚ
address_ofr   r
   r   r   ÚgetÚkeccak_destroyÚ_stateÚ_is_squeezingÚupdate)	ÚselfÚdataÚcustomÚcapacityÚfunctionÚstateÚprefix_unpadÚprefixÚresults	            r   Ú__init__zcSHAKE_XOF.__init__]   s/  € Ý‘”ˆàð 	!�Xð 	!Ý& xÑ0Ô0µ;¸vÑ3FÔ3FÑFˆLÝ˜l¨T°H©_¸qÑ,@ÑAÔAˆFØ ˆDŒMˆMàˆFØ ˆDŒMå Ô,¨U×-=Ò-=Ñ-?Ô-?Ý-5°hÀ±kÑ-BÔ-BÝ-4°R©[¬[ñ:ô :ˆð ð 	'ÝÐBØ%ñ&ñ 'ô 'ð 'å" 5§9¢9¡;¤;Ý#2Ô#AñCô CˆŒà"ˆÔàð 	 Ø�KŠK˜ÑÔÐàð 	Ø�KŠK˜ÑÔÐÐÐð	ð 	r   c           	      ó  — | j         rt          d¦  «        ‚t          j        | j                             ¦   «         t          |¦  «        t          t          |¦  «        ¦  «        ¦  «        }|rt          d|| j
        fz  ¦  «        ‚| S )z¼Continue hashing of a message by consuming the next chunk of data.

        Args:
            data (byte string/byte array/memoryview): The next chunk of the message being hashed.
        z/You cannot call 'update' after the first 'read'z Error %d while updating %s state)r2   Ú	TypeErrorr   Úkeccak_absorbr1   r/   r	   r   r   r   Úname)r4   r5   r<   s      r   r3   zcSHAKE_XOF.updatex   s�   € ð Ôð 	OÝÐMÑNÔNÐNå Ô.¨t¬{¯ªÑ/@Ô/@Ý/:¸4Ñ/@Ô/@Ý/7½¸D¹	¼	Ñ/BÔ/BñDô Dˆð ð 	4ÝÐ?Ø &¨¬	Ð2ñ3ñ 4ô 4ð 4àˆr   c                 ó  — d| _         t          |¦  «        }t          j        | j                             ¦   «         |t          |¦  «        t          | j        ¦  «        ¦  «        }|rt          d|| j
        fz  ¦  «        ‚t          |¦  «        S )ah  
        Compute the next piece of XOF output.

        .. note::
            You cannot use :meth:`update` anymore after the first call to
            :meth:`read`.

        Args:
            length (integer): the amount of bytes this method must return

        :return: the next piece of XOF output (of the given length)
        :rtype: byte string
        Tz!Error %d while extracting from %s)r2   r   r   Úkeccak_squeezer1   r/   r   r
   r,   r   rA   r   )r4   r"   Úbfrr<   s       r   ÚreadzcSHAKE_XOF.readŠ   s”   € ð "ˆÔÝ" 6Ñ*Ô*ˆÝ Ô/°´·²Ñ0AÔ0AØ03Ý08¸Ñ0@Ô0@Ý07¸¼Ñ0FÔ0FñHô Hˆð ð 	4ÝÐ@Ø &¨¬	Ð2ñ3ñ 4ô 4ð 4õ ˜cÑ"Ô"Ð"r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r=   r3   rE   © r   r   r'   r'   W   sK   € € € € € ðð ð
ð ð ð6ð ð ð$#ð #ð #ð #ð #r   r'   c                 ó&   — t          | |d|¦  «        S )Né   ©r'   )r5   r6   r8   s      r   Ú_newrN   ¦   s   € å�d˜F C¨Ñ2Ô2Ð2r   Nc                 ó&   — t          | |dd¦  «        S )az  Return a fresh instance of a cSHAKE128 object.

    Args:
       data (bytes/bytearray/memoryview):
        Optional.
        The very first chunk of the message to hash.
        It is equivalent to an early call to :meth:`update`.
       custom (bytes):
        Optional.
        A customization bytestring (``S`` in SP 800-185).

    :Return: A :class:`cSHAKE_XOF` object
    rL   r   rM   )r5   r6   s     r   ÚnewrP   «   s   € õ  �d˜F C¨Ñ-Ô-Ð-r   )NN)ÚCrypto.Util.py3compatr   ÚCrypto.Util._raw_apir   r   r   r   r   r	   r
   ÚCrypto.Util.numberr   ÚCrypto.Hash.keccakr   r   r   r   r%   Úobjectr'   rN   rP   rJ   r   r   ú<module>rV      s5  ðð> 'Ð &Ð &Ð &Ð &Ð &ð8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð
 -Ð ,Ð ,Ð ,Ð ,Ð ,à .Ð .Ð .Ð .Ð .Ð .ð(ð (ð (ð(ð (ð (ð$ð $ð $ð	#ð 	#ð 	#ðL#ð L#ð L#ð L#ð L#�ñ L#ô L#ð L#ð^3ð 3ð 3ð
.ð .ð .ð .ð .ð .r   