HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: sport3497 (1034)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberCP/lib/python3.10/site-packages/botocore/__pycache__/httpchecksum.cpython-310.pyc
o

�ho?�@s�dZddlZddlZddlZddlmZddlmZmZddl	m
Z
ddlmZm
Z
mZddlmZddlmZmZe
rCdd	lmZndZe�e�ZGd
d�d�ZGdd
�d
e�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�d�Z Gdd�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��Z2gd2�Z3dS)4aBThe 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@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�BaseChecksum�cC�dS�N���self�chunkrr�H/usr/local/CyberCP/lib/python3.10/site-packages/botocore/httpchecksum.py�update3�zBaseChecksum.updatecCrrr�rrrr�digest6rzBaseChecksum.digestcCs|��}t�|��d�S)N�ascii)r�base64�	b64encode�decode)r�bsrrr�	b64digest9szBaseChecksum.b64digestcs:���}t��fdd�d�D]}��|�q��|�dS)Ncs���j�Sr)�read�_CHUNK_SIZEr��fileobjrrr�<lambda>?sz.BaseChecksum._handle_fileobj.<locals>.<lambda>�)�tell�iterr�seek)rr#�start_positionrrr"r�_handle_fileobj=szBaseChecksum._handle_fileobjcCs2t|ttf�r|�|�|��S|�|�|��Sr)�
isinstance�bytes�	bytearrayrr*r)r�bodyrrr�handleCs


�zBaseChecksum.handleN)	�__name__�
__module__�__qualname__r!rrrr*r/rrrrr
0sr
c@�$eZdZdd�Zdd�Zdd�ZdS)�
Crc32ChecksumcC�
d|_dS�Nr��
_int_crc32rrrr�__init__L�
zCrc32Checksum.__init__cCst||j�d@|_dS�Nl��)rr8rrrrrOszCrc32Checksum.updatecC�|jjddd�S�N��big)�	byteorder�r8�to_bytesrrrrrR�zCrc32Checksum.digestN�r0r1r2r9rrrrrrr4K�r4c@r3)�CrtCrc32ChecksumcCr5r6r7rrrrr9Xr:zCrtCrc32Checksum.__init__cC�t�||j�}|d@|_dSr;)�
crt_checksumsrr8�rr�new_checksumrrrr[�zCrtCrc32Checksum.updatecCr<r=rArrrrr_rCzCrtCrc32Checksum.digestNrDrrrrrFV�rFc@r3)�CrtCrc32cChecksumcCr5r6)�_int_crc32crrrrr9er:zCrtCrc32cChecksum.__init__cCrGr;)rH�crc32crNrIrrrrhrKzCrtCrc32cChecksum.updatecCr<r=)rNrBrrrrrlrCzCrtCrc32cChecksum.digestNrDrrrrrMcrLrMc@r3)�Sha1ChecksumcC�t�|_dSr)r�	_checksumrrrrr9q�zSha1Checksum.__init__cC�|j�|�dSr�rRrrrrrrtrCzSha1Checksum.updatecC�
|j��Sr�rRrrrrrrwr:zSha1Checksum.digestNrDrrrrrPprErPc@r3)�Sha256ChecksumcCrQr)rrRrrrrr9|rSzSha256Checksum.__init__cCrTrrUrrrrrrCzSha256Checksum.updatecCrVrrWrrrrr�r:zSha256Checksum.digestNrDrrrrrX{rErXc@sLeZdZdZ			ddd�Zdd�Zdd	d
�Zddd�Zd
d�Zdd�Z	dS)�AwsChunkedWrapperrN�x-amz-checksumcCs2||_||_||_|��|dur|j}||_dSr)�_raw�_checksum_name�
_checksum_cls�_reset�_DEFAULT_CHUNK_SIZE�_chunk_size)r�raw�checksum_cls�
checksum_name�
chunk_sizerrrr9�s
zAwsChunkedWrapper.__init__cCs*d|_d|_d|_|jr|��|_dSdS)Nr%F)�
_remaining�	_completerRr]rrrrr^�s�zAwsChunkedWrapper._resetrcCs2|dks|dkr
tdd��|��|j�d�dS)Nrz Can only seek to start of stream��	error_msg)rr^r[r()r�offset�whencerrrr(�s�zAwsChunkedWrapper.seekcCs�|dur
|dkr
d}|jr|jsdS|dup|t|j�k}|js;|r;|j|��7_|dup5|t|j�k}|js;|s"|durDt|j�}|jd|�}|j|d�|_|S)Nrr%)rfre�len�_make_chunk)r�size�want_more_bytes�	to_returnrrrr �s

�
zAwsChunkedWrapper.readcCs�|j�|j�}tt|��dd��d�}||_|jr!|j�|�|jr;|jr;|j	�d�}|j�
��d�}d||fSd||fS)N�rs0
%s:%s

s%s
%s
)r[r r`�hexrk�encoderfrRrr\r)r�	raw_chunk�hex_len�name�checksumrrrrl�szAwsChunkedWrapper._make_chunkccs �|js|��V|jrdSdSr)rfrlrrrr�__iter__�s�
�zAwsChunkedWrapper.__iter__)NrZN)rr)
r0r1r2r_r9r^r(r rlrwrrrrrY�s
�

rYcs2eZdZ�fdd�Zd�fdd�	Zdd�Z�ZS)	�StreamingChecksumBodycst��||�||_||_dSr)�superr9rR�	_expected)r�
raw_stream�content_lengthrv�expected��	__class__rrr9�s
zStreamingChecksumBody.__init__Ncs:t�j|d�}|j�|�|dus|s|dkr|��|S)N)�amtr)ryr rRr�_validate_checksum)rr�rr~rrr �s
zStreamingChecksumBody.readcCs<|j��t�|j�krd|j�d|j����}t|d��dS)N�Expected checksum �$ did not match calculated checksum: rg)rRrr�	b64decoderzrr)rrhrrrr��s
��
�z(StreamingChecksumBody._validate_checksumr)r0r1r2r9r r��
__classcell__rrr~rrx�srxcCst|||�t|||�dSr)�"resolve_request_checksum_algorithm�$resolve_response_checksum_algorithms)�request�operation_model�paramsrrr�resolve_checksum_context�sr�c
Cs|j}|�d�}|rl||vrl|durt}||��}||vr7ts/|tvr/td|���d�d��td|��d��d}|j	rE|d�
d	�rEd
}||d|��d�}|d
|dvrXdS|d�di�}	||	d<|	|dd<dS|jst|�d�r�|d�di�}	d|	d<|	|dd<dSdS)N�requestAlgorithmMemberzUsing za requires an additional dependency. You will need to pip install botocore[crt] before proceeding.)�msgz Unsupported checksum algorithm: rg�header�urlzhttps:�trailer�x-amz-checksum-)�	algorithm�inruru�headers�contextrv�request_algorithm�requestChecksumRequired�conditional-md5)�
http_checksum�get�_SUPPORTED_CHECKSUM_ALGORITHMS�lowerr�_CRT_CHECKSUM_ALGORITHMSr�upperr�has_streaming_input�
startswith�http_checksum_required)
r�r�r��supported_algorithmsr��algorithm_member�algorithm_name�
location_typer��checksum_contextrrrr��sD
���
��r�cCs~|�di��di�}|�d�}|sdS|dkrt|�dS|ddkr)t|�dS|ddkr5t|�dStd�|d�d	��)
Nr�rvr�r�r�r�r�zUnknown checksum variant: {}rg)r�r
�_apply_request_header_checksum�_apply_request_trailer_checksumr�format)r�r�r�rrr�apply_request_checksum-s
�r�cCsd|�di��di�}|�d�}|d}||dvrdSt�|d�}|��|d�}||d|<dS)Nr�rvr�rur�r�r.)r��
_CHECKSUM_CLSr/)r�r�r��
location_namerbrrrrr�As
r�cCs�|�di��di�}|�d�}|d}t�|d�}|d}|d}||vr(dSd|d	<d
|vr9|d
d7<nd|d
<||d
<t|�}|durOt|�|d<t|ttf�r[t�|�}t	|||d�|d<dS)Nr�rvr�rur�r�r.�chunkedzTransfer-EncodingzContent-Encodingz,aws-chunkedzaws-chunkedz
X-Amz-TrailerzX-Amz-Decoded-Content-Length)rbrc)
r�r�r�strr+r,r-�io�BytesIOrY)r�r�r�r�rbr�r.r|rrrr�Ms.

�r�c
Cs�|j}|�d�}|rH||vrJ|durt}dd�|�dg�D�}g}tD]}||vr*q#||vr3|�|�q#|d�di�}	||	d<|	|dd<dSdSdS)N�requestValidationModeMembercSsh|]}|���qSr)r�)�.0�arrr�	<setcomp>{s�z7resolve_response_checksum_algorithms.<locals>.<setcomp>�responseAlgorithmsr�rv�response_algorithms)r�r�r��_ALGORITHMS_PRIORITY_LIST�append)
r�r�r�r�r��mode_memberr��usable_algorithmsr�r�rrrr�ss&

�
��r�c	Cs�|d}|�di�}|�d�}|sdS|D];}d|��}||vr!qd||vr(q|jr4t|||�|d<nt|||�|d<|d�di�}||d<||dd<dSt�d	|�d
��dS)Nr�rvr�r��-r.r��response_algorithmzXSkipping checksum validation. Response did not contain one of the following algorithms: �.)r��has_streaming_output�_handle_streaming_response�_handle_bytes_response�logger�info)	�
http_response�responser�r�r�r��
algorithmsr��header_namerrr�handle_checksum_body�s6


����r�cCs8t�|�}d|��}t|j|d�d�|�|d|�S)Nr�r�zcontent-length)r�r�rxra)r�r�r�rbr�rrrr��s


�r�c	Csj|j}d|��}t�|�}|�}|�|�|d|}|��t�|�kr3d|�d|����}t|d��|S)Nr�r�r�r�rg)	�contentr�r�rrrr�rr)	r�r�r�r.r�rbrvr}rhrrrr��s


��
r�)rrrrrO)rrOccs�|]}|tvVqdSr)r�)r�rurrr�	<genexpr>�s�
�r�)rOrrrr)4�__doc__rr��logging�binasciir�hashlibrr�botocore.compatr�botocore.exceptionsrrr�botocore.responser	�botocore.utilsr
r�awscrtrrH�	getLoggerr0r�r
r4rFrMrPrXrYrxr�r�r�r�r�r�r�r�r�r�r��_CRT_CHECKSUM_CLSr�all�keys�listr�r�rrrr�<module>s`



R	
�:'
�)��
�