
    ~iO                     V    d dl Z d dlZd dlZd dlmZmZ d dlmZ  G d de          Z	dS )    N)quote	urlencode)sdk_core_loggerc                       e Zd Ze	 dd            Zed             Zed             Zed             Zedd            ZdS )	SignerV4Nc           
         | dk    rd} |dk    r	d|vrd|d<   t           j                                                             d          }||d<   |dk    rN|                    d                              d	          r&|r$t          |          }t          j        d
|           t          j	        |
                    d                                                    }||d<   t          j        d|           |
r|
|d<   t                      }|D ]8}|dv s|                    d          r||         ||                                <   9t          j        d|           d|v ro|d         }|                    d          dk    rN|                    d          }|d         }t!          |          dk    st!          |          dk    r|d         |d<   d}t#          |                                          D ]}||dz   ||         z   dz   z  }d                    t#          |                                                    }d                    || t(                              t          |                    |||g          }t          j        d|           d                    |d d         ||	dg          }d                    d||t          j	        |
                    d                                                    g          }t          j        d|           t(                              ||d d         ||	          }t/          j        ||
                    d          t          j	                                                  }t          j        d |           |dz   |z   }d!|z   d"z   |z   d#z   |z   |d$<   t          j        d%|d$                    d S )&N /GETContent-Typez0application/x-www-form-urlencoded; charset=utf-8%Y%m%dT%H%M%SZX-DatePOSTz!application/x-www-form-urlencodedz'[sign] request body after urlencode: %sutf-8zX-Content-Sha256zcalculated body sha256: %sX-Security-Token)r   zContent-Md5HostzX-zsigned headers: %shost:   80443r   
;zcanonical_request:
%s   requestHMAC-SHA256zstring_to_sign:
%szcalculated signature: %szHMAC-SHA256 Credential=z, SignedHeaders=z, Signature=Authorizationzfinal Authorization header: %s)datetimeutcnowstrftimeget
startswithr   r   
debug_signhashlibsha256encode	hexdigestdictlowerfindsplitstrsortedkeysjoinr   canonical_queryget_signing_secret_key_v4hmacnew)pathmethodheadersbodypost_paramsqueryakskregionservicesession_tokenformat_date	body_hashsigned_headerskeyvr,   port
signed_strsigned_headers_stringcanonical_requestcredential_scopesigning_strsigning_key	signature
credentials                             a/root/.openclaw/workspace/.venvs/ark-sdk/lib/python3.11/site-packages/volcenginesdkcore/signv4.pysignzSignerV4.sign   s    2::DU??Ng$=$=&XGN#'..0099:JKK'f^!<!<!G!GHk!l!l [))D&'PRVWWWN4;;w#7#788BBDD	&/"#"#?KKK 	8*7G&' 	; 	;C===PTAUAU=.5clsyy{{+"#7HHH^##v&Avvc{{b  Qxt99$$D		U(:(:-21XN6*
.--//00 	A 	AC#)nS&99D@@JJ #0C0C0E0E)F)F G G IIT833DKK@@*Ncenoq q"#;=NOOO88[!_fgy$QRRii=M!(0A0H0H0Q0Q!R!R!\!\!^!^!` a a"#8+FFF88[!_fV]^^H[+*<*<W*E*Ew~VV``bb	"#=yIII#X 00
=
JM__4 57E FHQ R 		 	"#CW_E]^^^    c                 0   g }| D ]L}t          | |                   }|                    t          |d          t          |d          f           Mg }t          |          D ]\  }}|                    |d|            d                    |          S )Nz-_.~)safe=&)r-   appendr   r.   r0   )r:   resrC   valuesorted_key_valss        rN   r1   zSignerV4.canonical_queryI   s     	M 	MCc
OOEJJc///u61J1J1JKLLLL ++ 	; 	;JC""ccc55#9::::xx(((rP   c                     t                               |                     d          |          }t                               ||          }t                               ||          }t                               |d          S )Nr   r   )r   hmac_sha256r'   )r<   dater=   r>   kdatekregionkservices          rN   r2   z"SignerV4.get_signing_secret_key_v4T   sc    $$RYYw%7%7>>&&uf55''99##Hi888rP   c                     t          j        | |                    d          t          j                                                  S )Nr   )r3   r4   r'   r%   r&   digest)rC   msgs     rN   rZ   zSignerV4.hmac_sha256[   s0    xSZZ00'.AAHHJJJrP   c	           
         t           j                                                             d          }	|	dd         }
d                    |
||dg          }|duo|dk    }t	          |          }|	|d<   d|d<   |dz   |z   |d	<   d
|d<   |rdnd|d<   d|d<   d                    t          |                                                    |d<   t          |                                          |r||d<   t          j	        d          
                                }fd|                                D             }|r:d                    || t                              |          d|z   dz   d|g          }n3d                    || t                              |          dd|g          }t          j        d|           d                    d
|	|t          j	        |                    d                    
                                g          }t          j        d|           t                              ||
||          }t%          j        ||                    d          t          j	                  
                                }t          j        d|           ||d<   t)          t          |                                                    S )a  
        Generate presigned URL query string (AWS Signature V4)

        :param path: Request path
        :param method: HTTP method (GET, POST, etc.)
        :param query: Query parameters dict
        :param ak: Access Key
        :param sk: Secret Key
        :param region: Service region
        :param service: Service name
        :param session_token: Optional session token
        :param host: Optional host header to sign
        :return: Query string with signature
        r   Nr   r
   r   r	   r   zX-NotSignBodyzX-Credentialr   zX-Algorithmr   zX-SignedHeaderszX-SignedQueriesr   r   rP   c                 $    i | ]\  }}|v 	||S  rd   ).0krD   signed_query_keyss      rN   
<dictcomp>z%SignerV4.sign_url.<locals>.<dictcomp>   s*    ![![![41aAIZDZDZ!QDZDZDZrP   r   zhost:z [sign_url] canonical_request:
%sr   z[sign_url] string_to_sign:
%sz#[sign_url] calculated signature: %szX-Signature)r   r    r!   r0   r)   r.   r/   setr%   r&   r(   itemsr   r1   r   r$   r'   r2   r3   r4   r   )r5   r6   r:   r;   r<   r=   r>   r?   r   r@   r[   rI   	sign_hostrA   canonical_query_paramsrH   rJ   rK   rL   rg   s                      @rN   sign_urlzSignerV4.sign_url_   s     '..0099:JKK2A2 88T67I$FGG $3	 U%h!#o "S+; ;n,m-6#>66B #%  $'88F5::<<,@,@#A#A 

--  	6(5E$% N3''1133	![![![![5;;==![![![ 	 $		(()?@@$%+ ! ! !%		(()?@@+ ! ! 	"#FHYZZZ iiN,33G<<==GGII	!
   	"#C[QQQ 88T67SSH[+*<*<W*E*Ew~VV``bb	"#H)TTT  )m ..///rP   )N)NN)	__name__
__module____qualname__staticmethodrO   r1   r2   rZ   rm   rd   rP   rN   r   r      s        9 9 9 \9v ) ) \) 9 9 \9 K K \K S0 S0 S0 \S0 S0 S0rP   r   )
r   r%   r3   six.moves.urllib.parser   r   (volcenginesdkcore.observability.debuggerr   objectr   rd   rP   rN   <module>ru      s       3 3 3 3 3 3 3 3 D D D D D Dh0 h0 h0 h0 h0v h0 h0 h0 h0 h0rP   