
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ’Óà_Î	  ã                   @   s  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
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/python38/lib/python3.8/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   Z	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)r/   r   r   r   Úbytes_to_numberB   s    r2   c                 C   s2   | }d}|dkr"|d? }|d7 }q| 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é   r3   )Úkey_sizer   r.   )r8   r9   Únum_bitsr*   ÚrÚsr   r   r   Úder_to_raw_signatureQ   s    r?   )Úraw_sigr9   r   c                 C   sT   |j }|d d }t| ƒd| kr*tdƒ‚t| d |… ƒ}t| |d … ƒ}t||ƒS )Nr:   r3   r+   zInvalid signature)r;   r   r    r2   r   )r@   r9   r<   r*   r=   r>   r   r   r   Úraw_to_der_signatureZ   s    rA   )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.   r2   r!   r?   rA   r   r   r   r   Ú<module>   s"   
		