o
    Cji0                     @   sp   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d ZG dd	 d	eZdS )
    N)Key)
ALGORITHMS)JWKError)base64url_decodebase64url_encodeis_pem_format
is_ssh_keyc                 C   s   t t| S N)bytesosurandom)	num_bytes r   k/var/www/html/Resume-Parser/resume-parser-inhouse/venv/lib/python3.10/site-packages/jose/backends/native.pyget_random_bytes   s   r   c                   @   sT   e Zd ZdZejejejej	ej
ejiZdd Zdd Zdd Zdd	 Zd
d ZdS )HMACKeyzf
    Performs signing and verification operations using HMAC
    and the specified hash function.
    c                 C   s   |t jvrtd| || _| j|| _t|tr"| 	|| _
d S t|ts0t|ts0tdt|tr:|d}t|sBt|rFt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	algorithmr   r   r   __init__   s    




zHMACKey.__init__c                 C   sH   | ddkstd| d | d}|d}t|}t|}|S )Nktyoctz1Incorrect key type. Expected: 'oct', Received: %skr   )r   r   r   r
   r   )r   jwk_dictr$   r   r   r   r   /   s   

zHMACKey._process_jwkc                 C   s   t | j|| j S r	   )hmacnewr   r   digest)r   msgr   r   r   sign:   s   zHMACKey.signc                 C   s   t || |S r	   )r&   compare_digestr*   )r   r)   sigr   r   r   verify=   s   zHMACKey.verifyc                 C   s   | j dt| jddS )Nr#   ASCII)algr"   r$   )r   r   r   decode)r   r   r   r   to_dict@   s   zHMACKey.to_dictN)__name__
__module____qualname____doc__r   HS256hashlibsha256HS384sha384HS512sha512r   r!   r   r*   r-   r1   r   r   r   r   r      s    r   )r7   r&   r   jose.backends.baser   jose.constantsr   jose.exceptionsr   
jose.utilsr   r   r   r   r   r   r   r   r   r   <module>   s    