
    9i                         S r SSKJr  SSKrSSKrSSKrSSKJr  SSKJ	r	  SSKJ
r
  \R                  " \5      rS
S jr SS jr SS	 jrg)zA
This module provides authentication functions for bce services.
    )absolute_importN)http_headers)utils)compatc                    U =(       d    0 n Ub  [        U5      S:X  a  [        / SQ5      n/ nU  H  nUR                  5       R                  5       n[        R
                  " X   5      R                  5       nUR                  [        R                  5      (       d  XA;   d  Mr  S[        R                  " U5      [        R                  " U5      4-  nUR                  U5        M     UR                  5         SR                  U5      $ )Nr   )   hosts   content-md5s   content-lengths   content-types   %s:%s   
)lensetstriplowerr   convert_to_standard_string
startswithr   
BCE_PREFIXnormalize_stringappendsortjoin)headersheaders_to_signresultkk_lowervaluestr_tmps          [/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/baidubce/auth/bce_v1_signer.py_get_canonical_headersr      s    mG#o"6!"; 0 1 F'')//#00<BBDl5566-%"8"8"A5CYCYZ_C`!aaGMM'"  KKM<<    c           
         [         R                  SXX4XVU4-  5        U=(       d    0 nU=(       d    0 nSU R                  [        R                  " U5      U4-  n[
        R                  " U R                  U[        R                  5      R                  5       n	Un
[        R                  " US5      n[        X75      nSR                  XX/5      n[
        R                  " [        R                  " U	5      U[        R                  5      R                  5       n[        R                  " U5      nU(       a  SUSR                  U5      U4-  nOSX4-  n[         R                  SU	[!        U5      U4-  5        [         R                  S	U-  5        U$ )
z
Create the authorization
!Sign params: %s %s %s %s %d %d %s   bce-auth-v1/%s/%s/%dTr	      %s/%s/%s   ;s   %s//%s*sign_key=[%s] sign_string=[%d bytes][ %s ]	result=%s)_loggerdebugaccess_key_idr   get_canonical_timehmacnewsecret_access_keyhashlibsha256	hexdigestget_canonical_querystringr   r   r   convert_to_bytesr
   )credentialshttp_methodpathr   params	timestampexpiration_in_secondsr   sign_key_infosign_keycanonical_uricanonical_querystringcanonical_headersstring_to_signsign_resultr   s                   r   signr?   1   st    MM57Io9_ _ ` mG\rF+!!  +/ M xx%% "	 
 M!;;FDI.wH\\#
 N ((6228<ngnn]ggiK))+6K{{?/K[YYm99MM>S0.AB CMM+&'Mr   c           
         [         R                  SXX4XVU4-  5        U=(       d    0 nU=(       d    0 nSU R                  [        R                  " U5      U4-  n[
        R                  " U R                  U[        R                  5      R                  5       n	Un
[        R                  " US5      nSnUR                  5        H?  u  pUR                  5       S:X  d  M  [        R                  " U5      R                  5       n  O   S[        R                   " U5      -   nSR#                  XX/5      n[
        R                  " [$        R&                  " U	5      U[        R                  5      R                  5       n[$        R&                  " U5      nU(       a  SUS	R#                  U5      U4-  nOS
UU4-  n[         R                  SU	[)        U5      U4-  5        [         R                  SU-  5        U$ )ur   
资源池接口签名适配方法，与普通接口签名不同的是，资源池接口需要额外处理host头
r    r!   TNr   s   host:r	   r"   r#   s
   %s/host/%sr$   r%   )r&   r'   r(   r   r)   r*   r+   r,   r-   r.   r/   r0   itemsr   r   r   r   r   r   r1   r
   )r2   r3   r4   r   r5   r6   r7   r   r8   r9   r:   r;   host_headerkeyr   r<   r=   r>   r   s                      r   resource_pool_signrD   ]   s    MM57Io9_ _ ` mG\rF+!!  +/ M xx%% "	 
 M!;;FDI Kmmo
99;'!::5AGGIK &
 !5#9#9+#FF\\#
 N ((6228<ngnn]ggiK))+6K{{?/K[YY-!==MM>S0.AB CMM+&'Mr   )N)r   i  N)__doc__
__future__r   r-   r*   loggingbaidubce.httpr   baidubcer   r   	getLogger__name__r&   r   r?   rD    r   r   <module>rM      sQ    '    &   

H
% * CG)Z CG0r   