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__/keymanager.cpython-39.pyc
a

HZ�h@ �@s�ddlZddlZddlZddlmZmZmZddlmZddlm	Z	m
Z
mZmZm
Z
mZddlmZddlmZmZmZmZmZGd	d
�d
e�ZGdd�de�ZGd
d�de�ZGdd�de�Zdd�ZGdd�d�ZdS)�N)�	unhexlify�
a2b_base64�
b2a_base64)�sha256�)�Manifest�NoManifestError�Error�yes�
bin_to_hex�	dash_open)�
Repository�)�
KeyfileKey�KeyfileNotFoundError�RepoKeyNotFoundError�KeyBlobStorage�identify_keyc@seZdZdZdS)�UnencryptedRepoz9Keymanagement not available for unencrypted repositories.N��__name__�
__module__�__qualname__�__doc__�rr�</usr/lib64/python3.9/site-packages/borg/crypto/keymanager.pyr
src@seZdZdZdS)�UnknownKeyTypezKeytype {0} is unknown.Nrrrrrrsrc@seZdZdZdS)�RepoIdMismatchzHThis key backup seems to be for a different backup repository, aborting.Nrrrrrrsrc@seZdZdZdS)�NotABorgKeyFilez-This file is not a borg key backup, aborting.NrrrrrrsrcCs t�}|�|�|��d|�S�N)r�updateZ	hexdigest)�dataZnum�hrrr�sha256_truncateds
r#c@s\eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�
KeyManagercCsd||_d|_d|_z|j�tj�}Wntjy<t�Yn0t	|�}|j
|_|jtjkr`t
��dSr)�
repository�keyblob�keyblob_storage�getrZMANIFEST_IDr
ZObjectNotFoundrrZSTORAGErZ
NO_STORAGEr)�selfr%Z
manifest_data�keyrrr�__init__$s
zKeyManager.__init__cCs�|jtjkr`t|j�}|��}t|��(}d�|��dd��|_	Wd�q�1sT0Yn:|jtj
kr�|j����}|s�|jj
��}t|�d�||_	dS)N�r)r'r�KEYFILErr%Zfind_key�open�join�	readlinesr&�REPOZload_key�decodeZ	_locationZcanonical_pathr)r)�k�target�fd�key_data�locrrr�load_keyblob3s

8
zKeyManager.load_keyblobcCsP|jtjkr,t|j�}|�|�}|�|�n |jtjkrL|j�|j	�
d��dS)Nzutf-8)r'rr-rr%Zget_existing_or_new_target�
store_keyfiler1Zsave_keyr&�encode)r)�argsr3r4rrr�
store_keyblobBs

zKeyManager.store_keyblobcCs<tj�dt|jj��d�}||j7}|j�d�s8|d7}|S)N� �
)r�FILE_IDrr%�idr&�endswith)r)r!rrr�get_keyfile_dataKs

zKeyManager.get_keyfile_datacCs<t|d��}|�|���Wd�n1s.0YdS)N�w)r�writerB)r)r4r5rrrr9RszKeyManager.store_keyfilecCs|durd}|�|�dS)N�-)r9)r)�pathrrr�exportVszKeyManager.exportcCsl|durd}t|d��B}|��}t�dd�}|�d|��d�}|�|�Wd�n1s^0YdS)NrE�wbZborgz
paperkey.htmls</textarea>)rrB�pkgutil�get_data�replacer:rD)r)rFr5r6Zhtmlrrr�	export_qr\szKeyManager.export_qrc
Cs8|durd}dd�}d}t|j�}|d7}t|�dd}t|jj�dd�}t|d�}|d	�|||�||�tt|�d
|d
|�	d�d��7}d
}t|�r�|d7}|dd�}	t|j
ddd�|	d�}
||d�d|t|	���d|
�d�7}|dd�}q�t|d��}|�|�Wd�n1�s*0YdS)NrEcSs>d}d}|D],}|r(|ddkr(|d7}||7}|d7}q|S)Nr,r�r=rr)�s�ret�iZchrrr�groupedjs
z+KeyManager.export_paperkey.<locals>.groupedz:To restore key use borg key import --paper /path/to/repo

zBORG PAPER KEY v1
���zid: {:d} / {} / {} - {}
�/�asciirrr�big��	byteorder�2d�: z - r>rC)
rr&�lenrr%r@r#�format�strr:�to_bytesrrD)r)rFrQrGZbinary�lines�repoidZcomplete_checksum�idxZbinline�checksumr5rrr�export_paperkeyfs.


"�$zKeyManager.export_paperkeycCs�tj}|dt|jj�d}t|jd��H}|�t|��}||krZ|�	|�sTt
��nt��|��|_Wd�n1sx0Y|�
|�dS)Nr=r>�r)rr?rr%r@rrF�readr\�
startswithrrr&r<)r)r;Zfile_idZ
first_liner5Zfile_first_linerrr�import_keyfile�s
(zKeyManager.import_keyfilecCs�zddl}Wnty&td�Yn0t|jj�dd�}�z6td��dd�}|dkrftd�rft	��z|�
d�\}}Wnty�td	�Yq@Yn0z|�
d
�\}}}	Wnty�td�Yq@Yn0t|�
��d�d
�|kr�td�q@zt|�}
Wnt�ytd�Yn0�qq@||k�r.t��d}d}t|d�d��}
|
�dd�}
|
dk�rltd��rlt	��z|
�
d�\}}Wn"t�y�td	�Y�q6Yn0zt|�}Wn$tj�y�td�Y�q6Yn0t|jd
dd�|d
�|k�rtd|�d���q6||7}||
k�r�q(|d7}�q6t|d�|	k�rBtd�q@d�t�t|��d���d|_|�|��qrq@Wnt	�y�td�YdS0dS)Nrz?Note: No line editing available due to missing readline supportrSzid: r=r,zAbort import? [yN]:rEz1each line must contain exactly one '-', try againrUz3the id line must contain exactly two '/', try againrVrz0line checksum did not match, try same line againz#internal error while parsing length�rrZr[z8only characters 0-9 and a-f and '-' are valid, try againrWrXz&line checksum did not match, try line z againrTzIThe overall checksum did not match, retry or enter a blank line to abort.r>z
 - aborted)�readline�ImportError�printrr%r@�inputrKr
�EOFError�split�
ValueErrorr#�lowerr:�intrr�binasciir	r_r/�textwrap�wraprr2r&r<)r)r;rjraZidliner!rcZid_linesZ	id_repoidZid_complete_checksumr`�resultrbZinline�partrrr�import_paperkey�s~





 

zKeyManager.import_paperkeyN)
rrrr+r8r<rBr9rGrLrdrhrxrrrrr$#s	
$r$)rsrIrtrrrZhashlibrZhelpersrrr	r
rrr%r
r*rrrrrrrrrr#r$rrrr�<module>s