§
    YøÁiñ  ã                   ót   — 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dS )	é    N)ÚKey)Ú
ALGORITHMS)ÚJWKError)Úbase64url_decodeÚbase64url_encodec                 óD   — t          t          j        | ¦  «        ¦  «        S ©N)ÚbytesÚosÚurandom)Ú	num_bytess    ú^/var/www/html/jarvis.com/web/backend/venv/lib/python3.11/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dS )ÚHMACKeyzf
    Performs signing and verification operations using HMAC
    and the specified hash function.
    c                 ó&  ‡— |t           j        vrt          d|z  ¦  «        ‚|| _        | j                             |¦  «        | _        t          ‰t          ¦  «        r|  	                    ‰¦  «        | _
        d S t          ‰t          ¦  «        s$t          ‰t          ¦  «        st          d¦  «        ‚t          ‰t          ¦  «        r‰                     d¦  «        Šg d¢}t          ˆfd„|D ¦   «         ¦  «        rt          d¦  «        ‚‰| _
        d S )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 V — Œ	d S r	   © )Ú.0Ústring_valueÚkeys     €r   ú	<genexpr>z#HMACKey.__init__.<locals>.<genexpr>.   s(   øè è € ÐGÐG |ˆ|˜sÐ"ÐGÐGÐGÐGÐGÐGr   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Ð+Ð+ÝÐGÈ)ÑSÑTÔTÐTØ#ˆŒØœŸš¨Ñ3Ô3ˆŒå�c�4Ñ Ô ð 	Ø $× 1Ò 1°#Ñ 6Ô 6ˆDÔØˆFå˜#�sÑ#Ô#ð 	J­J°s½EÑ,BÔ,Bð 	JÝÐHÑIÔIÐIå�c�3ÑÔð 	&Ø—*’*˜WÑ%Ô%ˆCð
ð 
ð 
ˆõ ÐGÐGÐGÐG°ÐGÑGÔGÑGÔGð 	Ýð9ñô ð ð
  ˆÔÐÐr   c                 ó  — |                      d¦  «        dk    s%t          d|                      d¦  «        z  ¦  «        ‚|                      d¦  «        }|                     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   s|   € Ø�|Š|˜EÑ"Ô" eÒ+Ð+ÝÐNÐQY×Q]ÒQ]Ð^cÑQdÔQdÑdÑeÔeÐeà�LŠL˜ÑÔˆØ�HŠH�WÑÔˆÝ�!‰HŒHˆÝ˜QÑÔˆàˆr   c                 óf   — t          j        | j        || j        ¦  «                             ¦   «         S r	   )ÚhmacÚnewr#   r   Údigest)r'   Úmsgs     r   ÚsignzHMACKey.signA   s'   € ÝŒx˜Ô)¨3°´Ñ?Ô?×FÒFÑHÔHÐHr   c                 óR   — t          j        ||                      |¦  «        ¦  «        S r	   )r1   Úcompare_digestr5   )r'   r4   Úsigs      r   ÚverifyzHMACKey.verifyD   s   € ÝÔ" 3¨¯	ª	°#©¬Ñ7Ô7Ð7r   c                 ób   — | j         dt          | j        ¦  «                             d¦  «        dœS )Nr-   ÚASCII)Úalgr,   r.   )r   r   r#   Údecode)r'   s    r   Úto_dictzHMACKey.to_dictG   s5   € à”?ØÝ! $Ô"3Ñ4Ô4×;Ò;¸GÑDÔ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      s’   € € € € € ðð ð
 Ô ¤°
Ô0@À'Ä.ÐR\ÔRbÐdkÔdrÐs€Fð ð  ð  ð>	ð 	ð 	ðIð Ið Ið8ð 8ð 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Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9ð(ð (ð (ð=
ð =
ð =
ð =
ð =
ˆcñ =
ô =
ð =
ð =
ð =
r   