HEX
Server: LiteSpeed
System: Linux us-phx-web1284.main-hosting.eu 4.18.0-553.109.1.lve.el8.x86_64 #1 SMP Thu Mar 5 20:23:46 UTC 2026 x86_64
User: u300739242 (300739242)
PHP: 8.2.30
Disabled: system, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail
Upload Files
File: //opt/alt/python37/lib/python3.7/site-packages/botocore/__pycache__/httpchecksum.cpython-37.pyc
B

�P�e�?�@s�dZddlZddlZddlZddlmZddlmZmZddl	m
Z
ddlmZm
Z
mZddlmZddlmZmZe
r�dd	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"d4dd�Z#dd�Z$d d!�Z%d"d#�Z&d5d$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�t1�e2e+�0��Z3d.d-d2d3gZ4dS)6aC 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@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�BaseChecksumicCsdS)N�)�self�chunkrr�F/opt/alt/python37/lib/python3.7/site-packages/botocore/httpchecksum.py�update2szBaseChecksum.updatecCsdS)Nr)rrrr�digest5szBaseChecksum.digestcCs|��}t�|��d�S)N�ascii)r�base64�	b64encode�decode)r�bsrrr�	b64digest8szBaseChecksum.b64digestcs>���}x&t��fdd�d�D]}��|�qW��|�dS)Ncs���j�S)N)�read�_CHUNK_SIZEr)�fileobjrrr�<lambda>>�z.BaseChecksum._handle_fileobj.<locals>.<lambda>r)�tell�iterr�seek)rrZstart_positionrr)rrr�_handle_fileobj<szBaseChecksum._handle_fileobjcCs,t|ttf�r|�|�n
|�|�|��S)N)�
isinstance�bytes�	bytearrayrr"r)r�bodyrrr�handleBs
zBaseChecksum.handleN)	�__name__�
__module__�__qualname__rrrrr"r'rrrrr
/sr
c@s$eZdZdd�Zdd�Zdd�ZdS)�
Crc32ChecksumcCs
d|_dS)Nr)�
_int_crc32)rrrr�__init__KszCrc32Checksum.__init__cCst||j�d@|_dS)Nl��)rr,)rrrrrrNszCrc32Checksum.updatecCs|jjddd�S)N��big)�	byteorder)r,�to_bytes)rrrrrQszCrc32Checksum.digestN)r(r)r*r-rrrrrrr+Jsr+c@s$eZdZdd�Zdd�Zdd�ZdS)�CrtCrc32ChecksumcCs
d|_dS)Nr)r,)rrrrr-WszCrtCrc32Checksum.__init__cCst�||j�}|d@|_dS)Nl��)�
crt_checksumsrr,)rr�new_checksumrrrrZszCrtCrc32Checksum.updatecCs|jjddd�S)Nr.r/)r0)r,r1)rrrrr^szCrtCrc32Checksum.digestN)r(r)r*r-rrrrrrr2Usr2c@s$eZdZdd�Zdd�Zdd�ZdS)�CrtCrc32cChecksumcCs
d|_dS)Nr)�_int_crc32c)rrrrr-dszCrtCrc32cChecksum.__init__cCst�||j�}|d@|_dS)Nl��)r3�crc32cr6)rrr4rrrrgszCrtCrc32cChecksum.updatecCs|jjddd�S)Nr.r/)r0)r6r1)rrrrrkszCrtCrc32cChecksum.digestN)r(r)r*r-rrrrrrr5bsr5c@s$eZdZdd�Zdd�Zdd�ZdS)�Sha1ChecksumcCst�|_dS)N)r�	_checksum)rrrrr-pszSha1Checksum.__init__cCs|j�|�dS)N)r9r)rrrrrrsszSha1Checksum.updatecCs
|j��S)N)r9r)rrrrrvszSha1Checksum.digestN)r(r)r*r-rrrrrrr8osr8c@s$eZdZdd�Zdd�Zdd�ZdS)�Sha256ChecksumcCst�|_dS)N)rr9)rrrrr-{szSha256Checksum.__init__cCs|j�|�dS)N)r9r)rrrrrr~szSha256Checksum.updatecCs
|j��S)N)r9r)rrrrr�szSha256Checksum.digestN)r(r)r*r-rrrrrrr:zsr:c@sFeZdZdZddd�Zdd�Zdd	d
�Zddd�Zd
d�Zdd�Z	dS)�AwsChunkedWrapperiN�x-amz-checksumcCs2||_||_||_|��|dkr(|j}||_dS)N)�_raw�_checksum_name�
_checksum_cls�_reset�_DEFAULT_CHUNK_SIZE�_chunk_size)r�raw�checksum_cls�
checksum_name�
chunk_sizerrrr-�szAwsChunkedWrapper.__init__cCs&d|_d|_d|_|jr"|��|_dS)NrF)�
_remaining�	_completer9r?)rrrrr@�s
zAwsChunkedWrapper._resetrcCs2|dks|dkrtdd��|��|j�d�dS)Nrz Can only seek to start of stream)�	error_msg)rr@r=r!)r�offset�whencerrrr!�s
zAwsChunkedWrapper.seekcCs�|dk	r|dkrd}|jr$|js$dS|dkp8|t|j�k}x6|jsp|rp|j|��7_|dkpl|t|j�k}q<W|dkr�t|j�}|jd|�}|j|d�|_|S)Nrr)rHrG�len�_make_chunk)r�sizeZwant_more_bytesZ	to_returnrrrr�s
zAwsChunkedWrapper.readcCs�|j�|j�}tt|��dd��d�}||_|jrB|j�|�|jrv|jrv|j	�d�}|j�
��d�}d||fSd||fS)N�rs0
%s:%s

s%s
%s
)r=rrB�hexrL�encoderHr9rr>r)rZ	raw_chunk�hex_len�name�checksumrrrrM�szAwsChunkedWrapper._make_chunkccsx|js|��VqWdS)N)rHrM)rrrr�__iter__�szAwsChunkedWrapper.__iter__)Nr<N)r)N)
r(r)r*rAr-r@r!rrMrUrrrrr;�s


r;cs2eZdZ�fdd�Zd�fdd�	Zdd�Z�ZS)	�StreamingChecksumBodycst��||�||_||_dS)N)�superr-r9�	_expected)rZ
raw_stream�content_lengthrT�expected)�	__class__rrr-�szStreamingChecksumBody.__init__Ncs:t�j|d�}|j�|�|dks.|s6|dkr6|��|S)N)�amtr)rWrr9r�_validate_checksum)rr\r)r[rrr�s
zStreamingChecksumBody.readcCs<|j��t�|j�kr8d|j�d|j����}t|d��dS)NzExpected checksum z$ did not match calculated checksum: )rI)r9rr�	b64decoderXrr)rrIrrrr]�sz(StreamingChecksumBody._validate_checksum)N)r(r)r*r-rr]�
__classcell__rr)r[rrV�srVcCst|||�t|||�dS)N)�"resolve_request_checksum_algorithm�$resolve_response_checksum_algorithms)�request�operation_model�paramsrrr�resolve_checksum_context�srec
Cs|j}|�d�}|r�||kr�|dkr(t}||��}||krlts^|tkr^td|���d�d��td|d��d}|j	r�|d�
d	�r�d
}||d|d�}|d
|dkr�dS|d�di�}	||	d<|	|dd<n6|js�|�d��r|d�di�}	d|	d<|	|dd<dS)NZrequestAlgorithmMemberzUsing za requires an additional dependency. You will need to pip install botocore[crt] before proceeding.)�msgz"Unsupported checksum algorithm: %s)rI�header�urlzhttps:�trailerzx-amz-checksum-%s)�	algorithm�inrSrS�headers�contextrT�request_algorithmZrequestChecksumRequiredzconditional-md5)�
http_checksum�get�_SUPPORTED_CHECKSUM_ALGORITHMS�lowerr�_CRT_CHECKSUM_ALGORITHMSr�upperrZhas_streaming_input�
startswithZhttp_checksum_required)
rbrcrd�supported_algorithmsroZalgorithm_memberZalgorithm_nameZ
location_typerj�checksum_contextrrrr`�s:

r`cCsz|�di��di�}|�d�}|s&dS|dkr8t|�n>|ddkrNt|�n(|ddkrdt|�ntd|dd	��dS)
NrmrTrnzconditional-md5rkrgrizUnknown checksum variant: %s)rI)rpr
�_apply_request_header_checksum�_apply_request_trailer_checksumr)rbrwrjrrr�apply_request_checksum,s



rzcCsd|�di��di�}|�d�}|d}||dkr6dSt�|d�}|��|d�}||d|<dS)NrmrTrnrSrlrjr&)rp�
_CHECKSUM_CLSr')rbrwrj�
location_namerDrrrrrx@s
rxcCs�|�di��di�}|�d�}|d}t�|d�}|d}|d}||krPdSd|d	<d
|krr|d
d7<nd|d
<||d
<t|�}|dk	r�t|�|d<t|ttf�r�t�|�}t	|||d�|d<dS)NrmrTrnrSrjrlr&�chunkedzTransfer-EncodingzContent-Encodingz,aws-chunkedzaws-chunkedz
X-Amz-TrailerzX-Amz-Decoded-Content-Length)rDrE)
rpr{r�strr#r$r%�io�BytesIOr;)rbrwrjr|rDrlr&rYrrrryLs,

ryc
Cs�|j}|�d�}|r�||kr�|dkr(t}dd�|�dg�D�}g}x(tD] }||krVqH||krH|�|�qHW|d�di�}	||	d<|	|dd<dS)NZrequestValidationModeMembercSsh|]}|���qSr)rr)�.0�arrr�	<setcomp>zsz7resolve_response_checksum_algorithms.<locals>.<setcomp>ZresponseAlgorithmsrmrT�response_algorithms)rorprq�_ALGORITHMS_PRIORITY_LIST�append)
rbrcrdrvroZmode_memberr�Zusable_algorithmsrjrwrrrrars 

rac	Cs�|d}|�di�}|�d�}|s&dSxz|D]r}d|}||krBq,d||krPq,|jrht|||�|d<nt|||�|d<|d�di�}||d<||dd<dSWt�d	|�d
��dS)NrlrTr�zx-amz-checksum-%s�-r&rmZresponse_algorithmzXSkipping checksum validation. Response did not contain one of the following algorithms: �.)rpZhas_streaming_output�_handle_streaming_response�_handle_bytes_response�logger�info)	�
http_response�responsermrcrlrwZ
algorithmsrj�header_namerrr�handle_checksum_body�s,

r�cCs6t�|�}d|}t|j|d�d�|�|d|�S)Nzx-amz-checksum-%srlzcontent-length)r{rprVrC)r�r�rjrDr�rrrr��s
r�c	Csd|j}d|}t�|�}|�}|�|�|d|}|��t�|�kr`d||��f}t|d��|S)Nzx-amz-checksum-%srlz:Expected checksum %s did not match calculated checksum: %s)rI)	�contentr{rprrrr^rr)	r�r�rjr&r�rDrTrZrIrrrr��s


r�)rrrrr7)rr7ccs|]}|tkVqdS)N)rs)r�rSrrr�	<genexpr>�sr�rr)N)N)5�__doc__rr�logging�binasciir�hashlibrrZbotocore.compatrZbotocore.exceptionsrrrZbotocore.responser	Zbotocore.utilsr
rZawscrtrr3�	getLoggerr(r�r
r+r2r5r8r:r;rVrer`rzrxryrar�r�r�r{rsZ_CRT_CHECKSUM_CLSr�all�keys�AssertionError�listrqr�rrrr�<module>sT


R	
6'
)