<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
B
    _	                 @   s  d dl Z d dlZd dlmZmZ y d dlmZ d dlmZm	Z	 W n e
k
rX   eZY nX eeef edddZeeef edd	d
ZeedddZeedddZeeef edddZeeedddZeedddZeedddZeeedddZeeed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d S )Nzutf-8zExpected a string value)
isinstancestrencodebytes	TypeError)r    r   :/opt/alt/python37/lib/python3.7/site-packages/jwt/utils.pyforce_bytes   s
    


r   )inputr   c             C   sB   t | tr| d} t| d }|dkr8| 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   )valr   c             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_bytesr   c             C   s$   dd| | f }t |d}|S )Nz%0*x   r   )binasciia2b_hexr   )r*   r+   Z
padded_hexZ
big_endianr   r   r   number_to_bytes<   s    r/   )stringr   c             C   s   t t| dS )N   )r&   r-   b2a_hex)r0   r   r   r   bytes_to_numberB   s    r3   c             C   s6   | }d}x|dkr$|d? }|d7 }q
W | j |dddS )Nr         r$   F)signed)to_bytes)r   	remainingZbyte_lengthr   r   r   r!   F   s    
r!   )der_sigcurver   c             C   s2   |j }|d d }t| \}}t||t|| S )N   r4   )key_sizer   r/   )r9   r:   num_bitsr+   rsr   r   r   der_to_raw_signatureQ   s    r@   )raw_sigr:   r   c             C   sT   |j }|d d }t| d| kr*tdt| d | }t| |d  }t||S )Nr;   r4   r,   zInvalid signature)r<   r   r    r3   r   )rA   r:   r=   r+   r>   r?   r   r   r   raw_to_der_signatureZ   s    rB   )r   r-   typingr   r   Z,cryptography.hazmat.primitives.asymmetric.ecr   Z/cryptography.hazmat.primitives.asymmetric.utilsr   r   ModuleNotFoundErrorr
   r   r   r   r   r&   r#   r)   r/   r3   r!   r@   rB   r   r   r   r   <module>   s"   
		