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__/nonces.cpython-39.opt-1.pyc
a

HZ�h�@svddlZddlZddlmZddlmZddlmZddlmZddl	m
Z
dd	lmZm
Z
d
ZdZGdd
�d
�ZdS)�N)�	unhexlify�)�get_security_dir)�
bin_to_hex)�SaveFile)�InvalidRPCMethod�)�
bytes_to_long�
long_to_bytesl����ic@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�NonceManagercCs.||_d|_||_tj�t|jj�d�|_dS)N�nonce)	�
repository�end_of_nonce_reservation�manifest_nonce�os�path�joinrZid_str�
nonce_file)�selfr
r�r�8/usr/lib64/python3.9/site-packages/borg/crypto/nonces.py�__init__szNonceManager.__init__cCsZz@t|j��"}tt|����Wd�WS1s40YWntyTYdS0dS�N)�openrr	r�read�FileNotFoundError)r�fdrrr�get_local_free_nonces
4z!NonceManager.get_local_free_noncecCsX|��|krtd��t|jdd��"}|�tt|���Wd�n1sJ0YdS)Nz6nonce space reservation with mismatched previous stateF)Zbinary)r�	Exceptionrr�writerr
)r�next_unreserved�start_noncerrrr�commit_local_nonce_reservationsz+NonceManager.commit_local_nonce_reservationcCsFz|j��WSty@tj�d�dd�|_dd�|_YdS0dS)NzTPlease upgrade to borg version 1.1+ on the server for safer AES-CTR nonce handling.
cSsdSrrrrrr�<lambda>*�z2NonceManager.get_repo_free_nonce.<locals>.<lambda>cSsdSrr)r r!rrrr#+r$)r
Zget_free_noncer�sys�stderrr�get_repo_free_nonce�commit_repo_nonce_reservation)rrrrr'$s

z NonceManager.get_repo_free_noncecCs|j�||�dSr)r
Zcommit_nonce_reservation)rr r!rrrr(.sz*NonceManager.commit_repo_nonce_reservationcCsx|jr|}|||jkr|S|��}|��}tdd�|||j|jfD��}||t}|�||�|�||�||_|S)a�
        Call this before doing encryption, give current, yet unused, integer IV as <nonce>
        and the amount of subsequent (counter-like) IVs needed as <nonce_space_needed>.
        Return value is the IV (counter) integer you shall use for encryption.

        Note: this method may return the <nonce> you gave, if a reservation for it exists or
              can be established, so make sure you give a unused nonce.
        css|]}|dur|VqdSrr)�.0�xrrr�	<genexpr>Qr$z2NonceManager.ensure_reservation.<locals>.<genexpr>)rr'r�maxr�NONCE_SPACE_RESERVATIONr(r")rrZnonce_space_neededZ
next_nonceZrepo_free_nonceZlocal_free_nonceZfree_nonce_spaceZreservation_endrrr�ensure_reservation1szNonceManager.ensure_reservationN)	�__name__�
__module__�__qualname__rrr"r'r(r.rrrrrs
r)rr%ZbinasciirZhelpersrr�platformrZremoterZ	low_levelr	r
ZMAX_REPRESENTABLE_NONCEr-rrrrr�<module>s