+
    '(j                     j    ^ RI HtHtHtHtHtHtHt ^ RIH	t	 ^ RI
Ht ^RIHt  ! R R]4      tR tR# )	    )VoidPointerSmartPointercreate_string_bufferget_raw_bufferc_size_tc_uint8_ptrc_ubyte)long_to_bytes)bchr)_raw_keccak_libc                   F   a  ] tR t^t o RtR tR tR tR	R ltR t	Rt
V tR# )

TurboSHAKEzUA TurboSHAKE hash object.
Do not instantiate directly.
Use the :func:`new` function.
c                t   \        4       p\        P                  ! VP                  4       \	        V4      \        ^4      4      pV'       d   \        RV,          4      h\        VP                  4       \        P                  4      V n
        RV n        Wn        W n        V'       d   V P                  V4       R# R# )   z'Error %d while instantiating TurboSHAKEFN)r   r   keccak_init
address_ofr   r	   
ValueErrorr   getkeccak_destroy_state_is_squeezing	_capacity_domainupdate)selfcapacitydomain_separationdatastateresults   &&&&  N/home/ubuntu/cf-venv/lib/python3.14/site-packages/Crypto/Hash/TurboSHAKE128.py__init__TurboSHAKE.__init__   s     ,,U-=-=-?-5h-?-4R[: F%& ' '"599;0N0NO"!(KK     c           	     
   V P                   '       d   \        R4      h\        P                  ! V P                  P                  4       \        V4      \        \        V4      4      4      pV'       d   \        RV,          4      hV # )zContinue 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 TurboSHAKE state)
r   	TypeErrorr   keccak_absorbr   r   r   r   lenr   )r   r   r    s   && r!   r   TurboSHAKE.update%   sp     MNN ..t{{/@/:4/@/7D	/BD G%& ' 'r$   c                
   RV n         \        V4      p\        P                  ! V P                  P                  4       V\        V4      \        V P                  4      4      pV'       d   \        RV,          4      h\        V4      # )a   
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 TurboSHAKE)r   r   r   keccak_squeezer   r   r   r	   r   r   r   )r   lengthbfrr    s   &&  r!   readTurboSHAKE.read7   su     ""6* //0A03080@070EG H%& ' ' c""r$   Nc                P    \        V 4      ! V P                  V P                  V4      # N)typer   r   )r   r   s   &&r!   newTurboSHAKE.newR   s    Dz$..$,,==r$   c                    \         P                  ! V P                  P                  4       4      pV'       d   \	        R V,          4      hRV n        R# )z)Error %d while resetting TurboSHAKE stateFN)r   keccak_resetr   r   r   r   )r   r    s   & r!   _resetTurboSHAKE._resetU   s@     --dkkoo.?@H%& ' '"r$   )r   r   r   r   r1   )__name__
__module____qualname____firstlineno____doc__r"   r   r.   r3   r7   __static_attributes____classdictcell__)__classdict__s   @r!   r   r      s(     
&$#6># #r$   r   c                     V P                  R^4      p^Tu;8:  d   ^8:  g   M \        RV,          4      hV P                  R4      p\        ^ WR7      # )ab  Create a new TurboSHAKE128 object.

Args:
   domain (integer):
     Optional - A domain separation byte, between 0x01 and 0x7F.
     The default value is 0x1F.
   data (bytes/bytearray/memoryview):
    Optional - The very first chunk of the message to hash.
    It is equivalent to an early call to :meth:`update`.

:Return: A :class:`TurboSHAKE` object
domainz&Incorrect domain separation value (%d)r   )r   )r   r   r   )kwargsr   r   s   ,  r!   r3   r3   ]   sW     

8T2%--A*+ , 	,::fDb+77r$   N)Crypto.Util._raw_apir   r   r   r   r   r   r	   Crypto.Util.numberr
   Crypto.Util.py3compatr   keccakr   objectr   r3    r$   r!   <module>rJ      s3   8 8 8
 - & #N# N#b8r$   