Ë
    (üàgÑ  ã                   óÚ   — d dl mZmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 ddgZdd	d
dddddddddœZej                  «       D � �ci c]  \  } }|| “Œ
 c}} Z G d„ de«      Zdd„Zyc c}} w )é    )ÚbordÚtobytes)Ú	unhexlify)ÚBLAKE2s)Ústrxor)Úget_random_bytesÚnewÚHMACz1.2.840.113549.2.7z1.2.840.113549.2.8z1.2.840.113549.2.9z1.2.840.113549.2.10z1.2.840.113549.2.11z1.2.840.113549.2.12z1.2.840.113549.2.13z2.16.840.1.101.3.4.2.13z2.16.840.1.101.3.4.2.14z2.16.840.1.101.3.4.2.15z2.16.840.1.101.3.4.2.16)z1.3.14.3.2.26z2.16.840.1.101.3.4.2.4z2.16.840.1.101.3.4.2.1z2.16.840.1.101.3.4.2.2z2.16.840.1.101.3.4.2.3z2.16.840.1.101.3.4.2.5z2.16.840.1.101.3.4.2.6z2.16.840.1.101.3.4.2.7z2.16.840.1.101.3.4.2.8z2.16.840.1.101.3.4.2.9z2.16.840.1.101.3.4.2.10c                   óB   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zy)r
   aB  An HMAC hash object.
    Do not instantiate directly. Use the :func:`new` function.

    :ivar digest_size: the size in bytes of the resulting MAC tag
    :vartype digest_size: integer

    :ivar oid: the ASN.1 object ID of the HMAC algorithm.
               Only present if the algorithm was officially assigned one.
    Nc                 óö  — |€ddl m} |}|€d}|j                  | _        || _        	 t        |j
                     | _        t        |t        «      r|j                  «       }	 t        |«      |j                  k  r|d|j                  t        |«      z
  z  z   }n=|j                  |«      j                  «       }|d|j                  t        |«      z
  z  z   }t!        |dt        |«      z  «      }|j                  |«      | _        | j"                  j%                  |«       t!        |dt        |«      z  «      }|j                  |«      | _        y # t        t        f$ r Y �Œw xY w# t        $ r t        d«      ‚w xY w)Nr   )ÚMD5ó    ó    zHash type incompatible to HMACó   6ó   \)ÚCrypto.Hashr   Údigest_sizeÚ
_digestmodÚ_hash2hmac_oidÚoidÚKeyErrorÚAttributeErrorÚ
isinstanceÚ
memoryviewr   ÚlenÚ
block_sizer	   ÚdigestÚ
ValueErrorr   Ú_innerÚupdateÚ_outer)	ÚselfÚkeyÚmsgÚ	digestmodr   Úkey_0Úhash_kÚ
key_0_ipadÚ
key_0_opads	            úN/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/Crypto/Hash/HMAC.pyÚ__init__zHMAC.__init__H   sb  € àÐÝ'ØˆIàˆ;ØˆCð %×0Ñ0ˆÔà#ˆŒð	Ü% i§m¡mÑ4ˆDŒHô �cœ:Ô&Ø—+‘+“-ˆCð
	?Ü�3‹x˜9×/Ñ/Ò/à˜g¨×)=Ñ)=ÄÀCÃÑ)HÑIÑI‘ð #Ÿ™ sÓ+×2Ñ2Ó4�Ø ¨I×,@Ñ,@Ä3ÀvÃ;Ñ,NÑ!OÑO�ô ˜E 7¬S°«ZÑ#7Ó8ˆ
ð  —m‘m JÓ/ˆŒØ�‰×Ñ˜3Ôô ˜E 7¬S°«ZÑ#7Ó8ˆ
ð  —m‘m JÓ/ˆ�øô; œ.Ð)ò 	Úð	ûô ò 	?äÐ=Ó>Ð>ð	?ús   ¨E Á!A4E# ÅE ÅE Å#E8c                 ó<   — | j                   j                  |«       | S )zŒAuthenticate the next chunk of message.

        Args:
            data (byte string/byte array/memoryview): The next chunk of data
        )r   r    )r"   r$   s     r*   r    zHMAC.updatex   s   € ð 	�‰×Ñ˜3ÔØˆr   c                 ój   — | j                   j                  | j                  | j                  ||«      }|S )z2Carry out the expensive inner loop for PBKDF2-HMAC)r   Ú_pbkdf2_hmac_assistr   r!   )r"   Úfirst_digestÚ
iterationsÚresults       r*   r.   zHMAC._pbkdf2_hmac_assist‚   s3   € ð —‘×4Ñ4Ø$(§K¡KØ$(§K¡KØ$0Ø$.ó	0ˆð
 ˆr   c                 ó°   — t        d| j                  ¬«      }| j                  j                  «       |_        | j                  j                  «       |_        |S )a+  Return a copy ("clone") of the HMAC object.

        The copy will have the same internal state as the original HMAC
        object.
        This can be used to efficiently compute the MAC tag of byte
        strings that share a common initial substring.

        :return: An :class:`HMAC`
        s   fake key)r%   )r
   r   r   Úcopyr!   )r"   Únew_hmacs     r*   r3   z	HMAC.copyŒ   sC   € ô ˜¨t¯©Ô?ˆð Ÿ+™+×*Ñ*Ó,ˆŒØŸ+™+×*Ñ*Ó,ˆŒàˆr   c                 ó¨   — | j                   j                  «       }|j                  | j                  j	                  «       «       |j	                  «       S )zìReturn the **binary** (non-printable) MAC tag of the message
        authenticated so far.

        :return: The MAC tag digest, computed over the data processed so far.
                 Binary form.
        :rtype: byte string
        )r!   r3   r    r   r   )r"   Úfrozen_outer_hashs     r*   r   zHMAC.digestŸ   sA   € ð !ŸK™K×,Ñ,Ó.ÐØ× Ñ  §¡×!3Ñ!3Ó!5Ô6Ø ×'Ñ'Ó)Ð)r   c                 óî   — t        d«      }t        j                  d||¬«      }t        j                  d|| j                  «       ¬«      }|j                  «       |j                  «       k7  rt	        d«      ‚y)ah  Verify that a given **binary** MAC (computed by another party)
        is valid.

        Args:
          mac_tag (byte string/byte string/memoryview): the expected MAC of the message.

        Raises:
            ValueError: if the MAC does not match. It means that the message
                has been tampered with or that the MAC key is incorrect.
        é   é    )Údigest_bitsr#   ÚdatazMAC check failedN)r   r   r	   r   r   )r"   Úmac_tagÚsecretÚmac1Úmac2s        r*   ÚverifyzHMAC.verify¬   s]   € ô " "Ó%ˆä�{‰{ s°¸WÔEˆÜ�{‰{ s°¸T¿[¹[»]ÔKˆà�;‰;‹=˜DŸK™K›MÒ)ÜÐ/Ó0Ð0ð *r   c           	      ó�   — dj                  t        | j                  «       «      D �cg c]  }dt        |«      z  ‘Œ c}«      S c c}w )zÓReturn the **printable** MAC tag of the message authenticated so far.

        :return: The MAC tag, computed over the data processed so far.
                 Hexadecimal encoded.
        :rtype: string
        Ú z%02x)ÚjoinÚtupler   r   )r"   Úxs     r*   Ú	hexdigestzHMAC.hexdigestÀ   sD   € ð �w‰wÜ!& t§{¡{£}Ó!5ö7Øð ¤ a£Ó(ò 7ó 8ð 	8ùò 7s   §Ac                 óJ   — | j                  t        t        |«      «      «       y)a~  Verify that a given **printable** MAC (computed by another party)
        is valid.

        Args:
            hex_mac_tag (string): the expected MAC of the message,
                as a hexadecimal string.

        Raises:
            ValueError: if the MAC does not match. It means that the message
                has been tampered with or that the MAC key is incorrect.
        N)r@   r   r   )r"   Úhex_mac_tags     r*   Ú	hexverifyzHMAC.hexverifyË   s   € ð 	�‰”Iœg kÓ2Ó3Õ4r   ©r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r+   r    r.   r3   r   r@   rF   rI   © r   r*   r
   r
   =   s0   „ ñó.0ò`òòò&*ò1ò(	8ó5r   Nc                 ó   — t        | ||«      S )a=  Create a new MAC object.

    Args:
        key (bytes/bytearray/memoryview):
            key for the MAC object.
            It must be long enough to match the expected security level of the
            MAC.
        msg (bytes/bytearray/memoryview):
            Optional. The very first chunk of the message to authenticate.
            It is equivalent to an early call to :meth:`HMAC.update`.
        digestmod (module):
            The hash to use to implement the HMAC.
            Default is :mod:`Crypto.Hash.MD5`.

    Returns:
        An :class:`HMAC` object
    )r
   )r#   r$   r%   s      r*   r	   r	   Û   s   € ô& ��S˜)Ó$Ð$r   rJ   )ÚCrypto.Util.py3compatr   r   Úbinasciir   r   r   ÚCrypto.Util.strxorr   ÚCrypto.Randomr   Ú__all__r   ÚitemsÚ_hmac2hash_oidÚobjectr
   r	   )ÚkÚvs   00r*   ú<module>r[      s‡   ð÷D 0å å Ý %Ý *à�&ˆ/€ð *Ø2Ø2Ø3Ø3Ø3Ø3Ø7Ø7Ø7Ø8ñ€ð $2×#7Ñ#7Ó#9×:™4˜1˜a�!�Q‘$Ó:€ô[5ˆ6ô [5ô|%ùóC ;s   ÁA'