HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //lib/python3.6/site-packages/S3/__pycache__/Crypto.cpython-36.opt-1.pyc
3

��we|2�@s�ddlmZddlZddlZyddlmZWn ek
rLddlmZYnXddlm	Z	ddl
mZddlm
Z
mZmZmZmZdd	lmZmZmZdd
lmZddlZddlmZmZgZd/d
d�Zejd�dd�Zejd�d0dd�Zejd�dd�Z ejd�dd�Z!ejd�dd�Z"dd�Z#d1d d!�Z$ejd!�ddefd"d#�Z%ejd$�d2d%d&�Z&ejd&�d3d'd(�Z'ejd(�d)d*�Z(ejd*�d+d,�Z)ejd,�d-d.�Z*ejd.�dS)4�)�absolute_importN)�encodebytes)�encodestring�)�Config)�debug)�encode_to_s3�decode_from_s3�s3_quote�md5�unicode)�
time_to_epoch�deunicodise�check_bucket_name_dns_support)�
SortedDict)�sha1�sha256FcCs�|sdSd}|rdpd}xht|j��D]X}|r8||kr8q&||}|d
krb|dt|dd�|f7}q&|d|t||dd�f7}q&W|o�d|d	d�S)a�
    Format URL parameters from a params dict and returns
    ?parm1=val1&parm2=val2 or an empty string if there
    are no parameters.  Output of this function should
    be appended directly to self.resource['uri']
    - Set "always_have_equal" to always have the "=" char for a param even when
    there is no value for it.
    - Set "limited_keys" list to restrict the param string to keys that are
    defined in it.
    ��=Nz&%s%sT)�unicode_outputz&%s=%s�?r)Nr)�sorted�keysr
)�params�always_have_equal�limited_keysZ	param_strZ	equal_str�key�value�r�/usr/lib/python3.6/Crypto.py�format_param_str%s r cCs,tj�j}ttjt|�|t�j��j�}|S)a{Sign a string with the secret key, returning base64 encoded results.
    By default the configured secret key is used, but may be overridden as
    an argument.

    Useful for REST authentication. See http://s3.amazonaws.com/doc/s3-developer-guide/RESTAuthentication.html
    string_to_sign should be utf-8 "bytes".
    and returned signature will be utf-8 encoded "bytes".
    )	r�
secret_keyr�hmac�newrr�digest�strip)�string_to_signr!�	signaturerrr�sign_string_v2Bs	
r(�GET�/cCsZddddddddd	d
ddd
ddddddg}|dkr<tdd�}tj�j}|d}||jdd�d7}||jdd�d7}||jdd�d7}xXt|j��D]H}|jd�r�||d||d7}|jd�r�||d||d7}q�Wt|ddd �}t||d!�}||7}||7}t	d"t
|��ttt
|���}	tt|j��dd�}
d#|d|	|
d$<|
S)%aASign a string with the secret key, returning base64 encoded results.
    By default the configured secret key is used, but may be overridden as
    an argument.

    Useful for REST authentication. See http://s3.amazonaws.com/doc/s3-developer-guide/RESTAuthentication.html
    string_to_sign should be utf-8 "bytes".
    ZaclZ	lifecycle�location�loggingZnotificationZ
partNumberZpolicyZrequestPaymentZtaggingZtorrentZuploadIdZuploadsZ	versionIdZ
versioningZversionsZwebsite�deleteZcorsZrestoreNT)�ignore_case�
zcontent-md5rzcontent-typeZdatezx-amz-�:zx-emc-F)�quote_backslashesr)rz
SignHeaders: zAWS �
Authorization)rr�
access_key�getrr�
startswithr
r r�reprr	r(r�list�items)�method�
canonical_urir�cur_headersZSUBRESOURCES_TO_INCLUDEr3r&�header�canonical_querystringr'�new_headersrrr�sign_request_v2Qs6	




r?cCst|j�|j�|d�S)aESign a URL in s3://bucket/object form with the given expiry
    time. The object will be accessible via the signed URL until the
    AWS key and secret are revoked or the expiry time is reached, even
    if the object is otherwise private.

    See: http://s3.amazonaws.com/doc/s3-developer-guide/RESTAuthentication.html
    )�bucket�object�expiry)�sign_url_base_v2r@rA)Zurl_to_signrBrrr�sign_url_v2�srDcKsRtj�j}tj�j}t|d�|d<tj�j|d<tj�j|d<t|dddd�|d<d|d	<tj�jrpd
|d	<td|d�d|}d
}|r�||d|7}d}|r�||d|7}d}td|�tt	t
|��dd�|d<td|d�ttj�j|d��rd}nd}|d7}||}|�r4|dt|dd�7}|�rN|dt|dd�7}|S)zcShared implementation of sign_url methods. Takes a hash of 'bucket', 'object' and 'expiry' as args.rBr3�	host_baserAFT)r1rZhttp�protoZhttpsz#Expiry interpreted as epoch time %sz'GET


%(expiry)d
/%(bucket)s/%(object)srzresponse-content-disposition=�&zresponse-content-type=zSigning plaintext: %r)rZsigzUrlencoded signature: %sr@z/%(proto)s://%(bucket)s.%(host_base)s/%(object)sz/%(proto)s://%(host_base)s/%(bucket)s/%(object)szC?AWSAccessKeyId=%(access_key)s&Expires=%(expiry)d&Signature=%(sig)sz&response-content-disposition=z&response-content-type=)
r�content_disposition�content_typer
r3rEr
Zsignurl_use_httpsrr(rrZhost_bucket)ZparmsrHrIZsigntextZparam_separatorZurlrrrrC�s>



rCcCstj|t|�t�j�S)N)r"r#rrr$)r�msgrrr�sign�srKcCs4ttd|�|�}t||�}t||�}t|d�}|S)z1
    Input: unicode params
    Output: bytes
    ZAWS4�aws4_request)rKr)rZ	dateStampZ
regionNameZserviceNameZkDateZkRegionZkServiceZkSigningrrr�getSignatureKey�s



rMr�	us-east-1�cCs^d}|dkrtdd�}tj�}|j}	|j}
tjj�}|jd�}|jd�}
t|
|
||�}t|ddd�}t	|dd�j
d	�}t|�ttd
��kr�t
|j��}nt
tt|��j��}|||d�}d}xL|j�D]@}|d
ks�||jd�kr�q�||j�||j�<|d|j�7}q�Wd}x.t|j��D]\}}||d|d7}�qW|}td|�djt|jd���}|d|d|d|d|d|}td|�d}|
d|d|dd}|d|d|dt
tt|��j��}t
tj|t|�t�j��}|dd|	d|dd|dd|}t|j��}|j|||d��td|�|S)NZs3T)r.z%Y%m%dT%H%M%SZz%Y%m%dF)r1r)rrrO)�hostzx-amz-content-sha256z
x-amz-datez$host;x-amz-content-sha256;x-amz-dater2�;rr0r/zcanonical_headers = %sz,Canonical Request:
%s
----------------------zAWS4-HMAC-SHA256r*rL� zCredential=�,zSignedHeaders=z
Signature=)z
x-amz-dater2zx-amz-content-sha256zsignature-v4 headers: %s)rrr3r!�datetimeZutcnowZstrftimerMr
r �lstrip�typerr	�	hexdigestrr�splitr%rr8r�joinr"r#�update)r9rPr:rZregionr;�bodyZserviceZcfgr3r!�tZamzdateZ	datestampZsigning_keyr=Zpayload_hashZcanonical_headersZsigned_headersr<Zcanonical_headers_str�k�vZcanonical_request�	algorithmZcredential_scoper&r'Zauthorization_headerr>rrr�sign_request_v4�sV



,,0
r`cs�|�}|dkr6xnt�fdd�d�D]}|j|�q"WnH�j|�|}x8|dkr|�jtd|��}|sdP|t|�8}|j|�qFW|S)Ncs
�jd�S)Ni )�readr)�	file_descrr�<lambda>sz*checksum_file_descriptor.<locals>.<lambda>rOri )�iterrZ�seekra�min�len)rb�offset�sizeZ	hash_func�hash�chunk�	size_leftr)rbr�checksum_file_descriptors

rmZchecksum_file_streamcCs@t|t�st|||t�Stt|�d��}t|||t�SQRXdS)N�rb)�
isinstancerrmr�openr)�filerhri�fprrr�checksum_sha256_file s
rscCs4t�}|dkr|j|�n|j||||��|S)N)rrZ)�bufferrhrirjrrr�checksum_sha256_buffer,s
rucCs@tt|��}t|j��}t|�}|ddkr8|dd�}t|�S)Nrr/r���rv)rrrr$r	)r[�mZ	base64md5rrr�generate_content_md56srxc
CsHt�}tt|�d��&}x|jd�}|s(P|j|�qWWdQRX|j�S)Nrn� ii�)rrprrarZrW)�filename�hrr�datarrr�
hash_file_md5@s
r}cCsjt�}|}|dkrX|j|�xD|dkrT|jt||��}|s<P|j|�|t|�8}qWn
|j|�|j�S)Nrr)rrerarfrZrgrW)rtZmfilerhZ
chunk_sizeZ
send_chunkZmd5_hashrlr|rrr�calculateChecksumMs



r~)FN)r)r*NN)r)rr*NrNNrO)rN)rN)+Z
__future__r�sysr"�base64rr�ImportErrorrrr,rZ	BaseUtilsrr	r
rrZUtilsr
rrrrTZhashlibrr�__all__r �appendr(r?rDrCrKrMr`rmrsrurxr}r~rrrr�<module>
sR



1

"

>