[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@18.217.242.39: ~ $
U

���_��@s�ddlZddlZddlmZddlmZmZmZmZm	Z	ddl
mZmZm
Z
mZddlmZmZmZmZddlmZmZGdd	�d	�Ze�ZejZejZejZejZejZejZdS)
�N)�Mapping)�Any�Dict�List�Optional�Type�)�	Algorithm�get_default_algorithms�
has_crypto�requires_cryptography)�DecodeError�InvalidAlgorithmError�InvalidSignatureError�InvalidTokenError)�base64url_decode�base64url_encodec@s�eZdZdZd!dd�Zedd��Zdd�Zd	d
�Zdd�Z	d"e
eeee
eeejed�dd�Zd#eeeee
e
eefd�dd�Zd$eeeee
ed�dd�Zdd�Zdd�Zd%dd�Zdd�Zdd �ZdS)&�PyJWSZJWTNcCsht�|_|dk	rt|�nt|j�|_t|j���D]}||jkr2|j|=q2|dkrVi}|��|�|_dS)N)r
�_algorithms�set�_valid_algs�list�keys�_get_default_options�options)�self�
algorithmsr�key�r�</opt/alt/python38/lib/python3.8/site-packages/jwt/api_jws.py�__init__s�

zPyJWS.__init__cCsddiS)N�verify_signatureTrrrrrr'szPyJWS._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_objrrr�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)rr&rrr�unregister_algorithm8s
�zPyJWS.unregister_algorithmcCs
t|j�S)zM
        Returns a list of supported values for the 'alg' parameter.
        )rr)rrrr�get_algorithmsFszPyJWS.get_algorithms�HS256)�payloadr�	algorithm�headers�json_encoder�returnc
Cs�g}|dkrd}||jkr|j|d�}|r>|�|�|�|�tj|d|d���}|�t|��|�t|��d�	|�}	z$|j
|}
|
�|�}|
�|	|�}Wn6t
k
r�ts�|tkr�td|��ntd��YnX|�t|��d�	|�}|�d�S)	NZnone)�typ�alg)�,�:)Z
separators�cls�.zFAlgorithm '%s' could not be found. Do you have cryptography installed?�Algorithm not supported�utf-8)r�
header_typ�_validate_headers�update�json�dumps�encode�appendr�joinr�prepare_keyZsignr)rr�NotImplementedError�decode)
rr.rr/r0r1Zsegments�headerZjson_header�
signing_inputr'�	signatureZencoded_stringrrrr@Ls>


�



��
zPyJWS.encode�)�jwtrrrr2cKsb|dkri}|j|�}|d}|r.|s.td��|�|�\}}	}
}|rV|�|	|
|||�||
|d�S)Nr!z\It is required that you pass in a value for the "algorithms" argument when calling decode().)r.rFrH)rr
�_load�_verify_signature)rrJrrr�kwargsZmerged_optionsr!r.rGrFrHrrr�decode_complete�s
��zPyJWS.decode_completecKs|j||||f|�}|dS)Nr.)rN)rrJrrrrMZdecodedrrrrE�sz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
        �)rKr<)rrJr0rrr�get_unverified_header�s
zPyJWS.get_unverified_headerc
Cs�t|t�r|�d�}t|t�s,tdt����z$|�dd�\}}|�dd�\}}Wn,tk
r|}ztd�|�W5d}~XYnXzt|�}Wn2t	t
jfk
r�}ztd�|�W5d}~XYnXzt�
|�}Wn0tk
r�}	ztd|	�|	�W5d}	~	XYnXt|t��std��zt|�}
Wn4t	t
jfk
�rR}ztd	�|�W5d}~XYnXzt|�}Wn4t	t
jfk
�r�}ztd
�|�W5d}~XYnX|
|||fS)Nr:z$Invalid token type. Token must be a r8rzNot enough segmentszInvalid header paddingzInvalid header string: %sz,Invalid header string: must be a json objectzInvalid payload paddingzInvalid crypto padding)r#�strr@�bytesr
�rsplit�splitr"rr$�binascii�Errorr>�loadsr)rrJrGZcrypto_segmentZheader_segmentZpayload_segment�errZheader_datarF�er.rHrrrrK�s8


 zPyJWS._loadcCsr|�d�}|dk	r"||kr"td��z.|j|}|�|�}|�|||�sNtd��Wntk
rltd��YnXdS)Nr4z&The specified alg value is not allowedzSignature verification failedr9)�getrrrCZverifyrr))rrGrFrHrrr4r'rrrrL�s	


zPyJWS._verify_signaturecCsd|kr|�|d�dS)N�kid)�
_validate_kid)rr0rrrr<�szPyJWS._validate_headerscCst|t�std��dS)Nz(Key ID header parameter must be a string)r#rQr)rr[rrrr\�s
zPyJWS._validate_kid)NN)r-NN)rINN)rINN)rIN)�__name__�
__module__�__qualname__r;r �staticmethodrr(r+r,rRrQrrrr>ZJSONEncoderr@rrrNrErPrKrLr<r\rrrrrsZ



��7�
� ��+�
r)rUr>Zcollections.abcr�typingrrrrrrr	r
rr�
exceptionsr
rrrZutilsrrrZ_jws_global_objr@rNrEr(r+rPrrrr�<module>sf

Filemanager

Name Type Size Permission Actions
__init__.cpython-38.opt-1.pyc File 1.47 KB 0644
__init__.cpython-38.pyc File 1.47 KB 0644
algorithms.cpython-38.opt-1.pyc File 15.71 KB 0644
algorithms.cpython-38.pyc File 15.71 KB 0644
api_jwk.cpython-38.opt-1.pyc File 2.83 KB 0644
api_jwk.cpython-38.pyc File 2.83 KB 0644
api_jws.cpython-38.opt-1.pyc File 6.3 KB 0644
api_jws.cpython-38.pyc File 6.3 KB 0644
api_jwt.cpython-38.opt-1.pyc File 5.77 KB 0644
api_jwt.cpython-38.pyc File 5.77 KB 0644
exceptions.cpython-38.opt-1.pyc File 2.54 KB 0644
exceptions.cpython-38.pyc File 2.54 KB 0644
help.cpython-38.opt-1.pyc File 1.31 KB 0644
help.cpython-38.pyc File 1.31 KB 0644
jwks_client.cpython-38.opt-1.pyc File 2.27 KB 0644
jwks_client.cpython-38.pyc File 2.27 KB 0644
utils.cpython-38.opt-1.pyc File 2.89 KB 0644
utils.cpython-38.pyc File 2.89 KB 0644