+
     Iia  c                   sF   ^ 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                   s   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_name   &&&&6/usr/lib/python3.14/site-packages/botocore/crt/auth.py__init__Z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inZtrailercontextget
isinstancedictr   requestchecksum_context	algorithm   &&  r   _is_streaming_checksum_payloadZ+CrtSigV4Auth._is_streaming_checksum_payload7   M    "??..z2>$(()<=	)T*OOy}}T/Bi/OOr!   c                s|   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Zremove_tzinfoZaccess_key_idZsecret_access_keyZsession_tokenr/   Zsignature_typecredentials_providerZregionZserviceZdateZshould_sign_headerZuse_double_uri_encodeZshould_normalize_uri_pathZsigned_body_valueZsigned_body_header_typeZexpiration_in_seconds)"r   r   r
   _get_existing_sha256_modify_request_before_signingr	   authAwsCredentialsProvider
new_static
access_key
secret_keytokenr1   r   _should_sha256_sign_payloadr   !_should_add_content_sha256_headerAwsSignedBodyHeaderTypeX_AMZ_CONTENT_SHA_256NONEAwsSigningConfigAwsSigningAlgorithmZ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   r-   Zdatetime_nowZexisting_sha256r6   explicit_payloadZbody_headerZsigning_configcrt_requestZfuture
   &&        r   add_authZ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	# Z/Z=Z?Z&NZseek)methodpathheadersZbody_streamr   urlrV   paramsitemsZstrZappendZjoinqueryr	   ZhttpZHttpHeadersrW   ZbodyZhasattrr   ZHttpRequestrU   
r   aws_request	url_partsZcrt_pathZarrayZparamZvalueZcrt_headersZcrt_body_streamrP   rQ   r   rJ   Z*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   Z
from_pairsZlistrW   r   r^   signed_crt_request   &&&r   rM   Z#CrtSigV4Auth._apply_signing_changes   $    )44#++,
r!   c                0    VP                  4       \        9  # r   Zlowerr   r   nameZkwargs   &&,r   rG   Z 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# ZhostN_PRESIGNED_HEADERS_BLOCKLISTrW   r   rY   r   r-   Zh   && r   r8   Z+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rW   r)   r   r-      &&r   r7   Z!CrtSigV4Auth._get_existing_sha256       ""#9::r!   c                    VP                   P                  R 4      '       g   R# VP                  P                  RR4      # httpsTpayload_signing_enabledrY   
startswithr(   r)   rx   ry   r   r?   Z(CrtSigV4Auth._should_sha256_sign_payload   4    {{%%g..
 ""#<dCCr!   c                
    VR J# r    r   rO   ry   r   r@   Z.CrtSigV4Auth._should_add_content_sha256_header       t++r!   r   r   r   r   NZAuthorizationz
X-Amz-Daterv   zX-Amz-Security-Token)__name__
__module____qualname____firstlineno__REQUIRES_REGIONrp   r	   r9   AwsSignatureTypeHTTP_REQUEST_HEADERSrF   rH   rI   r   r1   rR   rJ   rM   rG   r8   r7   r?   r@   __static_attributes____classdictcell____classdict__   @r   r   r   %   sp     O$  kk22GGO!!%+P
3:j<
<B;D, ,r!   r   c                   sF   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   rx   ry   r   r7   Z#CrtS3SigV4Auth._get_existing_sha256       r!   c                s$  < 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&   Zheaderrj   r}   Thas_streaming_inputF)
r(   r)   getattrr*   r+   rY   r   rW   superr?   )	r   r-   r   	s3_configsign_payloadZchecksum_headerr.   r/   	__class__s	   &&      r   r?   Z*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   ry   r   r@   Z0CrtS3SigV4Auth._should_add_content_sha256_header   r   r!   r   r   r   r   r   rH   rI   r7   r?   r@   r   r   __classcell__r   r      @@r   r   r      s&     "!&'<R r!   r   c                   s   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                r   r   r   r   r   r   r   ZCrtSigV4AsymAuth.__init__   r    r!   c                s   \        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# )ZSIGV4A_SIGNINGNFr3   r4   r5   )#r   r   r   r
   r7   r8   r	   r9   r:   r;   r<   r=   r>   r1   r   r?   r   r@   rA   rB   rC   rD   rE   ZV4_ASYMMETRICrF   r   r   rG   rH   rI   r   rJ   rK   rL   rM   rN   rQ   r   rR   Z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                rS   rT   rX   r]   rQ   r   rJ   Z.CrtSigV4AsymAuth._crt_request_from_aws_request3  r`   r!   c                ra   r   rb   rc   re   r   rM   Z'CrtSigV4AsymAuth._apply_signing_changesQ  rf   r!   c                rg   r   rh   ri   rk   r   rG   Z$CrtSigV4AsymAuth._should_sign_headerW  rl   r!   c                rm   rn   ro   rq   rr   r   r8   Z/CrtSigV4AsymAuth._modify_request_before_signingZ  rs   r!   c                rt   ru   rw   rx   ry   r   r7   Z%CrtSigV4AsymAuth._get_existing_sha256d  rz   r!   c                r"   r#   r'   r,   r0   r   r1   Z/CrtSigV4AsymAuth._is_streaming_checksum_payloadg  r2   r!   c                r{   r|   r   rx   ry   r   r?   Z,CrtSigV4AsymAuth._should_sha256_sign_payloadl  r   r!   c                r   r   r   r   ry   r   r@   Z2CrtSigV4AsymAuth._should_add_content_sha256_headerv  r   r!   r   Nr   )r   r   r   r   r   rp   r	   r9   r   r   rF   rH   rI   r   rR   rJ   rM   rG   r8   r7   r1   r?   r@   r   r   r   r   r   r   r      sp     O$  kk22GGO!!%+4:l<
<B;P
D, ,r!   r   c                   sF   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   rx   ry   r   r7   Z'CrtS3SigV4AsymAuth._get_existing_sha256  r   r!   c                s^  < 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   rY   r   rW   r   r?   )r   r-   r   r   r   r   s   &&   r   r?   Z.CrtS3SigV4AsymAuth._should_sha256_sign_payload  s      ++O<M46	 I !}}%>E# &&w//GOO3 ??4e<< w27;;r!   c                r   r   r   r   ry   r   r@   Z4CrtS3SigV4AsymAuth._should_add_content_sha256_header  r   r!   r   r   r   r   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   Zexpiresr      &&&&&r   r   ZCrtSigV4AsymQueryAuth.__init__       	K@&-#r!   c                s   < \         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)Zkeep_blank_valuesZ N)r   r8   rW   r)   r   rY   r   r\   r[   dataupdater   r   r   )r   r-   content_typer_   Zquery_string_partskv
query_dictnew_query_stringpnew_url_partsr   s   &&         r   r8   Z4CrtSigV4AsymQueryAuth._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   rM   r   rV   r\   rY   r   r   r^   rd   Zsigned_queryr   r      &&&  r   rM   Z,CrtSigV4AsymQueryAuth._apply_signing_changes  \    &{G 2 7 78>>[__% %adAaD!A$d%KLr!   r   r   r   r   r   ZDEFAULT_EXPIRESr	   r9   r   ZHTTP_REQUEST_QUERY_PARAMSrF   r   r8   rM   r   r   r   r   r   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   rx   ry   r   r?   Z3CrtS3SigV4AsymQueryAuth._should_sha256_sign_payload      
 r!   c                r   r   r   r   ry   r   r@   Z9CrtS3SigV4AsymQueryAuth._should_add_content_sha256_header      r!   r   Nr   r   r   r   Z__doc__rH   rI   r?   r@   r   r   r   r   r   r   r     s'      #!& r!   r   c                   r   )CrtSigV4QueryAuthi  r   c                r   r   r   r   r   r   r   ZCrtSigV4QueryAuth.__init__  r   r!   c                s  < \         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   r8   rW   r)   r   rY   r   r\   r[   rZ   r   r   r   r   r   )r   r-   r   r_   r   r   r   r   r   r   r   s   &&        r   r8   Z0CrtSigV4QueryAuth._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                r   r   r   r   r   r   rM   Z(CrtSigV4QueryAuth._apply_signing_changesB  r   r!   r   r   r   r   r   r   r     s<     Okk22LLO ?N..0`M Mr!   r   c                   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   rx   ry   r   r?   Z/CrtS3SigV4QueryAuth._should_sha256_sign_payload_  r   r!   c                r   r   r   r   ry   r   r@   Z5CrtS3SigV4QueryAuth._should_add_content_sha256_headerf  r   r!   r   Nr   r   r   r   r   r   S  s'      #!& r!   r   Zv4zv4-queryZv4aZs3v4z
s3v4-queryZs3v4azs3v4a-queryN)Zior   Zbotocore.authr   r   r   r   r   r   Zbotocore.compatr   r	   r
   r   r   r   Zbotocore.exceptionsr   Zbotocore.useragentr   Zbotocore.utilsr   r   r   r   r   r   r   r   r   ZCRT_AUTH_TYPE_MAPSr   r!   r   <module>r      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!   