§
    ‹r°dE#  ã                   óˆ   — 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dlmZ d„ ZdZdZdZd	Z G d
„ de¦  «        Zdd„ZdS )é    )ÚVoidPointerÚSmartPointerÚcreate_string_bufferÚget_raw_bufferÚc_size_tÚc_uint8_ptrÚc_ubyte)Úlong_to_bytes)Úbchré   )Ú_raw_keccak_libc                 ón   — | dk    rdS t          | ¦  «        }|t          t          |¦  «        ¦  «        z   S )Nr   ó    )r
   r   Úlen)ÚxÚSs     ú_/var/www/pp.vulcan-creative.com/venv/lib/python3.11/site-packages/Crypto/Hash/KangarooTwelve.pyÚ_length_encoder   *   s4   € ØˆA‚v€vØˆwå�aÑÔ€AØ�t•C˜‘F”F‰|Œ|ÑÐó    é   é   é   c                   óD   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
dd„Zd	S )ÚK12_XOFzeA KangarooTwelve hash object.
    Do not instantiate directly.
    Use the :func:`new` function.
    c                 ó   — |d k    rd}|t          t          |¦  «        ¦  «        z   | _        t          | _        d | _        |                      ¦   «         | _        d| _        d | _	        d| _
        d| _        |r|                      |¦  «         d S d S )Nr   r   )r   r   Ú_customÚ	SHORT_MSGÚ_stateÚ_paddingÚ_create_keccakÚ_hash1Ú_length1Ú_hash2Ú_length2Ú_ctrÚupdate©ÚselfÚdataÚcustoms      r   Ú__init__zK12_XOF.__init__?   s—   € à�TŠ>ˆ>ØˆFà¥­s°6©{¬{Ñ ;Ô ;Ñ;ˆŒÝˆŒØˆŒð ×)Ò)Ñ+Ô+ˆŒØˆŒð ˆŒØˆŒð ˆŒ	àð 	Ø�KŠK˜ÑÔÐÐÐð	ð 	r   c                 ó"  — t          ¦   «         }t          j        |                     ¦   «         t	          d¦  «        t          d¦  «        ¦  «        }|rt          d|z  ¦  «        ‚t          |                     ¦   «         t          j	        ¦  «        S )Né    é   z+Error %d while instantiating KangarooTwelve)
r   r   Úkeccak_initÚ
address_ofr   r	   Ú
ValueErrorr   ÚgetÚkeccak_destroy)r(   ÚstateÚresults      r   r    zK12_XOF._create_keccakV   s   € Ý‘”ˆÝ Ô,¨U×-=Ò-=Ñ-?Ô-?Ý-5°b©\¬\Ý-4°R©[¬[ñ:ô :ˆð ð 	'ÝÐJØ%ñ&ñ 'ô 'ð 'å˜EŸIšI™KœK­Ô)GÑHÔHÐHr   c           	      óÌ   — t          j        |                     ¦   «         t          |¦  «        t	          t          |¦  «        ¦  «        ¦  «        }|rt          d|z  ¦  «        ‚d S )Nz,Error %d while updating KangarooTwelve state)r   Úkeccak_absorbr2   r   r   r   r1   )r(   r)   Úhash_objr5   s       r   Ú_updatezK12_XOF._update`   sm   € Ý Ô.¨x¯|ª|©~¬~Ý/:¸4Ñ/@Ô/@Ý/7½¸D¹	¼	Ñ/BÔ/BñDô Dˆð ð 	'ÝÐKØ%ñ&ñ 'ô 'ð 'ð	'ð 	'r   c                 óì   — t          |¦  «        }t          j        |                     ¦   «         |t	          |¦  «        t          |¦  «        ¦  «        }|rt          d|z  ¦  «        ‚t          |¦  «        S )Nz-Error %d while extracting from KangarooTwelve)r   r   Úkeccak_squeezer2   r   r	   r1   r   )r(   r8   ÚlengthÚpaddingÚbfrr5   s         r   Ú_squeezezK12_XOF._squeezeh   s}   € Ý" 6Ñ*Ô*ˆÝ Ô/°·²±´Ø03Ý08¸Ñ0@Ô0@Ý07¸Ñ0@Ô0@ñBô Bˆð ð 	'ÝÐLØ%ñ&ñ 'ô 'ð 'õ ˜cÑ"Ô"Ð"r   c                 óz   — t          j        |                     ¦   «         ¦  «        }|rt          d|z  ¦  «        ‚d S )Nz-Error %d while resetting KangarooTwelve state)r   Úkeccak_resetr2   r1   )r(   r8   r5   s      r   Ú_resetzK12_XOF._resett   sI   € Ý Ô-¨h¯lªl©n¬nÑ=Ô=ˆØð 	'ÝÐLØ%ñ&ñ 'ô 'ð 'ð	'ð 	'r   c                 óˆ  — | j         t          k    rt          d¦  «        ‚| j         t          k    rb| j        t          |¦  «        z   }|t          | j        ¦  «        z   dk    r$|| _        |                      || j        ¦  «         | S t          | _         | j         t          k    �rt          |¦  «        }| j        dk     sJ ‚t          t          |¦  «        d| j        z
  ¦  «        }|                      |d|…         | j        ¦  «         | xj        |z  c_        | j        dk     r| S | j        dk    sJ ‚d}|                      || j        ¦  «         | xj        dz  c_        |                      ¦   «         | _        d| _        d| _        t           | _         |                      ||d…         ¦  «        S | j         t           k    sJ ‚d}t          |¦  «        }t          |¦  «        }||k     rÜt          |dz   | j        z
  |¦  «        }|                      |||…         | j        ¦  «         | xj        ||z
  z  c_        |}| j        dk    rx|                      | j        dd	¦  «        }	|                      |	| j        ¦  «         | xj        dz  c_        |                      | j        ¦  «         d| _        | xj        dz  c_        ||k     °Ü| S )
a  Hash the next piece of data.

        .. note::
            For better performance, submit chunks with a length multiple of 8192 bytes.

        Args:
            data (byte string/byte array/memoryview): The next chunk of the
            message to hash.
        z/You cannot call 'update' after the first 'read'i    Ns          é   r   r   r-   é   )r   Ú	SQUEEZINGÚ	TypeErrorr   r"   r   r   r9   r!   ÚLONG_MSG_S0Ú
memoryviewÚminr    r#   r$   r%   ÚLONG_MSG_SXr&   r?   rB   )
r(   r)   Únext_lengthÚdata_memÚdtcÚdividerÚindexÚlen_dataÚ	new_indexÚcv_is
             r   r&   zK12_XOF.updatez   s©  € ð Œ;�)Ò#Ð#ÝÐMÑNÔNÐNàŒ;�)Ò#Ð#Øœ-­#¨d©)¬)Ñ3ˆKà�S ¤Ñ.Ô.Ñ.°$Ò6Ð6Ø +�”Ø—’˜T 4¤;Ñ/Ô/Ð/Ø�õ &ˆDŒKàŒ;�+Ò%Ñ%Ý! $Ñ'Ô'ˆHØ”= 4Ò'Ð'Ð'Ð'Ý•c˜$‘i”i ¨¬Ñ!5Ñ6Ô6ˆCØ�LŠL˜ $ 3 $œ¨¬Ñ5Ô5Ð5ØˆMŒM˜SÑ ˆMŒMàŒ}˜tÒ#Ð#Ø�ð ”= DÒ(Ð(Ð(Ð(à+ˆGØ�LŠL˜ $¤+Ñ.Ô.Ð.ØˆMŒM˜QÑˆMŒMà×-Ò-Ñ/Ô/ˆDŒKØˆDŒMØˆDŒIå%ˆDŒKØ—;’;˜x¨¨¨œ~Ñ.Ô.Ð.ð Œ{�kÒ)Ð)Ð)Ð)ØˆÝ�t‘9”9ˆõ ˜dÑ#Ô#ˆØ�hÒÐå˜E D™L¨4¬=Ñ8¸(ÑCÔCˆIØ�LŠL˜ %¨	 /Ô2°D´KÑ@Ô@Ð@ØˆMŒM˜Y¨Ñ.Ñ.ˆMŒMØˆEàŒ} Ò$Ð$Ø—}’} T¤[°"°dÑ;Ô;�Ø—’˜T 4¤;Ñ/Ô/Ð/Ø�” Ñ#�”Ø—’˜DœKÑ(Ô(Ð(Ø !�”Ø�	”	˜Q‘�	”	ð �hÒÐð ˆr   c                 ó8  — d}| j         t          k    r3|                      | j        | j        ¦  «         d| _        t          | _         | j         t          k    r.|                      | j        ¦  «         d}| j         t          k    sJ ‚| j         t          k    rç|s|                      | j        ¦  «         | j
        dk    rx|                      | j        dd¦  «        }|                      || j        ¦  «         | xj        dz  c_        |                      | j        ¦  «         d| _
        | xj        dz  c_        t!          | j        dz
  ¦  «        dz   }|                      || j        ¦  «         d	| _        t          | _         |                      | j        || j        ¦  «        S )
ad  
        Produce more bytes of the digest.

        .. 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
        Fé   Tr   r-   rE   r   s   ÿÿé   )r   r   r9   r   r!   r   rF   rH   r&   rK   r$   r?   r#   r"   rB   r%   r   )r(   r<   Úcustom_was_consumedrS   Útrailers        r   ÚreadzK12_XOF.readÃ   sl  € ð $ÐàŒ;�)Ò#Ð#Ø�LŠL˜œ t¤{Ñ3Ô3Ð3Ø ˆDŒMÝ#ˆDŒKàŒ;�+Ò%Ð%Ø�KŠK˜œÑ%Ô%Ð%Ø"&ÐØ”;¥+Ò-Ð-Ð-Ð-àŒ;�+Ò%Ð%Ø&ð *Ø—’˜DœLÑ)Ô)Ð)ð Œ}˜qÒ Ð Ø—}’} T¤[°"°dÑ;Ô;�Ø—’˜T 4¤;Ñ/Ô/Ð/Ø�” Ñ#�”Ø—’˜DœKÑ(Ô(Ð(Ø !�”Ø�	”	˜Q‘�	”	å$ T¤Y°¡]Ñ3Ô3°kÑAˆGØ�LŠL˜ $¤+Ñ.Ô.Ð.à ˆDŒMÝ#ˆDŒKà�}Š}˜Tœ[¨&°$´-Ñ@Ô@Ð@r   Nr   c                 ó4   —  t          | ¦  «        ||¦  «        S )N)Útyper'   s      r   ÚnewzK12_XOF.newó   s   € Ø�t�D‰zŒz˜$ Ñ'Ô'Ð'r   )Nr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r+   r    r9   r?   rB   r&   rY   r\   © r   r   r   r   9   s¦   € € € € € ðð ð
ð ð ð.Ið Ið Ið'ð 'ð 'ð
#ð 
#ð 
#ð'ð 'ð 'ðGð Gð GðR.Að .Að .Að`(ð (ð (ð (ð (ð (r   r   Nc                 ó"   — t          | |¦  «        S )ag  Return a fresh instance of a KangarooTwelve 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 byte string.

    :Return: A :class:`K12_XOF` object
    )r   )r)   r*   s     r   r\   r\   ÷   s   € õ �4˜Ñ Ô Ð r   )NN)ÚCrypto.Util._raw_apir   r   r   r   r   r   r	   ÚCrypto.Util.numberr
   ÚCrypto.Util.py3compatr   Úkeccakr   r   r   rH   rK   rF   Úobjectr   r\   ra   r   r   ú<module>rh      s  ðð>8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð
 -Ð ,Ð ,Ð ,Ð ,Ð ,Ø &Ð &Ð &Ð &Ð &Ð &à #Ð #Ð #Ð #Ð #Ð #ðð ð ð €	Ø€Ø€Ø€	ð{(ð {(ð {(ð {(ð {(ˆfñ {(ô {(ð {(ð|!ð !ð !ð !ð !ð !r   