
    $                     r    S r SSKJrJr  SSKrSSK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   " S S\5      rg)	zoauthlib.oauth1.rfc5849.endpoints.base ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This module is an implementation of various logic needed
for signing and checking OAuth 1.0 RFC 5849 requests.
    )absolute_importunicode_literalsN)Requestgenerate_token   )	CONTENT_TYPE_FORM_URLENCODEDSIGNATURE_HMACSIGNATURE_RSA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      9lib/third_party/oauthlib/oauth1/rfc5849/endpoints/base.py__init__BaseEndpoint.__init__   s    .*<nD    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)zExtracts 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    1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    004QM..\\5:K//##UDL F
MM- 
MM+
MM,(,~!;V!&!:!:=!I!K!4f!&!:!:;!G!I!5v!&!:!:<!H!J	 K 	L)M% ,-1#DE#DaqT#DkE&&348IIk4JLM M=-N
.*nl <// F  =&&;= ==s   EE E7c                    U=(       d    0 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>   r1   dictr   r2   getr   
client_keyresource_owner_keynonce	timestampredirect_uriverifiersignature_methodrJ   r=   r9   r   )r   urihttp_methodr!   r   r5   r<   r9   r=   kvs              r   _create_requestBaseEndpoint._create_requestB   s   mG'!$(??$8g"g6g 	++G4 )NL
 4#l"33&&3NOO%L$(():;G%))*>?G!-!1!1-!@G $$]3GM$(():;G'++,<=G#''(89G+//0HIGL$$W-GM' *0J18I3IfqfJGN'//%%or::+2>>J>41Q'\>JgnN K Ks   'G7G6GGc                     U R                   R                  (       aD  UR                  R                  5       R	                  S5      (       d  [
        R                  " 5       eg g )Nzhttps://)r   enforce_sslrU   lower
startswithr   InsecureTransportError)r   r5   s     r   _check_transport_security&BaseEndpoint._check_transport_securityh   sH    **KK**:66))++ 7 	+r   c                 r   [        UR                  UR                  UR                  UR                  UR
                  45      (       d  [        R                  " SS9eUR
                  U R                  R                  ;  a;  [        R                  " SUR
                  < SU R                  R                  < S3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, z not in .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   r2   r   allowed_signature_methodsInvalidSignatureMethodErrorr=   r1   intabstimetimestamp_lifetime
ValueErrorcheck_client_keycheck_nonce)r   r5   tss      r   _check_mandatory_parameters(BaseEndpoint._check_mandatory_parametersn   s    !!7#5#5w}}!!7#;#;= > >&&;= = $$889..##!!;;=> > 	7///_-6&&3KLL
 7#&&3KLLGw  !b 
TYY[2	!7!7!J!J	J((700CCEG 	G 
K !!2273E3EFF&&3OPP!!--gmm<<&&3JKK ='  7&&57 77s    H H6c                 x   UR                   [        :X  a>  U R                  R                  UR                  U5      n[
        R                  " X5      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$ [
        R                  " XU5      nU$ r   )rT   r
   r   get_rsa_keyrN   r   verify_rsa_sha1get_client_secretrO   get_request_token_secretget_access_token_secretr	   verify_hmac_sha1verify_plaintext)r   r5   is_token_requestrsa_keyvalid_signatureclient_secretresource_owner_secrets          r   _check_signatureBaseEndpoint._check_signature   s!   =0 &&2273E3EwOg!11'Co4 # ,,>>


g'm"		#	#"&"8"8"Q"Q  '"<"<g#G
 #'"8"8"P"P  '"<"<g#G
 
	!	!^	3#44W5JL
  $44W5JLr   )r   r   r   )F)__name__
__module____qualname____firstlineno__r   r>   rY   r`   rq   r   __static_attributes__r$   r   r   r   r      s$    =(0T$L,;Lz r   r   )__doc__
__future__r   r   rk   oauthlib.commonr   r   rA   r   r	   r
   r   r   r   r   r   r   objectr   r$   r   r   <module>r      s5   
 9  3@ @ @
y6 yr   