name : base.cpython-39.pyc
a

�#/d�*�@srdZddlZddlmZmZmZddlmZmZm	Z	m
Z
mZmZm
Z
mZmZmZmZmZmZmZGdd�d�ZdS)z�
oauthlib.oauth1.rfc5849.endpoints.base
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This module is an implementation of various logic needed
for signing and checking OAuth 1.0 RFC 5849 requests.
�N)�CaseInsensitiveDict�Request�generate_token�)�CONTENT_TYPE_FORM_URLENCODED�SIGNATURE_HMAC_SHA1�SIGNATURE_HMAC_SHA256�SIGNATURE_HMAC_SHA512�SIGNATURE_RSA_SHA1�SIGNATURE_RSA_SHA256�SIGNATURE_RSA_SHA512�SIGNATURE_PLAINTEXT�SIGNATURE_TYPE_AUTH_HEADER�SIGNATURE_TYPE_BODY�SIGNATURE_TYPE_QUERY�errors�	signature�utilsc@s@eZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
d�ZdS)�BaseEndpointNcCs||_|pt|_dS)N)�request_validatorr�token_generator)�selfrr�r�J/usr/lib/python3.9/site-packages/oauthlib/oauth1/rfc5849/endpoints/base.py�__init__szBaseEndpoint.__init__c

Cs�tj|jddd�}tj|jdd�}tj|jdd�}g}|�|�|�|�|�|�ttdd�t|t	�
|�ft|t	�
|�ft|t	�
|�ff��}t
|�dkr�d	d
�|D�}tjdd�|�fd
��z|d\}}}	Wnty�tjdd
��Yn0|||	fS)z�Extracts parameters from query, headers and body. Signature type
        is set to the source in which parameters were found.
        FT)�headers�exclude_oauth_signatureZ
with_realm)�bodyr)�	uri_queryrcSs|dS)Nrr)�srrr�<lambda>-�z=BaseEndpoint._get_signature_type_and_params.<locals>.<lambda>�cSsg|]}|d�qS)rr)�.0rrrr�
<listcomp>7r!z?BaseEndpoint._get_signature_type_and_params.<locals>.<listcomp>zFoauth_ params must come from only 1 signaturetype but were found in %sz, ��descriptionr�#Missing mandatory OAuth parameters.)rZcollect_parametersrrr�extend�list�filterrrZfilter_oauth_paramsrr�lenr�InvalidRequestError�join�
IndexError)
r�requestZ
header_paramsZbody_paramsZquery_params�paramsZ!signature_types_with_oauth_paramsZfound_types�signature_type�oauth_paramsrrr�_get_signature_type_and_paramssP���



����	����z+BaseEndpoint._get_signature_type_and_paramsc	Cs&t|pi�}d|vr0t|dvr0t||||�}nt||d|�}|�|�\}}}tt|��t|�krntjdd��t|�}|�d�|_	|�d�|_
|�d�|_|�d�|_|�d	�|_
|�d
�|_|�d�|_|�d�|_t|��d
�|_||_dd�|D�|_d
|j�dd�v�r"dd�|jD�|_|S)NzContent-Type�zDuplicate OAuth1 entries.r%�oauth_signatureZoauth_consumer_keyZoauth_tokenZoauth_nonceZoauth_timestampZoauth_callbackZoauth_verifierZoauth_signature_method�realmcSs g|]\}}|dkr||f�qS)r5r�r#�k�vrrrr$fr!z0BaseEndpoint._create_request.<locals>.<listcomp>Z
AuthorizationcSs g|]\}}|dkr||f�qS)r6rr7rrrr$is�)rrrr3r+�dictrr,�getr�
client_key�resource_owner_key�nonce�	timestampZredirect_uriZverifier�signature_methodr6r2r0r)	r�uriZhttp_methodrrr/r1r0r2rrr�_create_requestFs:
����zBaseEndpoint._create_requestcCs$|jjr |j���d�s t���dS)Nzhttps://)rZenforce_sslrA�lower�
startswithrZInsecureTransportError)rr/rrr�_check_transport_securityns�z&BaseEndpoint._check_transport_securitycCs$t|j|j|j|j|jf�s(tjdd��|j|jj	vrPtj
d�|j|jj	�d��d|jvrt|jddkrttjdd��t
|j�dkr�tjdd��zt|j�}Wnty�tjd	d��Yn.0tt��|�|jjkr�tjd
|jjd��|j�|j��stjdd��|j�|j��s tjdd��dS)
Nr'r%z"Invalid signature, {} not in {!r}.Z
oauth_versionz1.0zInvalid OAuth version.�
zInvalid timestamp sizezTimestamp must be an integer.zCTimestamp given is invalid, differ from allowed by over %s seconds.zInvalid client key format.zInvalid nonce format.)�allrr<r>r?r@rr,rZallowed_signature_methodsZInvalidSignatureMethodError�formatr2r+�int�
ValueError�abs�timeZtimestamp_lifetimeZcheck_client_keyZcheck_nonce)rr/�tsrrr�_check_mandatory_parametersts\
�����
��������z(BaseEndpoint._check_mandatory_parametersFcCs�|jtttfvrtd��n�|j�|j|�}d}|jrb|rN|j�	|j|j|�}n|j�
|j|j|�}|jtkr|t�
|||�}nR|jtkr�t�|||�}n8|jtkr�t�|||�}n|jtkr�t�|||�}nd}|S)Nz)Using RSA-SHA is deprecated, use HMAC-SHAF)r@r
rrrJrZget_client_secretr<r=Zget_request_token_secretZget_access_token_secretrrZverify_hmac_sha1rZverify_hmac_sha256r	Zverify_hmac_sha512r
Zverify_plaintext)rr/Zis_token_requestZ
client_secretZresource_owner_secretZvalid_signaturerrr�_check_signature�sN�
�����
�
�
�
�zBaseEndpoint._check_signature)N)F)	�__name__�
__module__�__qualname__rr3rBrErNrOrrrrrs
*(Br)�__doc__rLZoauthlib.commonrrrr4rrrr	r
rrr
rrrrrrrrrrr�<module>s@	

© 2025 Cubjrnet7