
    ¿ig                     t    d dl mZ d dlmZmZmZmZmZmZm	Z	m
Z
  edd          Z G d de          Zd ZdS )	    bord)load_pycryptodome_raw_libVoidPointerSmartPointercreate_string_bufferget_raw_bufferc_size_tc_uint8_ptrc_ubytezCryptodome.Hash._keccaka  
                        int keccak_init(void **state,
                                        size_t capacity_bytes,
                                        uint8_t rounds);
                        int keccak_destroy(void *state);
                        int keccak_absorb(void *state,
                                          const uint8_t *in,
                                          size_t len);
                        int keccak_squeeze(const void *state,
                                           uint8_t *out,
                                           size_t len,
                                           uint8_t padding);
                        int keccak_digest(void *state,
                                          uint8_t *digest,
                                          size_t len,
                                          uint8_t padding);
                        int keccak_copy(const void *src, void *dst);
                        int keccak_reset(void *state);
                        c                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )Keccak_HashzA Keccak hash object.
    Do not instantiate directly.
    Use the :func:`new` function.

    :ivar digest_size: the size in bytes of the resulting hash
    :vartype digest_size: integer
    c                    || _         || _        d| _        d| _        t	                      }t
                              |                                t          | j         dz            t          d                    }|rt          d|z            t          |                                t
          j                  | _        |r|                     |           d S d S )NF         z#Error %d while instantiating keccak)digest_size_update_after_digest_digest_done_paddingr   _raw_keccak_libkeccak_init
address_ofr
   r   
ValueErrorr   getkeccak_destroy_stateupdate)selfdatadigest_bytesupdate_after_digeststateresults         R/var/www/html/afkarena/venv/lib/python3.11/site-packages/Cryptodome/Hash/keccak.py__init__zKeccak_Hash.__init__E   s    '$7!! ,,U-=-=-?-?-5d6F6J-K-K-4R[[: :  	MBVKLLL"599;;#2#AC C 	KK	 	    c           	         | j         r| j        st          d          t                              | j                                        t          |          t          t          |                              }|rt          d|z            | S )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.
        z8You can only call 'digest' or 'hexdigest' on this objectzError %d while updating keccak)r   r   	TypeErrorr   keccak_absorbr   r   r   r
   lenr   )r   r    r$   s      r%   r   zKeccak_Hash.updateX   s      	XT%> 	XVWWW ..t{/@/@/:4/@/@/7D		/B/BD D  	H=FGGGr'   c                 .   d| _         t          | j                  }t                              | j                                        |t          | j                  t          | j	                            }|rt          d|z            t          |          S )zReturn the **binary** (non-printable) digest of the message that has been hashed so far.

        :return: The hash digest, computed over the data processed so far.
                 Binary form.
        :rtype: byte string
        TzError %d while squeezing keccak)r   r   r   r   keccak_digestr   r   r
   r   r   r   r	   )r   bfrr$   s      r%   digestzKeccak_Hash.digesti   s     !"4#344 ..t{/@/@/2/78H/I/I/6t}/E/EG G  	I>GHHHc"""r'   c                 d    d                     d |                                 D                       S )zReturn the **printable** digest of the message that has been hashed so far.

        :return: The hash digest, computed over the data processed so far.
                 Hexadecimal encoded.
        :rtype: string
         c                 2    g | ]}d t          |          z  S )z%02xr   ).0xs     r%   
<listcomp>z)Keccak_Hash.hexdigest.<locals>.<listcomp>   s#    @@@Qa(@@@r'   )joinr/   )r   s    r%   	hexdigestzKeccak_Hash.hexdigest|   s-     ww@@$++--@@@AAAr'   c                 >    d|vrd|vr
| j         |d<   t          di |S )z"Create a fresh Keccak hash object.r!   digest_bits )r   new)r   kwargss     r%   r;   zKeccak_Hash.new   s6     ''M,G,G%)%5F>"}}V}}r'   N)	__name__
__module____qualname____doc__r&   r   r/   r7   r;   r:   r'   r%   r   r   <   sl           &  "# # #&B B B    r'   r   c                     |                      dd          }|                      dd          }|                      dd          }|                      dd          }d||fvrt          d          d||fk    rt          d	          ||d
vrt          d          n|dvrt          d          |dz  }| rt          dt          |           z             t	          |||          S )ao  Create a new hash object.

    Args:
        data (bytes/bytearray/memoryview):
            The very first chunk of the message to hash.
            It is equivalent to an early call to :meth:`Keccak_Hash.update`.
        digest_bytes (integer):
            The size of the digest, in bytes (28, 32, 48, 64).
        digest_bits (integer):
            The size of the digest, in bits (224, 256, 384, 512).
        update_after_digest (boolean):
            Whether :meth:`Keccak.digest` can be followed by another
            :meth:`Keccak.update` (default: ``False``).

    :Return: A :class:`Keccak_Hash` hash object
    r    Nr"   Fr!   r9   z*Only one digest parameter must be provided)NNz&Digest size (bits, bytes) not provided)       0   @   z('digest_bytes' must be: 28, 32, 48 or 64)      i  i   z,'digest_bytes' must be: 224, 256, 384 or 512   zUnknown parameters: )popr)   r   strr   )r<   r    r"   r!   r9   s        r%   r;   r;      s   $ ::fd##D **%:EBB::nd33L**]D11KL+...DEEEk222@AAA///GHHH 0 222KLLL"a' >.V<===t\+>???r'   N)Cryptodome.Util.py3compatr   Cryptodome.Util._raw_apir   r   r   r   r	   r
   r   r   r   objectr   r;   r:   r'   r%   <module>rN      s   > + * * * * *8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 ,+,E *P P P P P& P P Pf&@ &@ &@ &@ &@r'   