File: //usr/local/CyberCP/lib/python3.10/site-packages/botocore/__pycache__/httpchecksum.cpython-310.pyc
o
�ho? � @ s� d Z ddlZddlZddlZddlmZ ddlmZmZ ddl m
Z
ddlmZm
Z
mZ ddlmZ ddlmZmZ e
rCdd lmZ ndZe�e�ZG d
d� d�ZG dd
� d
e�ZG dd� de�ZG dd� de�ZG dd� de�ZG dd� de�ZG dd� d�Z G dd� de�Z!dd� Z" d3dd�Z#dd� Z$d d!� Z%d"d#� Z& d3d$d%�Z'd&d'� Z(d(d)� Z)d*d+� Z*eeed,�Z+d-d.gZ,e
r�eed/�Z-e+�.e-� e/d0d1� e-�0� D ��s�J �e1e+�0� �Z2g d2�Z3dS )4aB The interfaces in this module are not intended for public use.
This module defines interfaces for applying checksums to HTTP requests within
the context of botocore. This involves both resolving the checksum to be used
based on client configuration and environment, as well as application of the
checksum to the request.
� N)�crc32)�sha1�sha256)�HAS_CRT)�AwsChunkedWrapperError�FlexibleChecksumError�MissingDependencyException)�
StreamingBody)�conditionally_calculate_md5�determine_content_length)� checksumsc @ s8 e Zd ZdZdd� Zdd� Zdd� Zdd � Zd
d� ZdS )
�BaseChecksum� c C � d S �N� ��self�chunkr r �H/usr/local/CyberCP/lib/python3.10/site-packages/botocore/httpchecksum.py�update3 � zBaseChecksum.updatec C r r r �r r r r �digest6 r zBaseChecksum.digestc C s | � � }t�|��d�S )N�ascii)r �base64� b64encode�decode)r �bsr r r � b64digest9 s zBaseChecksum.b64digestc s: � � � }t� �fdd�d�D ]}��|� q� �|� d S )Nc s � � �j�S r )�read�_CHUNK_SIZEr ��fileobjr r r �<lambda>? s z.BaseChecksum._handle_fileobj.<locals>.<lambda>� )�tell�iterr �seek)r r# �start_positionr r r"