o
    tBh	                     @   s4  d dl Z d dlZd dlmZmZ zd dlmZ d dlmZm	Z	 W n e
y+   eZY nw deeef defddZd	eeef defd
dZd	edefddZdedefddZdeeef defddZdededefddZdedefddZdedefddZdededefddZd ededefd!d"ZdS )#    N)AnyUnion)EllipticCurve)decode_dss_signatureencode_dss_signaturevaluereturnc                 C   s*   t | tr
| dS t | tr| S td)Nzutf-8zExpected a string value)
isinstancestrencodebytes	TypeError)r    r   `/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/jwt/utils.pyforce_bytes   s
   


r   inputc                 C   sB   t | tr
| d} t| d }|dkr| dd|  7 } t| S )Nascii   r      =)r	   r
   r   lenbase64urlsafe_b64decode)r   remr   r   r   base64url_decode   s   


r   c                 C   s   t | ddS )Nr       )r   urlsafe_b64encodereplace)r   r   r   r   base64url_encode$   s   r   valc                 C   s0   | dk rt dt| }t|dkrd}t|S )Nr   zMust be a positive integer    )
ValueErrorbytes_from_intr   r   )r   	int_bytesr   r   r   to_base64url_uint(   s   r#   c                 C   s*   t | tr
| d} t| }tj|ddS )Nr   big)	byteorder)r	   r
   r   r   int
from_bytes)r   datar   r   r   from_base64url_uint4   s   

r)   num	num_bytesc                 C   s$   dd| | f }t |d}|S )Nz%0*x   r   )binasciia2b_hexr   )r*   r+   
padded_hex
big_endianr   r   r   number_to_bytes<   s   r1   stringc                 C   s   t t| dS )N   )r&   r-   b2a_hex)r2   r   r   r   bytes_to_numberB   s   r5   c                 C   s8   | }d}|dkr|d? }|d7 }|dks| j |dddS )Nr         r$   F)signed)to_bytes)r   	remainingbyte_lengthr   r   r   r!   F   s   r!   der_sigcurvec                 C   s2   |j }|d d }t| \}}t||t|| S )N   r6   )key_sizer   r1   )r<   r=   num_bitsr+   rsr   r   r   der_to_raw_signatureQ   s   rC   raw_sigc                 C   sT   |j }|d d }t| d| krtdt| d | }t| |d  }t||S )Nr>   r6   r,   zInvalid signature)r?   r   r    r5   r   )rD   r=   r@   r+   rA   rB   r   r   r   raw_to_der_signatureZ   s   
rE   )r   r-   typingr   r   ,cryptography.hazmat.primitives.asymmetric.ecr   /cryptography.hazmat.primitives.asymmetric.utilsr   r   ModuleNotFoundErrorr
   r   r   r   r   r&   r#   r)   r1   r5   r!   rC   rE   r   r   r   r   <module>   s&    		