+
    ia                     F   ^ RI Ht ^ RIHtHtHtHtHtHt ^ RI	H
t
HtHtHtHtHt ^ RIHt ^ RIHt ^ RIHt  ! R R]4      t ! R	 R
]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      tR]R]R]R]R]R]R]/tR# )    )BytesIO)SIGNED_HEADERS_BLACKLIST"STREAMING_UNSIGNED_PAYLOAD_TRAILERUNSIGNED_PAYLOAD
BaseSigner_get_body_as_dict_host_from_url)HTTPHeadersawscrtget_current_datetimeparse_qsurlsplit
urlunsplit)NoCredentialsError)register_feature_id)percent_encode_sequencec                      a  ] tR t^%t o Rt. ROt]P                  P                  P                  t
RtRtR tR tR tR tR tR tR tR	 tR
 tR tRtV tR# )CrtSigV4AuthTc                8    Wn         W n        W0n        R V n        R # Ncredentials_service_name_region_name_expiration_in_secondsselfr   service_nameregion_names   &&&&3/usr/lib/python3/dist-packages/botocore/crt/auth.py__init__CrtSigV4Auth.__init__1       &)'&*#    c                    VP                   P                  R / 4      pVP                  R4      p\        V\        4      ;'       d    VP                  R4      R8H  # checksumrequest_algorithmintrailercontextget
isinstancedictr   requestchecksum_context	algorithms   &&  r    _is_streaming_checksum_payload+CrtSigV4Auth._is_streaming_checksum_payload7   M    "??..z2>$(()<=	)T*OOy}}T/Bi/OOr$   c                |   V P                   f   \        4       h\        RR7      pV P                  V4      pV P	                  V4       \
        P                  P                  P                  V P                   P                  V P                   P                  V P                   P                  R7      pV P                  V4      '       d   \        pM+V P                  V4      '       d   V'       d   TpM	R pM\        pV P!                  V4      '       d&   \
        P                  P"                  P$                  pM$\
        P                  P"                  P&                  p\
        P                  P)                  \
        P                  P*                  P,                  V P.                  VV P0                  V P2                  VV P4                  V P6                  V P8                  VVV P:                  R7      pV P=                  V4      p\
        P                  P?                  W4      p	V	PA                  4        V PC                  W4       R # )NFremove_tzinfoaccess_key_idsecret_access_keysession_tokenr3   signature_typecredentials_providerregionservicedateshould_sign_headeruse_double_uri_encodeshould_normalize_uri_pathsigned_body_valuesigned_body_header_typeexpiration_in_seconds)"r   r   r   _get_existing_sha256_modify_request_before_signingr   authAwsCredentialsProvider
new_static
access_key
secret_keytokenr4   r   _should_sha256_sign_payloadr   !_should_add_content_sha256_headerAwsSignedBodyHeaderTypeX_AMZ_CONTENT_SHA_256NONEAwsSigningConfigAwsSigningAlgorithmV4_SIGNATURE_TYPEr   r   _should_sign_header_USE_DOUBLE_URI_ENCODE_SHOULD_NORMALIZE_URI_PATHr   _crt_request_from_aws_requestaws_sign_requestresult_apply_signing_changes
r   r1   datetime_nowexisting_sha256r@   explicit_payloadbody_headersigning_configcrt_requestfutures
   &&        r    add_authCrtSigV4Auth.add_auth<   s   #$&&+%@ 33G<++G4%{{AALL**55"..99**00  M  
 ..w77A--g66#2 #' /112BCC33II  !++==BBK55kk5588//!5$$&&#77"&"="=&*&E&E.$/"&"="= 6 
 88A--kJ##G9r$   c                   \        VP                  4      pVP                  '       d   VP                  MR pVP                  '       dg   . pVP                  P	                  4        F&  w  rV\        V4      pVP                  V RV 24       K(  	  VR,           RP                  V4      ,           pM#VP                  '       d   V RVP                   2p\        P                  P                  VP                  P	                  4       4      pRpVP                  '       d?   \        VP                  R4      '       d   VP                  pM\        VP                  4      p\        P                  P!                  VP"                  VVVR7      p	V	# /=?&Nseek)methodpathheadersbody_streamr   urlrt   paramsitemsstrappendjoinqueryr   httpHttpHeadersru   bodyhasattrr   HttpRequestrs   
r   aws_request	url_partscrt_patharrayparamvaluecrt_headerscrt_body_streamrh   s
   &&        r    r^   *CrtSigV4Auth._crt_request_from_aws_requestq   <   [__-	%.^^^9>>E + 2 2 8 8 :E
waw/0 !;  #~7H___"1Y__$56Hkk--k.A.A.G.G.IJ {''00"-"2"2")+*:*:";kk--%%'	 . 
 r$   c                b    \         P                  ! \        VP                  4      4      Vn        R # r   r
   
from_pairslistru   r   r   signed_crt_requests   &&&r    ra   #CrtSigV4Auth._apply_signing_changes   $    )44#++,
r$   c                0    VP                  4       \        9  # r   lowerr   r   namekwargss   &&,r    r[    CrtSigV4Auth._should_sign_header       zz|#;;;r$   c                    V P                    F"  pW!P                  9   g   K  VP                  V K$  	  R VP                  9  d%   \        VP                  4      VP                  R &   R# R# hostN_PRESIGNED_HEADERS_BLOCKLISTru   r	   rx   r   r1   hs   && r    rK   +CrtSigV4Auth._modify_request_before_signing   T     22AOO#OOA& 3 (&4W[[&AGOOF# )r$   c                8    VP                   P                  R 4      # X-Amz-Content-SHA256ru   r-   r   r1   s   &&r    rJ   !CrtSigV4Auth._get_existing_sha256       ""#9::r$   c                    VP                   P                  R 4      '       g   R# VP                  P                  RR4      # httpsTpayload_signing_enabledrx   
startswithr,   r-   r   s   &&r    rR   (CrtSigV4Auth._should_sha256_sign_payload   4    {{%%g..
 ""#<dCCr$   c                
    VR J# r    r   re   s   &&r    rS   .CrtSigV4Auth._should_add_content_sha256_header       t++r$   r   r   r   r   NAuthorizationz
X-Amz-Dater   zX-Amz-Security-Token)__name__
__module____qualname____firstlineno__REQUIRES_REGIONr   r   rL   AwsSignatureTypeHTTP_REQUEST_HEADERSrZ   r\   r]   r!   r4   rj   r^   ra   r[   rK   rJ   rR   rS   __static_attributes____classdictcell____classdict__s   @r    r   r   %   sp     O$  kk22GGO!!%+P
3:j<
<B;D, ,r$   r   c                   F   a a ] tR t^t oRtRtR tV 3R ltR tRt	Vt
V ;t# )CrtS3SigV4AuthFc                    R # r   r   r   s   &&r    rJ   #CrtS3SigV4Auth._get_existing_sha256       r$   c                $  < VP                   P                  R 4      p\        VRR4      pVf   / pVP                  RR4      pVe   V# RpVP                   P                  R/ 4      pVP                  R4      p\        V\        4      '       d    VP                  R4      R8X  d
   VR	,          pVP
                  P                  R
4      '       d   WQP                  9  d   R# VP                   P                  RR4      '       d   R# \        SV `%  V4      # )client_configs3Nr   Content-MD5r'   r(   r)   headerr   r   Thas_streaming_inputF)
r,   r-   getattrr.   r/   rx   r   ru   superrR   )	r   r1   r   	s3_configsign_payloadchecksum_headerr2   r3   	__class__s	   &&      r    rR   *CrtS3SigV4Auth._should_sha256_sign_payload   s      ++O<M46	 I !}}%>E# ("??..z2>$(()<=	i&&9==+>(+J'/O&&w//oo5 ??4e<< w27;;r$   c                    R # Tr   r   s   &&r    rS   0CrtS3SigV4Auth._should_add_content_sha256_header   r   r$   r   r   r   r   r   r\   r]   rJ   rR   rS   r   r   __classcell__r   r   s   @@r    r   r      s&     "!&'<R r$   r   c                      a  ] tR t^t o Rt. ROt]P                  P                  P                  t
RtRtR tR tR tR tR tR tR tR	 tR
 tR tRtV tR# )CrtSigV4AsymAuthTc                8    Wn         W n        W0n        R V n        R # r   r   r   s   &&&&r    r!   CrtSigV4AsymAuth.__init__   r#   r$   c                   \        R 4       V P                  f   \        4       h\        RR7      pV P	                  V4      pV P                  V4       \        P                  P                  P                  V P                  P                  V P                  P                  V P                  P                  R7      pV P                  V4      '       d   \        pM+V P                  V4      '       d   V'       d   TpM	RpM\         pV P#                  V4      '       d&   \        P                  P$                  P&                  pM$\        P                  P$                  P(                  p\        P                  P+                  \        P                  P,                  P.                  V P0                  VV P2                  V P4                  VV P6                  V P8                  V P:                  VVV P<                  R7      pV P?                  V4      p\        P                  PA                  W4      p	V	PC                  4        V PE                  W4       R# )SIGV4A_SIGNINGNFr8   r:   r>   )#r   r   r   r   rJ   rK   r   rL   rM   rN   rO   rP   rQ   r4   r   rR   r   rS   rT   rU   rV   rW   rX   V4_ASYMMETRICrZ   r   r   r[   r\   r]   r   r^   r_   r`   ra   rb   s
   &&        r    rj   CrtSigV4AsymAuth.add_auth   s   ,-#$&&+%@ 33G<++G4%{{AALL**55"..99**00  M  
 ..w77A--g66#2 #' /112BCC33II  !++==BBK55kk55CC//!5$$&&#77"&"="=&*&E&E.$/"&"="= 6 
 88A--kJ##G9r$   c                   \        VP                  4      pVP                  '       d   VP                  MR pVP                  '       dg   . pVP                  P	                  4        F&  w  rV\        V4      pVP                  V RV 24       K(  	  VR,           RP                  V4      ,           pM#VP                  '       d   V RVP                   2p\        P                  P                  VP                  P	                  4       4      pRpVP                  '       d?   \        VP                  R4      '       d   VP                  pM\        VP                  4      p\        P                  P!                  VP"                  VVVR7      p	V	# rm   rw   r   s
   &&        r    r^   .CrtSigV4AsymAuth._crt_request_from_aws_request3  r   r$   c                b    \         P                  ! \        VP                  4      4      Vn        R # r   r   r   s   &&&r    ra   'CrtSigV4AsymAuth._apply_signing_changesQ  r   r$   c                0    VP                  4       \        9  # r   r   r   s   &&,r    r[   $CrtSigV4AsymAuth._should_sign_headerW  r   r$   c                    V P                    F"  pW!P                  9   g   K  VP                  V K$  	  R VP                  9  d%   \        VP                  4      VP                  R &   R# R# r   r   r   s   && r    rK   /CrtSigV4AsymAuth._modify_request_before_signingZ  r   r$   c                8    VP                   P                  R 4      # r   r   r   s   &&r    rJ   %CrtSigV4AsymAuth._get_existing_sha256d  r   r$   c                    VP                   P                  R / 4      pVP                  R4      p\        V\        4      ;'       d    VP                  R4      R8H  # r&   r+   r0   s   &&  r    r4   /CrtSigV4AsymAuth._is_streaming_checksum_payloadg  r6   r$   c                    VP                   P                  R 4      '       g   R# VP                  P                  RR4      # r   r   r   s   &&r    rR   ,CrtSigV4AsymAuth._should_sha256_sign_payloadl  r   r$   c                
    VR J# r   r   r   s   &&r    rS   2CrtSigV4AsymAuth._should_add_content_sha256_headerv  r   r$   r   Nr   )r   r   r   r   r   r   r   rL   r   r   rZ   r\   r]   r!   rj   r^   ra   r[   rK   rJ   r4   rR   rS   r   r   r   s   @r    r   r      sp     O$  kk22GGO!!%+4:l<
<B;P
D, ,r$   r   c                   F   a a ] tR tRt oRtRtR tV 3R ltR tRt	Vt
V ;t# )CrtS3SigV4AsymAuthi{  Fc                    R # r   r   r   s   &&r    rJ   'CrtS3SigV4AsymAuth._get_existing_sha256  r   r$   c                ^  < VP                   P                  R 4      p\        VRR4      pVf   / pVP                  RR4      pVe   V# VP                  P	                  R4      '       d   RVP
                  9  d   R# VP                   P                  RR4      '       d   R# \        SV `  V4      # )	r   r   Nr   r   r   Tr   F)r,   r-   r   rx   r   ru   r   rR   )r   r1   r   r   r   r   s   &&   r    rR   .CrtS3SigV4AsymAuth._should_sha256_sign_payload  s      ++O<M46	 I !}}%>E# &&w//GOO3 ??4e<< w27;;r$   c                    R # r   r   r   s   &&r    rS   4CrtS3SigV4AsymAuth._should_add_content_sha256_header  r   r$   r   r   r   s   @@r    r   r   {  s&     "!&"<H r$   r   c                      a a ] tR tRt oRt]P                  P                  P                  t	]3V 3R llt
V 3R ltV 3R ltRtVtV ;t# )CrtSigV4AsymQueryAuthi    c                4   < \         SV `  WV4       W@n        R # r   r   r!   r   r   r   r   r   expiresr   s   &&&&&r    r!   CrtSigV4AsymQueryAuth.__init__       	K@&-#r$   c                   < \         SV `  V4       VP                  P                  R 4      pVR8X  d   VP                  R  \	        VP
                  4      p\        VP                  RR7      pVP                  4        UUu/ uF  w  rVWV^ ,          bK  	  pppVP                  '       d"   VP                  \        V4      4       RVn	        \        V4      pTp	V	^ ,          V	^,          V	^,          W^,          3p
\        V
4      Vn        R# u uppi zcontent-typez0application/x-www-form-urlencoded; charset=utf-8T)keep_blank_values N)r   rK   ru   r-   r   rx   r   r~   rz   dataupdater   r   r   )r   r1   content_typer   query_string_partskv
query_dictnew_query_stringpnew_url_partsr   s   &&         r    rK   4CrtSigV4AsymQueryAuth._modify_request_before_signing  s    .w7 **>:MM/ W[[)	 &iooN*<*B*B*DE*D$!a1g*D
E <<< /89GL2:> 1qtQqT+;qTB /1 Fs   ?D
c                   < \         SV `  W4       \        VP                  4      P                  p\        VP
                  4      p\        V^ ,          V^,          V^,          W4^,          34      Vn        R# r   Nr   ra   r   rt   r~   rx   r   r   r   r   signed_queryr  r   s   &&&  r    ra   ,CrtSigV4AsymQueryAuth._apply_signing_changes  \    &{G 2 7 78>>[__% %adAaD!A$d%KLr$   r   r   r   r   r   DEFAULT_EXPIRESr   rL   r   HTTP_REQUEST_QUERY_PARAMSrZ   r!   rK   ra   r   r   r   r   s   @@r    r  r    s<     Okk22LLO ?N.(0TM Mr$   r  c                   8   a  ] tR tRt o RtRtRtR tR tRt	V t
R# )CrtS3SigV4AsymQueryAuthi  zS3 SigV4A auth using query parameters.
This signer will sign a request using query parameters and signature
version 4A, i.e a "presigned url" signer.
Fc                    R # Fr   r   s   &&r    rR   3CrtS3SigV4AsymQueryAuth._should_sha256_sign_payload      
 r$   c                    R # r(  r   r   s   &&r    rS   9CrtS3SigV4AsymQueryAuth._should_add_content_sha256_header      r$   r   Nr   r   r   r   __doc__r\   r]   rR   rS   r   r   r   s   @r    r&  r&    s'      #!& r$   r&  c                      a a ] tR tRt oRt]P                  P                  P                  t	]3V 3R llt
V 3R ltV 3R ltRtVtV ;t# )CrtSigV4QueryAuthi  r  c                4   < \         SV `  WV4       W@n        R # r   r  r  s   &&&&&r    r!   CrtSigV4QueryAuth.__init__  r
  r$   c                  < \         S
V `  V4       VP                  P                  R 4      pVR8X  d   VP                  R  \	        VP
                  4      p\        VP                  RR7      P                  4        UUu/ uF  w  rEWE^ ,          bK  	  pppVP                  '       d#   VP                  VP                  4       / Vn	        VP                  '       d"   VP                  \        V4      4       RVn        \        V4      pTpV^ ,          V^,          V^,          Wx^,          3p	\        V	4      Vn        R# u uppi r  )r   rK   ru   r-   r   rx   r   r~   rz   ry   r  r  r   r   r   )r   r1   r  r   r  r  r  r  r  r  r   s   &&        r    rK   0CrtSigV4QueryAuth._modify_request_before_signing  s!   .w7 **>:MM/ W[[)	 !4eg
 tG 	 
 >>>gnn-GN <<< /89GL2:> 1qtQqT+;qTB /?
s   =D<c                   < \         SV `  W4       \        VP                  4      P                  p\        VP
                  4      p\        V^ ,          V^,          V^,          W4^,          34      Vn        R# r  r  r  s   &&&  r    ra   (CrtSigV4QueryAuth._apply_signing_changesB  r   r$   r!  r"  r   s   @@r    r1  r1    s<     Okk22LLO ?N..0`M Mr$   r1  c                   8   a  ] tR tRt o RtRtRtR tR tRt	V t
R# )CrtS3SigV4QueryAuthiS  zS3 SigV4 auth using query parameters.
This signer will sign a request using query parameters and signature
version 4, i.e a "presigned url" signer.
Based off of:
http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html
Fc                    R # r(  r   r   s   &&r    rR   /CrtS3SigV4QueryAuth._should_sha256_sign_payload_  r*  r$   c                    R # r(  r   r   s   &&r    rS   5CrtS3SigV4QueryAuth._should_add_content_sha256_headerf  r-  r$   r   Nr.  r   s   @r    r9  r9  S  s'      #!& r$   r9  v4zv4-queryv4as3v4z
s3v4-querys3v4azs3v4a-queryN)ior   botocore.authr   r   r   r   r   r	   botocore.compatr
   r   r   r   r   r   botocore.exceptionsr   botocore.useragentr   botocore.utilsr   r   r   r   r   r  r&  r1  r9  CRT_AUTH_TYPE_MAPSr   r$   r    <module>rI     s       3 2 2L,: L,^4\ 4nM,z M,`/) /dBM, BMJ3 ,HM HMV+ 6 	,!	
N%* r$   