
    qhu-                     x    S r SSKrSSKJrJrJr  SSKJrJrJ	r	J
r
JrJrJrJrJrJrJrJrJrJr   " S S5      rg)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_PLAINTEXTSIGNATURE_RSA_SHA1SIGNATURE_RSA_SHA256SIGNATURE_RSA_SHA512SIGNATURE_TYPE_AUTH_HEADERSIGNATURE_TYPE_BODYSIGNATURE_TYPE_QUERYerrors	signatureutilsc                   @    \ rS rSrS
S jrS rS rS rS rSS jr	S	r
g)BaseEndpoint   Nc                 8    Xl         U=(       d    [        U l        g N)request_validatorr   token_generator)selfr   r   s      X/var/www/html/env/lib/python3.13/site-packages/oauthlib/oauth1/rfc5849/endpoints/base.py__init__BaseEndpoint.__init__   s    !2.@.    c                    [         R                  " UR                  SSS9n[         R                  " UR                  SS9n[         R                  " UR                  SS9n/ nUR                  U5        UR                  U5        UR                  U5        [        [        S [        U[        R                  " U5      4[        U[        R                  " U5      4[        U[        R                  " U5      445      5      n[        U5      S:  a9  U Vs/ s H  owS   PM	     nn[        R                  " S	S
R!                  U5      4S9e US   u  pn
XU
4$ s  snf ! ["         a    [        R                  " SS9ef = f)zvExtracts parameters from query, headers and body. Signature type
is set to the source in which parameters were found.
FT)headersexclude_oauth_signature
with_realm)bodyr#   )	uri_queryr#   c                     U S   $ )Nr    )ss    r   <lambda>=BaseEndpoint._get_signature_type_and_params.<locals>.<lambda>,   s    !A$r       r   zFoauth_ params must come from only 1 signaturetype but were found in %sz, description#Missing mandatory OAuth parameters.)r   collect_parametersr"   r%   r&   extendlistfilterr   r   filter_oauth_paramsr   r   lenr   InvalidRequestErrorjoin
IndexError)r   requestheader_paramsbody_paramsquery_paramsparams!signature_types_with_oauth_paramsr)   found_typessignature_typeoauth_paramss              r   _get_signature_type_and_params+BaseEndpoint._get_signature_type_and_params   s    "44W__MR_ce22KPR 33g>O>OLQS m$k"l#,0'))-8: &))+68!6)),79I
 2 -) 01A5)JK)JAQ4)JKK,,9!YY{356 6
	C3T40NL |33 L  	C,,AC C	Cs   EE E7c                    [        U=(       d    0 5      nSU;   a  [        US   ;   a  [        XX45      nO[        XSU5      nU R                  U5      u  pgn[	        [        U5      5      [	        U5      :w  a  [        R                  " SS9e[        U5      nUR                  S5      Ul	        UR                  S5      Ul
        UR                  S5      Ul        UR                  S5      Ul        UR                  S	5      Ul        UR                  S
5      Ul        UR                  S5      Ul        UR                  S5      Ul        [        U5      R                  S5      Ul        Xl        U V	V
s/ s H  u  pU	S:w  d  M  X4PM     sn
n	Ul        SUR(                  R                  SS5      ;   a/  UR&                   V	V
s/ s H  u  pU	S:w  d  M  X4PM     sn
n	Ul        U$ s  sn
n	f s  sn
n	f )NzContent-Type zDuplicate OAuth1 entries.r-   oauth_signatureoauth_consumer_keyoauth_tokenoauth_nonceoauth_timestampoauth_callbackoauth_verifieroauth_signature_methodrealmAuthorization)r   r   r   rB   r5   dictr   r6   getr   
client_keyresource_owner_keynonce	timestampredirect_uriverifiersignature_methodrN   rA   r=   r"   )r   urihttp_methodr%   r"   r9   r@   r=   rA   kvs              r   _create_requestBaseEndpoint._create_requestE   s   %gm4g%,0GGc>GcG<G //8 	-
 tL!"c,&77,,79 9 L)(,,->?)--.BC%1%5%5m%D"$((7(,,->?+//0@A'++,<=#/#3#34L#M V((1+ .4NVTQq<M7M&1&VNgoo))/2>>*1..J*8$!AL %qf*8JGN  OJs   0G! G!?G'G'c                     U R                   R                  (       aD  UR                  R                  5       R	                  S5      (       d  [
        R                  " 5       eg g )Nzhttps://)r   enforce_sslrY   lower
startswithr   InsecureTransportError)r   r9   s     r   _check_transport_security&BaseEndpoint._check_transport_securitym   sH    ""..KK%%'22:>>//11 ? /r    c                    [        UR                  UR                  UR                  UR                  UR
                  45      (       d  [        R                  " SS9eUR
                  U R                  R                  ;  aB  [        R                  " SR                  UR
                  U R                  R                  5      S9eSUR                  ;   a'  UR                  S   S:w  a  [        R                  " SS9e[        UR                  5      S:w  a  [        R                  " SS9e [        UR                  5      n[        [         R                   " 5       U-
  5      U R                  R"                  :  a+  [        R                  " S	U R                  R"                  -  S9e U R                  R'                  UR                  5      (       d  [        R                  " SS9eU R                  R)                  UR                  5      (       d  [        R                  " SS9eg ! [$         a    [        R                  " S
S9ef = f)Nr/   r-   z"Invalid signature, {} not in {!r}.oauth_versionz1.0zInvalid OAuth version.
   zInvalid timestamp sizezCTimestamp given is invalid, differ from allowed by over %s seconds.zTimestamp must be an integer.zInvalid client key format.zInvalid nonce format.)allr   rR   rT   rU   rX   r   r6   r   allowed_signature_methodsInvalidSignatureMethodErrorformatrA   r5   intabstimetimestamp_lifetime
ValueErrorcheck_client_keycheck_nonce)r   r9   tss      r   _check_mandatory_parameters(BaseEndpoint._check_mandatory_parameterss   s    G%%w'9'9MM7#4#4,,. / / ,,AC C ((&&@@A44@GG,,**DDFG G w333$$_5>,,46 6 w  !R',,46 6	RW&&'B 499;#$t'='='P'PP00"?%)%;%;%N%N"PR R Q %%66w7I7IJJ,,8: : %%11'--@@,,35 5 A)  	=,,;= =	=s   'H H=c                    UR                   [        :X  d(  UR                   [        :X  d  UR                   [        :X  a  U R                  R                  UR                  U5      nUR                   [        :X  a  [        R                  " X5      nU$ UR                   [        :X  a  [        R                  " X5      nU$ UR                   [        :X  a  [        R                  " X5      nU$ Sn U$ U R                  R                  UR                  U5      nS nUR                  (       aj  U(       a2  U R                  R                  UR                  UR                  U5      nO1U R                  R                  UR                  UR                  U5      nUR                   [        :X  a  [        R                   " XU5      nU$ UR                   ["        :X  a  [        R$                  " XU5      nU$ UR                   [&        :X  a  [        R(                  " XU5      nU$ UR                   [*        :X  a  [        R,                  " XU5      nU$ SnU$ )NF)rX   r   r   r   r   get_rsa_keyrR   r   verify_rsa_sha1verify_rsa_sha256verify_rsa_sha512get_client_secretrS   get_request_token_secretget_access_token_secretr   verify_hmac_sha1r	   verify_hmac_sha256r
   verify_hmac_sha512r   verify_plaintext)r   r9   is_token_requestrsa_keyvalid_signatureclient_secretresource_owner_secrets          r   _check_signatureBaseEndpoint._check_signature   sC   ##'99##';;##';; ,,88""G-G ''+=="+";";G"Mb a ))-AA"+"="=g"O^ ] ))-AA"+"="=g"OZ W #(V ? !22DD""G-M %)!))#..GG#..0J0J#% * ..FF#..0J0J#% *
 ''+>>"+"<"<,A#C  ))-BB"+">">,A#C  ))-BB"+">">,A#C  ))-@@"+"<"<,A#C
  #(r    )r   r   r   )F)__name__
__module____qualname____firstlineno__r   rB   r]   rd   ru   r   __static_attributes__r(   r    r   r   r      s%    A(4T&P2@5D?r    r   )__doc__ro   oauthlib.commonr   r   r   rE   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r(   r    r   <module>r      s5     H H   _ _r    