Edit File: utils.cpython-37.opt-1.pyc
B �b�[E � @ s� d dl Z d dlZd dlZddlmZmZmZ yd dlmZm Z W n e k rT Y nX dd� Zdd� Zd d � Z dd� Zd d� Zdd� Zdd� Zdd� Zdd� Zdd� Zdd� ZdS )� N� )�binary_type�bytes_from_int� text_type)�decode_dss_signature�encode_dss_signaturec C s. t | t�r| �d�S t | t�r"| S td��d S )Nzutf-8zExpected a string value)� isinstancer �decoder � TypeError)�value� r �:/opt/alt/python37/lib/python3.7/site-packages/jwt/utils.py� force_unicode s r c C s. t | t�r| �d�S t | t�r"| S td��d S )Nzutf-8zExpected a string value)r r �encoder r )r r r r �force_bytes s r c C sB t | t�r| �d�} t| �d }|dkr8| dd| 7 } t�| �S )N�ascii� r � =)r r r �len�base64Zurlsafe_b64decode)�inputZremr r r �base64url_decode! s r c C s t �| ��dd�S )Nr � )r Zurlsafe_b64encode�replace)r r r r �base64url_encode- s r c C s0 | dk rt d��t| �}t|�dkr(d}t|�S )Nr zMust be a positive integer� )� ValueErrorr r r )�val� int_bytesr r r �to_base64url_uint1 s r c C sJ t | t�r| �d�} t| �}t�dt|� |�}td�dd� |D ��d�S )Nr z%sB� c S s g | ]}d | �qS )z%02xr )�.0Zbyter r r � <listcomp>D s z'from_base64url_uint.<locals>.<listcomp>� ) r r r r �structZunpackr �int�join)r �dataZbufr r r �from_base64url_uint= s r( c C sV |s| S y| � � }|�|� W n2 ttfk rP } ztd| ��W d d }~X Y nX |S )Nz-original and updates must be a dictionary: %s)�copy�update�AttributeErrorr r )ZoriginalZupdatesZmerged_options�er r r � merge_dictG s r- c C s$ dd| | f }t �|�d��}|S )Nz%0*x� r )�binasciiZa2b_hexr )Znum� num_bytesZ padded_hexZ big_endianr r r �number_to_bytesT s r1 c C s t t�| �d�S )Nr# )r% r/ Zb2a_hex)�stringr r r �bytes_to_numberZ s r3 c C s2 |j }|d d }t| �\}}t||�t||� S )N� � )�key_sizer r1 )Zder_sig�curve�num_bitsr0 �r�sr r r �der_to_raw_signature^ s r; c C sT |j }|d d }t| �d| kr*td��t| d |� �}t| |d � �}t||�S )Nr4 r5 r. zInvalid signature)r6 r r r3 r )Zraw_sigr7 r8 r0 r9 r: r r r �raw_to_der_signatureg s r<