HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //usr/lib/python3/dist-packages/jwt/__pycache__/api_jws.cpython-38.pyc
U

�b�[��@s�ddlZddlZddlZz ddlmZmZmZmZmZWne	k
rLYnXddl
mZmZm
Z
mZddlmZmZmZmZddlmZmZmZmZddlmZmZmZmZGdd	�d	e�Ze�Z e j!Z!e j"Z"e j#Z#e j$Z$e j%Z%dS)
�N)�Callable�Dict�List�Optional�Union�)�	Algorithm�get_default_algorithms�
has_crypto�requires_cryptography)�Mapping�binary_type�string_types�	text_type)�DecodeError�InvalidAlgorithmError�InvalidSignatureError�InvalidTokenError)�base64url_decode�base64url_encode�force_bytes�
merge_dictc@s|eZdZdZddd�Zedd��Zdd�Zd	d
�Zdd�Z	ddd�Z
d dd�Zdd�Zdd�Z
d!dd�Zdd�Zdd�ZdS)"�PyJWSZJWTNcCsft�|_|dk	rt|�nt|j�|_t|j���D]}||jkr2|j|=q2|sRi}t|��|�|_dS)N)	r	�_algorithms�set�_valid_algs�list�keysr�_get_default_options�options)�self�
algorithmsr�key�r#�-/usr/lib/python3/dist-packages/jwt/api_jws.py�__init__s�

zPyJWS.__init__cCsddiS)N�verify_signatureTr#r#r#r#r$r's�zPyJWS._get_default_optionscCs>||jkrtd��t|t�s$td��||j|<|j�|�dS)zW
        Registers a new Algorithm for use when creating and verifying tokens.
        z Algorithm already has a handler.z!Object is not of type `Algorithm`N)r�
ValueError�
isinstancer�	TypeErrorr�add)r �alg_id�alg_objr#r#r$�register_algorithm-s


zPyJWS.register_algorithmcCs*||jkrtd��|j|=|j�|�dS)z�
        Unregisters an Algorithm for use when creating and verifying tokens
        Throws KeyError if algorithm is not registered.
        zJThe specified algorithm could not be removed because it is not registered.N)r�KeyErrorr�remove)r r+r#r#r$�unregister_algorithm:s
zPyJWS.unregister_algorithmcCs
t|j�S)zM
        Returns a list of supported values for the 'alg' parameter.
        )rr)r r#r#r$�get_algorithmsFszPyJWS.get_algorithms�HS256cCs�g}|dkrd}||jkr|j|d�}|r>|�|�|�|�ttj|d|d��}|�t|��|�t|��d�	|�}	z$|j
|}
|
�|�}|
�|	|�}Wn6t
k
r�ts�|tkr�td|��ntd��YnX|�t|��d�	|�S)NZnone)�typ�alg)�,�:)Z
separators�cls�.zFAlgorithm '%s' could not be found. Do you have cryptography installed?�Algorithm not supported)r�
header_typ�_validate_headers�updater�json�dumps�appendr�joinr�prepare_keyZsignr.r
r�NotImplementedError)r �payloadr"�	algorithm�headersZjson_encoderZsegments�headerZjson_header�
signing_inputr,�	signaturer#r#r$�encodeLs@


��


��zPyJWS.encode�Tc
Kslt|j|�}|d}|r(|s(t�dt�|�|�\}	}
}}|sPtjdtdd�n|rh|�|	|
||||�|	S)Nr&z�It is strongly recommended that you pass in a value for the "algorithms" argument when calling decode(). This argument will be mandatory in a future version.zSThe verify parameter is deprecated. Please use verify_signature in options instead.�)�
stacklevel)rr�warnings�warn�DeprecationWarning�_load�_verify_signature)
r �jwtr"�verifyr!r�kwargsZmerged_optionsr&rCrGrFrHr#r#r$�decode�s&���zPyJWS.decodecCs|�|�d}|�|�|S)z�Returns back the JWT header parameters as a dict()

        Note: The signature is not verified so the header parameters
        should not be fully trusted until signature verification is complete
        rK)rPr;)r rRrEr#r#r$�get_unverified_header�s
zPyJWS.get_unverified_headerc
Csht|t�r|�d�}tt|�t�s0td�t���z$|�dd�\}}|�	dd�\}}Wnt
k
rptd��YnXzt|�}Wn"tt
jfk
r�td��YnXzt�|�d��}Wn.t
k
r�}ztd|��W5d}~XYnXt|t�s�td��zt|�}	Wn$tt
jfk
�r(td	��YnXzt|�}
Wn$tt
jfk
�rZtd
��YnX|	|||
fS)Nzutf-8z'Invalid token type. Token must be a {0}r8rzNot enough segmentszInvalid header paddingzInvalid header string: %sz,Invalid header string: must be a json objectzInvalid payload paddingzInvalid crypto padding)r(rrI�
issubclass�typer
r�format�rsplit�splitr'rr)�binascii�Errorr=�loadsrUr)r rRrGZcrypto_segmentZheader_segmentZpayload_segmentZheader_datarF�erCrHr#r#r$rP�s<

�
zPyJWS._loadc	Csr|�d�}|dk	r"||kr"td��z.|j|}|�|�}|�|||�sNtd��Wntk
rltd��YnXdS)Nr4z&The specified alg value is not allowedzSignature verification failedr9)�getrrrArSrr.)	r rCrGrFrHr"r!r4r,r#r#r$rQ�s


zPyJWS._verify_signaturecCsd|kr|�|d�dS)N�kid)�
_validate_kid)r rEr#r#r$r;�szPyJWS._validate_headerscCst|t�std��dS)Nz(Key ID header parameter must be a string)r(rr)r rar#r#r$rb�s
zPyJWS._validate_kid)NN)r2NN)rJTNN)rJN)�__name__�
__module__�__qualname__r:r%�staticmethodrr-r0r1rIrUrVrPrQr;rbr#r#r#r$rs.


	�
7�
(�
r)&r\r=rM�typingrrrrr�ImportErrorr!rr	r
r�compatrr
rr�
exceptionsrrrrZutilsrrrr�objectrZ_jws_global_objrIrUr-r0rVr#r#r#r$�<module>s$ Y