Ë
    %V.jñ  ã                   ól   — d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
mZ d„ Z G d„ de«      Zy)	é    N)ÚKey)Ú
ALGORITHMS)ÚJWKError)Úbase64url_decodeÚbase64url_encodec                 ó>   — t        t        j                  | «      «      S ©N)ÚbytesÚosÚurandom)Ú	num_bytess    úVC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\jose/backends/native.pyÚget_random_bytesr      s   € Ü”—‘˜IÓ&Ó'Ð'ó    c                   ó¶   — e Zd ZdZej
                  ej                  ej                  ej                  ej                  ej                  iZd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚHMACKeyzf
    Performs signing and verification operations using HMAC
    and the specified hash function.
    c                 óÎ  ‡— |t         j                  vrt        d|z  «      ‚|| _        | j                  j                  |«      | _        t        ‰t        «      r| j                  ‰«      | _
        y t        ‰t        «      st        ‰t        «      st        d«      ‚t        ‰t        «      r‰j                  d«      Šg d¢}t        ˆfd„|D «       «      rt        d«      ‚‰| _
        y )Nz*hash_alg: %s is not a valid hash algorithmz+Expecting a string- or bytes-formatted key.úutf-8)s   -----BEGIN PUBLIC KEY-----s   -----BEGIN RSA PUBLIC KEY-----s   -----BEGIN CERTIFICATE-----s   ssh-rsac              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wr	   © )Ú.0Ústring_valueÚkeys     €r   Ú	<genexpr>z#HMACKey.__init__.<locals>.<genexpr>.   s   øè ø€ ÐG± |ˆ|˜sÔ"±ùs   ƒzdThe specified key is an asymmetric key or x509 certificate and should not be used as an HMAC secret.)r   ÚHMACr   Ú
_algorithmÚHASHESÚgetÚ	_hash_algÚ
isinstanceÚdictÚ_process_jwkÚprepared_keyÚstrr
   ÚencodeÚany)Úselfr   Ú	algorithmÚinvalid_stringss    `  r   Ú__init__zHMACKey.__init__   sÅ   ø€ ØœJŸO™OÑ+ÜÐGÈ)ÑSÓTÐTØ#ˆŒØŸ™Ÿ™¨Ó3ˆŒä�cœ4Ô Ø $× 1Ñ 1°#Ó 6ˆDÔØä˜#œsÔ#¬J°s¼EÔ,BÜÐHÓIÐIä�cœ3ÔØ—*‘*˜WÓ%ˆCò
ˆô ÓG±ÓGÔGÜð9óð ð
  ˆÕr   c                 óØ   — |j                  d«      dk(  st        d|j                  d«      z  «      ‚|j                  d«      }|j                  d«      }t        |«      }t	        |«      }|S )NÚktyÚoctz1Incorrect key type. Expected: 'oct', Received: %sÚkr   )r   r   r%   r
   r   )r'   Újwk_dictr.   s      r   r"   zHMACKey._process_jwk6   se   € Ø�|‰|˜EÓ" eÒ+ÜÐNÐQY×Q]ÑQ]Ð^cÓQdÑdÓeÐeà�L‰L˜ÓˆØ�H‰H�WÓˆÜ�!‹HˆÜ˜QÓˆàˆr   c                 ót   — t        j                  | j                  || j                  «      j	                  «       S r	   )ÚhmacÚnewr#   r   Údigest)r'   Úmsgs     r   ÚsignzHMACKey.signA   s(   € Ü�x‰x˜×)Ñ)¨3°·±Ó?×FÑFÓHÐHr   c                 óL   — t        j                  || j                  |«      «      S r	   )r1   Úcompare_digestr5   )r'   r4   Úsigs      r   ÚverifyzHMACKey.verifyD   s   € Ü×"Ñ" 3¨¯	©	°#«Ó7Ð7r   c                 óf   — | j                   dt        | j                  «      j                  d«      dœS )Nr-   ÚASCII)Úalgr,   r.   )r   r   r#   Údecode)r'   s    r   Úto_dictzHMACKey.to_dictG   s/   € à—?‘?ØÜ! $×"3Ñ"3Ó4×;Ñ;¸GÓDñ
ð 	
r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚHS256ÚhashlibÚsha256ÚHS384Úsha384ÚHS512Úsha512r   r*   r"   r5   r9   r>   r   r   r   r   r      sW   „ ñð
 ×Ñ §¡°
×0@Ñ0@À'Ç.Á.ÐR\×RbÑRbÐdk×drÑdrÐs€Fò ò>	òIò8ó
r   r   )rD   r1   r   Újose.backends.baser   Újose.constantsr   Újose.exceptionsr   Ú
jose.utilsr   r   r   r   r   r   r   Ú<module>rN      s+   ðÛ Û Û 	å "Ý %Ý $ß 9ò(ô=
ˆcõ =
r   