o
    R+ i™  ã                   @   s|   d 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dd„ZdS )zA
This module provides authentication functions for bce services.
é    )Úabsolute_importN)Ú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   )ó   hosts   content-md5s   content-lengths   content-types   %s:%só   
)ÚlenÚsetÚstripÚlowerr   Úconvert_to_standard_stringÚ
startswithr   Z
BCE_PREFIXÚnormalize_stringÚappendÚsortÚjoin)ÚheadersÚheaders_to_signÚresultÚkZk_lowerÚvalueZstr_tmp© r   úg/home/app/PaddleOCR-VL-test/.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
    ú!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   r   r   r   Úsign1   sD   ÿýýý
þ
ÿr:   c              
   C   s0  t  d|||||||f ¡ |pi }|pi }d| jt |¡|f }t | j|tj	¡ 
¡ }	|}
t |d¡}d}| ¡ D ]\}}| ¡ dkrMt |¡ ¡ } nq:dt |¡ }d ||
||g¡}t t |	¡|tj	¡ 
¡ }t |¡}|r}d|d	 |¡|f }nd
||f }t  d|	t|ƒ|f ¡ t  d| ¡ |S )uz   
    èµ„æºæ± æŽ¥å£ç­¾åé€‚é…æ–¹æ³•ï¼Œä¸Žæ™®é€šæŽ¥å£ç­¾åä¸åŒçš„æ˜¯ï¼Œèµ„æºæ± æŽ¥å£éœ€è¦é¢å¤–å¤„ç†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*   r+   Úitemsr   r   r
   r   r   r   r,   r   )r-   r.   r/   r   r0   r1   r2   r   r3   r4   r5   r6   Zhost_headerÚkeyr   r7   r8   r9   r   r   r   r   Úresource_pool_sign]   sP   ÿýýýþþ
ÿr=   )N)r   r   N)Ú__doc__Ú
__future__r   r(   r%   ÚloggingZbaidubce.httpr   Zbaidubcer   r   Ú	getLoggerÚ__name__r!   r   r:   r=   r   r   r   r   Ú<module>   s   


ÿ-ÿ