File: //usr/local/CyberCP/lib64/python3.10/site-packages/botocore/crt/__pycache__/auth.cpython-310.pyc
o
�h�b � @ s d dl Z d dlmZ d dlmZmZmZmZmZm Z d dl
mZmZm
Z
mZmZ d dlmZ d dlmZ G dd� de�ZG d d
� d
e�ZG dd� de�ZG d
d� de�ZG dd� de�ZG dd� de�ZG dd� de�ZG dd� de�Zeeeeeeed�ZdS )� N)�BytesIO)�SIGNED_HEADERS_BLACKLIST�"STREAMING_UNSIGNED_PAYLOAD_TRAILER�UNSIGNED_PAYLOAD�
BaseSigner�_get_body_as_dict�_host_from_url)�HTTPHeaders�awscrt�parse_qs�urlsplit�
urlunsplit)�NoCredentialsError)�percent_encode_sequencec @ �z e Zd ZdZg d�ZejjjZ dZ
dZdd� Zdd� Z
dd� Zd d
� Zdd� Zd
d� Zdd� Zdd� Zdd� Zdd� ZdS )�CrtSigV4AuthT��
Authorizationz
X-Amz-Date�X-Amz-Content-SHA256zX-Amz-Security-Tokenc C � || _ || _|| _d | _d S �N��credentials�
_service_name�_region_name�_expiration_in_seconds��selfr �service_name�region_name� r �D/usr/local/CyberCP/lib/python3.10/site-packages/botocore/crt/auth.py�__init__* �
zCrtSigV4Auth.__init__c C �0 |j �di �}|�d�}t|t�o|�d�dkS �N�checksum�request_algorithm�in�trailer��context�get�
isinstance�dict�r �request�checksum_context� algorithmr r r! �_is_streaming_checksum_payload0 �
z+CrtSigV4Auth._is_streaming_checksum_payloadc
C � | j d u rt� �tj�� jtjjd�}| �|�}| �|� t j
jj| j j
| j j| j jd�}| �|�r5t}n| �|�rB|r?|}nd }nt}| �|�rOt j
jj}nt j
jj}t j
jt j
jj| j|| j| j|| j| j| j ||| j!d�}| �"|�}t j
�#||�} | �$� | �%||� d S �N)�tzinfo)�
access_key_id�secret_access_key�
session_token)r2 �signature_type�credentials_provider�region�service�date�should_sign_header�use_double_uri_encode�should_normalize_uri_path�signed_body_value�signed_body_header_type�expiration_in_seconds)&r r �datetime�utcnow�replace�timezone�utc�_get_existing_sha256�_modify_request_before_signingr
�auth�AwsCredentialsProvider�
new_static�
access_key�
secret_key�tokenr3 r �_should_sha256_sign_payloadr �!_should_add_content_sha256_header�AwsSignedBodyHeaderType�X_AMZ_CONTENT_SHA_256�NONE�AwsSigningConfig�AwsSigningAlgorithm�V4�_SIGNATURE_TYPEr r �_should_sign_header�_USE_DOUBLE_URI_ENCODE�_SHOULD_NORMALIZE_URI_PATHr �_crt_request_from_aws_request�aws_sign_request�result�_apply_signing_changes�
r r0 �datetime_now�existing_sha256r<