§
    tŠtj0  ã                   ó|   — 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mZmZ d„ Z G d„ de¦  «        ZdS )	é    N)ÚKey)Ú
ALGORITHMS)ÚJWKError)Úbase64url_decodeÚbase64url_encodeÚis_pem_formatÚ
is_ssh_keyc                 óD   — t          t          j        | ¦  «        ¦  «        S ©N)ÚbytesÚosÚurandom)Ú	num_bytess    úR/var/www/html/CA-Chatbot/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¦  «        }t          |¦  «        st          |¦  «        rt          d¦  «        ‚|| _
        d S )Nz*hash_alg: %s is not a valid hash algorithmz+Expecting a string- or bytes-formatted key.úutf-8zdThe 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   Úencoder   r	   )ÚselfÚkeyÚ	algorithms      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å˜ÑÔð 	¥¨C¡¤ð 	Ýð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_jwk/   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.sign:   s'   € ÝŒx˜Ô)¨3°´Ñ?Ô?×FÒFÑHÔHÐHr   c                 óR   — t          j        ||                      |¦  «        ¦  «        S r   )r,   Úcompare_digestr0   )r"   r/   Úsigs      r   ÚverifyzHMACKey.verify=   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_dict@   s5   € à”?ØÝ! $Ô"3Ñ4Ô4×;Ò;¸GÑDÔDð
ð 
ð 	
r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚHS256ÚhashlibÚsha256ÚHS384Úsha384ÚHS512Úsha512r   r%   r   r0   r4   r9   © r   r   r   r      s’   € € € € € ðð ð
 Ô ¤°
Ô0@À'Ä.ÐR\ÔRbÐdkÔdrÐs€Fð ð  ð  ð0	ð 	ð 	ðIð Ið Ið8ð 8ð 8ð
ð 
ð 
ð 
ð 
r   r   )r?   r,   r   Újose.backends.baser   Újose.constantsr   Újose.exceptionsr   Ú
jose.utilsr   r   r   r	   r   r   rE   r   r   ú<module>rJ      s½   ðØ €€€Ø €€€Ø 	€	€	€	à "Ð "Ð "Ð "Ð "Ð "Ø %Ð %Ð %Ð %Ð %Ð %Ø $Ð $Ð $Ð $Ð $Ð $Ø TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ Tð(ð (ð (ð6
ð 6
ð 6
ð 6
ð 6
ˆcñ 6
ô 6
ð 6
ð 6
ð 6
r   