
    ?gu-                     x    d Z ddlZddlmZmZmZ ddlmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZ  G d d      Zy)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                   4    e Zd ZddZd Zd Zd Zd Zd	dZy)
BaseEndpointNc                 0    || _         |xs t        | _        y N)request_validatorr   token_generator)selfr   r   s      [/var/www/openai/venv/lib/python3.12/site-packages/oauthlib/oauth1/rfc5849/endpoints/base.py__init__zBaseEndpoint.__init__   s    !2.@.    c                    t        j                  |j                  dd      }t        j                  |j                  d      }t        j                  |j                  d      }g }|j                  |       |j                  |       |j                  |       t        t        d t        |t        j                  |      ft        |t        j                  |      ft        |t        j                  |      ff            }t        |      dkD  r9|D cg c]  }|d   	 }}t        j                  d	d
j!                  |      f      	 |d   \  }	}}
|	||
fS c c}w # t"        $ r t        j                  d      w xY w)zExtracts 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                     | d   S )Nr    )ss    r   <lambda>z=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_paramsz+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)JA1Q4)JKK,,9!YY{356 6
	C3T40NFL v|33 L  	C,,AC C	Cs   E		E  E<c                    t        |xs i       }d|v rt        |d   v rt        ||||      }nt        ||d|      }| j                  |      \  }}}t	        t        |            t	        |      k7  rt        j                  d      t        |      }|j                  d      |_	        |j                  d      |_
        |j                  d      |_        |j                  d      |_        |j                  d	      |_        |j                  d
      |_        |j                  d      |_        |j                  d      |_        t        |      j                  d      |_        ||_        |D 	
cg c]  \  }	}
|	dk7  s|	|
f c}
}	|_        d|j(                  j                  dd      v r+|j&                  D 	
cg c]  \  }	}
|	dk7  r|	|
f c}
}	|_        |S c c}
}	w c c}
}	w )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   r?   r2   dictr   r3   getr   
client_keyresource_owner_keynonce	timestampredirect_uriverifiersignature_methodrJ   r>   r:   r    )r   urihttp_methodr#   r    r6   r=   r:   r>   kvs              r   _create_requestzBaseEndpoint._create_requestE   s   %gm4g%,0GGc;g>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NVTQq<M7M1a&VNgoo))/2>>*1..J*8$!QAL  !!f*8JGN  OJs   -G;G7Gc                     | j                   j                  r>|j                  j                         j	                  d      st        j                         y y )Nzhttps://)r   enforce_sslrU   lower
startswithr   InsecureTransportError)r   r6   s     r   _check_transport_securityz&BaseEndpoint._check_transport_securitym   sE    ""..KK%%'22:>//11 ? /r   c                 n   t        |j                  |j                  |j                  |j                  |j
                  f      st        j                  d      |j
                  | j                  j                  vrDt        j                  dj                  |j
                  | j                  j                              d|j                  v r(|j                  d   dk7  rt        j                  d      t        |j                        dk7  rt        j                  d      	 t        |j                        }t        t!        j                          |z
        | j                  j"                  kD  r-t        j                  d	| j                  j"                  z        | j                  j'                  |j                        st        j                  d      | j                  j)                  |j                        st        j                  d      y # t$        $ r t        j                  d
      w xY w)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   rN   rP   rQ   rT   r   r3   r   allowed_signature_methodsInvalidSignatureMethodErrorformatr>   r2   intabstimetimestamp_lifetime
ValueErrorcheck_client_keycheck_nonce)r   r6   tss      r   _check_mandatory_parametersz(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 %%66w7I7IJ,,8: : %%11'--@,,35 5 A)  	=,,;= =	=s   $H  H4c                 d   |j                   t        k(  s&|j                   t        k(  s|j                   t        k(  r| j                  j                  |j                  |      }|j                   t        k(  rt        j                  ||      }|S |j                   t        k(  rt        j                  ||      }|S |j                   t        k(  rt        j                  ||      }|S d}|S | j                  j                  |j                  |      }d }|j                  re|r2| j                  j                  |j                  |j                  |      }n1| j                  j                  |j                  |j                  |      }|j                   t        k(  rt        j                   |||      }|S |j                   t"        k(  rt        j$                  |||      }|S |j                   t&        k(  rt        j(                  |||      }|S |j                   t*        k(  rt        j,                  |||      }|S d}|S )NF)rT   r   r   r   r   get_rsa_keyrN   r   verify_rsa_sha1verify_rsa_sha256verify_rsa_sha512get_client_secretrO   get_request_token_secretget_access_token_secretr   verify_hmac_sha1r	   verify_hmac_sha256r
   verify_hmac_sha512r   verify_plaintext)r   r6   is_token_requestrsa_keyvalid_signatureclient_secretresource_owner_secrets          r   _check_signaturezBaseEndpoint._check_signature   sQ   ##'99##';;##';; ,,88""G-G ''+=="+";";GW"Mb a ))-AA"+"="=gw"O^ ] ))-AA"+"="=gw"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   )F)	__name__
__module____qualname__r   r?   rY   r_   ro   r   r&   r   r   r   r      s%    A(4T&P2@5D?r   r   )__doc__ri   oauthlib.commonr   r   r   rA   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r&   r   r   <module>r      s5     H H   _ _r   