o
    lqi‹  ã                   @   sˆ   d Z ddlmZ ddlmZ ddlmZ ddlZddlZddlZddl	m
Z
 ddlmZ ddlmZ e e¡Zdd	d
„Z	ddd„ZdS )zA
This module provides authentication functions for bce services.
é    )Úabsolute_import)Ústr)ÚbytesN)Úhttp_headers)Úutils)Úcompatc                 C   sœ   | pi } |d u st |ƒdkrtg d¢ƒ}g }| D ],}| ¡  ¡ }t | | ¡ ¡ }| tj¡s3||v rDdt 	|¡t 	|¡f }| 
|¡ q| ¡  d |¡S )Nr   )s   hosts   content-md5s   content-lengths   content-types   %s:%só   
)ÚlenÚsetÚstripÚlowerr   Zconvert_to_standard_stringÚ
startswithr   Z
BCE_PREFIXZnormalize_stringÚappendÚsortÚjoin)ÚheadersÚheaders_to_signÚresultÚkZk_lowerÚvalueZstr_tmp© r   úb/home/app/PaddleOCR-VL/.venv_paddleocr/lib/python3.10/site-packages/baidubce/auth/bce_v1_signer.pyÚ_get_canonical_headers   s   
€
r   é  c              
   C   sø   t  d|||||||f ¡ |pi }|pi }d| jt |¡|f }t | j|tj	¡ 
¡ }	|}
t |d¡}t||ƒ}d ||
||g¡}t t |	¡|tj	¡ 
¡ }t |¡}|rad|d |¡|f }nd||f }t  d|	t|ƒ|f ¡ t  d	| ¡ |S )
z"
    Create the authorization
    z!Sign params: %s %s %s %s %d %d %ss   bce-auth-v1/%s/%s/%dTr   s   %s/%s/%só   ;s   %s//%sz*sign_key=[%s] sign_string=[%d bytes][ %s ]z	result=%s)Ú_loggerÚdebugZaccess_key_idr   Zget_canonical_timeÚhmacÚnewZsecret_access_keyÚhashlibÚsha256Ú	hexdigestZget_canonical_querystringr   r   r   Zconvert_to_bytesr	   )ÚcredentialsZhttp_methodÚpathr   ÚparamsÚ	timestampZexpiration_in_secondsr   Zsign_key_infoZsign_keyZcanonical_uriZcanonical_querystringZcanonical_headersZstring_to_signZsign_resultr   r   r   r   Úsign3   sD   ÿýýý
þ
ÿr&   )N)r   r   N)Ú__doc__Ú
__future__r   Úbuiltinsr   r   r   r   ÚloggingZbaidubce.httpr   Zbaidubcer   r   Ú	getLoggerÚ__name__r   r   r&   r   r   r   r   Ú<module>   s   

ÿ