HEX
Server: LiteSpeed
System: Linux shams.tasjeel.ae 5.14.0-611.5.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Nov 11 08:09:09 EST 2025 x86_64
User: infowars (1469)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: //usr/lib64/python3.9/site-packages/borg/crypto/__pycache__/file_integrity.cpython-39.opt-1.pyc
a

HZ�h� �@s�ddlZddlZddlZddlZddlmZddlmZddlm	Z	ddl
mZe	�ZGdd�d�ZGd	d
�d
e�Z
Gdd�de
�ZGd
d�de
�ZejeejeiZGdd�de�ZGdd�de�ZGdd�de�ZdS)�N)�compare_digest�)�IntegrityError)�
create_logger)�StreamingXXH64c@sTeZdZdd�Zdd�Zdd�Zejfdd�Zd	d
�Z	ddd
�Z
dd�Zdd�ZdS)�FileLikeWrappercCs|j��|S�N)�fd�	__enter__��self�r
�@/usr/lib64/python3.9/site-packages/borg/crypto/file_integrity.pyr
s
zFileLikeWrapper.__enter__cCs|j�|||�dSr)r	�__exit__�r�exc_type�exc_val�exc_tbr
r
rrszFileLikeWrapper.__exit__cCs
|j��Sr)r	�tellrr
r
rrszFileLikeWrapper.tellcCs|j�||�Sr)r	�seek)r�offset�whencer
r
rrszFileLikeWrapper.seekcCs|j�|�Sr)r	�write�r�datar
r
rrszFileLikeWrapper.writeNcCs|j�|�Sr)r	�read)r�nr
r
rrszFileLikeWrapper.readcCs|j��dSr)r	�flushrr
r
rr"szFileLikeWrapper.flushcCs
|j��Sr)r	�filenorr
r
rr%szFileLikeWrapper.fileno)N)
�__name__�
__module__�__qualname__r
rr�io�SEEK_SETrrrrrr
r
r
rrs
rcsjeZdZdZdZdZdd�Z�fdd�Z�fdd�Zd�fd	d
�	Z	dd�Z
ed
�dd�Zddd�Z
�ZS)�FileHashingWrappera'
    Wrapper for file-like objects that computes a hash on-the-fly while reading/writing.

    WARNING: Seeks should only be used to query the size of the file, not
    to skip data, because skipped data isn't read and not hashed into the digest.

    Similarly skipping while writing to create sparse files is also not supported.

    Data has to be read/written in a symmetric fashion, otherwise different
    digests will be generated.

    Note: When used as a context manager read/write operations outside the enclosed scope
    are illegal.
    NcCs||_||_|��|_dSr)r	�writing�FACTORY�hash)r�
backing_fdrr
r
r�__init__<szFileHashingWrapper.__init__cs$|dur|��t��|||�dSr)�hash_length�superrr��	__class__r
rrAszFileHashingWrapper.__exit__cst��|�}|j�|�|S)zI
        Write *data* to backing file and update internal state.
        )r+rr'�update)rrrr,r
rrFszFileHashingWrapper.writecst��|�}|j�|�|S)zf
        Read *data* from backing file (*n* has the usual meaning) and update internal state.
        )r+rr'r.)rrrr,r
rrNszFileHashingWrapper.readcCs
|j��S)zn
        Return current digest bytes as hex-string.

        Note: this can be called multiple times.
        )r'�	hexdigestrr
r
rr/VszFileHashingWrapper.hexdigest�rcCs|j�|�dSr)r'r.rr
r
rr.^szFileHashingWrapper.updateFcCs.|r|�dtj�|j�t|������dS)Nr)rr"�SEEK_ENDr'r.�strr�encode)r�seek_to_endr
r
rr*aszFileHashingWrapper.hash_length)N)F)rr r!�__doc__�	ALGORITHMr&r)rrrr/�bytesr.r*�
__classcell__r
r
r,rr$)sr$c@seZdZdZejZdS)�SHA512FileHashingWrapperZSHA512N)rr r!r6�hashlibZsha512r&r
r
r
rr9hsr9c@seZdZdZeZdS)�XXH64FileHashingWrapperZXXH64N)rr r!r6rr&r
r
r
rr;msr;c@seZdZdZdS)�FileIntegrityErrorzFile failed integrity check: {}N)rr r!r5r
r
r
rr<xsr<c@s\eZdZddd�Zdd�Zddd�Zeeed�d	d
��Zddd
�Z	dd�Z
ed�dd�ZdS)�IntegrityCheckedFileNc
Cs�||_||_|rdnd}|p$t||�|_|du|_i|_t}|sb|�||�}|rb|\}	|_t|	}||j|d�|_	|_
|�|�dS)N�wb�rb)r(r)�pathr%�open�file_fd�file_opened�digestsr;�load_integrity_data�SUPPORTED_ALGORITHMSr	�hasher�
hash_filename)
rr@r�filename�override_fd�integrity_data�modeZhash_clsZalgorithm_and_digests�	algorithmr
r
rr)}s

zIntegrityCheckedFile.__init__cCs|dur|�||�SdSr)�parse_integrity_data�rr@rKr
r
rrE�sz(IntegrityCheckedFile.load_integrity_datacCs>tj�|p|j�}|j�dt|����|j�|���dS)N�%10d)�osr@�basenamerGr.�lenr3)rrIr
r
rrH�sz"IntegrityCheckedFile.hash_filename)r@rc
Cs�zHt�|�}|d}|tvr0t�d||�WdS|d}|d||fWStttfy�}z"t�d||�t|��WYd}~n
d}~00dS)NrMz3Cannot verify integrity of %s: Unknown algorithm %rrD�finalz)Could not parse integrity data for %s: %s)	�json�loadsrF�logger�warning�
ValueError�	TypeError�KeyErrorr<)�clsr@rrKrMrD�er
r
rrN�s

z)IntegrityCheckedFile.parse_integrity_dataFcCs�|js|jsdS|j�dt|����|j�|���|jj|d�|j��}|jrb||j|<n$|jr�t|j�	|d�|�s�t
|j��dS)NrP)r4�)r%rDrGr.rSr3r*r/r�getr<r@)rZpartname�is_finalZdigestr
r
r�	hash_part�s
zIntegrityCheckedFile.hash_partcCs�|du}z6|s|jddd�|j�|||�W|jrR|j��n|jrP|j��0|rZdS|jr~|�t�	|jj
|jd���n|jr�t�
d|j�dS)NrTT)r`)rMrDzVerified integrity of %s)rarGrrCrB�closer%�store_integrity_datarU�dumpsr6rDrW�debugr@)rrrr�	exceptionr
r
rr�s$��zIntegrityCheckedFile.__exit__r0cCs
||_dSr)rKrr
r
rrc�sz)IntegrityCheckedFile.store_integrity_data)NNN)N)F)rr r!r)rErH�classmethodr2rNrarrcr
r
r
rr=|s


r=csLeZdZd
�fdd�	Zdd�Zedd��Zedd	��Ze	d
�dd�Z
�ZS)�DetachedIntegrityCheckedFileNcsHt��||||�|p tj�|�}tj�|�}|�tj�||��|_dSr)	r+r)rQr@rR�dirname�integrity_file_path�join�output_integrity_file)rr@rrIrJZ
output_dirr,r
rr)�sz%DetachedIntegrityCheckedFile.__init__cCs|�|j�Sr)�read_integrity_filer@rOr
r
rrE�sz0DetachedIntegrityCheckedFile.load_integrity_datacCs|dS)Nz
.integrityr
)r@r
r
rrj�sz0DetachedIntegrityCheckedFile.integrity_file_pathc
Cs�zDt|�|���"}|�||���Wd�WS1s80YWnVtybt�d|�Yn:ty�}z"t�d||�t	|��WYd}~n
d}~00dS)NzNo integrity file found for %sz(Could not read integrity file for %s: %s)
rArjrNr�FileNotFoundErrorrW�info�OSErrorrXr<)r\r@r	r]r
r
rrm�s4z0DetachedIntegrityCheckedFile.read_integrity_filer0cCs:t|jd��}|�|�Wd�n1s,0YdS)N�w)rArlr)rrr	r
r
rrc�sz1DetachedIntegrityCheckedFile.store_integrity_data)NN)rr r!r)rE�staticmethodrjrgrmr2rcr8r
r
r,rrh�s


rh)r:r"rUrQZhmacrZhelpersrrWrZalgorithms.checksumsrrr$r9r;r6rFr<r=rhr
r
r
r�<module>s$?�Z