HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/libcloud/common/__pycache__/osc.cpython-310.pyc
o

;j�@sPddlZddlZddlmZddlmZdgZGdd�d�ZGdd�de�ZdS)�N)�datetime)�urlquote�OSCRequestSignerAlgorithmV4c@s&eZdZdZdededefdd�ZdS)�OSCRequestSignerz@
    Class which handles signing the outgoing AWS requests.
    �
access_key�
access_secret�versioncCs||_||_||_||_dS)aI
        :param access_key: Access key.
        :type access_key: ``str``

        :param access_secret: Access secret.
        :type access_secret: ``str``

        :param version: API version.
        :type version: ``str``

        :param connection: Connection instance.
        :type connection: :class:`Connection`
        N)rrr�
connection)�selfrrrr	�r�G/opt/saltstack/salt/lib/python3.10/site-packages/libcloud/common/osc.py�__init__ s
zOSCRequestSigner.__init__N)�__name__�
__module__�__qualname__�__doc__�strr
rrrrrsrc@s�eZdZedd��Zedefdd��Zedefdd��Zedefd	d
��Zde	de	d
e	de	fdd�Z
		d$dede	dede	de	f
dd�Zdedede	de	de	f
dd�Z
de	de	fdd�Zdedede	de	de	f
dd�Zdd �Zd!d"�Zd#S)%rcCst�||�d�tj���S)N�utf-8)�hmac�new�encode�hashlib�sha256�digest)�key�msgrrr�sign5sz OSCRequestSignerAlgorithmV4.sign�headerscC�d�dd�t|���D��S)N�;cSsg|]}|���qSr)�lower)�.0�krrr�
<listcomp>;szCOSCRequestSignerAlgorithmV4._get_signed_headers.<locals>.<listcomp>)�join�sorted�keys�rrrr�_get_signed_headers9sz/OSCRequestSignerAlgorithmV4._get_signed_headerscCs d�dd�t|���D��dS)N�
cSs*g|]\}}d�|��t|���g��qS)�:)r$r r�strip�r!r"�vrrrr#@s*zFOSCRequestSignerAlgorithmV4._get_canonical_headers.<locals>.<listcomp>�r$r%�itemsr'rrr�_get_canonical_headers=s��z2OSCRequestSignerAlgorithmV4._get_canonical_headers�paramscCr)N�&c	Ss0g|]\}}d�t|dd�tt|�dd���qS)z{}={}�)�safe�~)�formatrrr,rrrr#Gs��zCOSCRequestSignerAlgorithmV4._get_request_params.<locals>.<listcomp>r.)r1rrr�_get_request_paramsDs

��z/OSCRequestSignerAlgorithmV4._get_request_params�service_name�region�action�datac
Cs`t��}d�||�}d|�d�|d�}d�|jj|j|�}|j||d||d�}	|�d|	i�|S)	Nz{}.{}.outscale.comzapplication/json; charset=utf-8�%Y%m%dT%H%M%SZ)zContent-Typez
X-Osc-Date�Hostz	/{}/{}/{}�POST�r�dt�method�pathr;Z
Authorization)	r�utcnowr6�strftimer	r8r�_get_authorization_v4_header�update)
r
r8r9r:r;�date�hostrrB�sigrrr�get_request_headersMs�
�z/OSCRequestSignerAlgorithmV4.get_request_headers�GET�/r@rArBc	Cs@|j|d�}|j|d�}|j|||||d�}d|j|||d�S)N)r@r'r?zNOSC4-HMAC-SHA256 Credential=%(u)s/%(c)s, SignedHeaders=%(sh)s, Signature=%(s)s)�u�c�sh�s)�_get_credential_scoper(�_get_signaturer)	r
rr;r@rArBZcredentials_scopeZsigned_headersZ	signaturerrrrE\s���z8OSCRequestSignerAlgorithmV4._get_authorization_v4_headercCsB|j|||||d�}|�|j|�d��}t�||�d�tj��	�S)Nr?�%Y%m%dr)
�_get_string_to_sign�_get_key_to_sign_withrrDrrrrr�	hexdigest)r
rr@rArBr;Zstring_to_signZsigning_keyrrrrRrs

�z*OSCRequestSignerAlgorithmV4._get_signaturercCsB|�d|�d�|�}|�||jj�}|�||jj�}|�|d�S)NZOSC4r�osc4_request)rrr	�region_namer8)r
rr@Zk_dateZk_regionZ	k_servicerrrrUysz1OSCRequestSignerAlgorithmV4._get_key_to_sign_withcCsF|j||||d�}d|�d�d|�|�dt�|�d����S)N)rrArBr;zOSC4-HMAC-SHA256
r<r)r)�_get_canonical_requestrDrQrrrrV)r
rr@rArBr;Zcanonical_requestrrrrTs�������z/OSCRequestSignerAlgorithmV4._get_string_to_signcCs d�|�d�|jj|jjdg�S)NrLrSrW)r$rDr	rXr8)r
r@rrrrQ�s��z1OSCRequestSignerAlgorithmV4._get_credential_scopecCs8d�|||�i�|�|�|�|�t�|�d����g�S)Nr)r)r$r7r0r(rrrrV)r
rrArBr;rrrrY�s��z2OSCRequestSignerAlgorithmV4._get_canonical_requestN)rKrL)rrr�staticmethodr�dictr(r0r7rrJrrErRrUrTrQrYrrrrr4s8
�����
�
)rrrZlibcloud.utils.py3r�__all__rrrrrr�<module>s�