HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberPanel/lib/python3.10/site-packages/cryptography/__pycache__/fernet.cpython-310.pyc
o

�h(�@s�ddlmZddlZddlZddlZddlZddlZddlmZddl	m
Z
ddlmZm
Z
ddlmZmZmZddlmZGdd	�d	e�Zd
ZGdd�d�ZGd
d�d�ZdS)�)�annotationsN)�utils)�InvalidSignature)�hashes�padding)�Cipher�
algorithms�modes)�HMACc@seZdZdS)�InvalidTokenN)�__name__�
__module__�__qualname__�rr�I/usr/local/CyberPanel/lib/python3.10/site-packages/cryptography/fernet.pyrsr�<c@s�eZdZ	d*d+dd	�Zed,dd��Zd-dd�Zd.dd�Zd/dd�Zd*d0dd�Z	d1dd�Z
d2dd�Zed3d!d"��Z
d4d#d$�Zd5d(d)�ZdS)6�FernetN�key�bytes | str�backend�
typing.Any�return�Nonec
Cshzt�|�}Wntjy}ztd�|�d}~wwt|�dkr$td��|dd�|_|dd�|_dS)Nz4Fernet key must be 32 url-safe base64-encoded bytes.� �)�base64�urlsafe_b64decode�binascii�Error�
ValueError�len�_signing_key�_encryption_key)�selfrr�excrrr�__init__s �����zFernet.__init__�bytescCst�t�d��S)Nr)r�urlsafe_b64encode�os�urandom)�clsrrr�generate_key/szFernet.generate_key�datacC�|�|tt����S�N��encrypt_at_time�int�time)r#r,rrr�encrypt3�zFernet.encrypt�current_timer1cCst�d�}|�|||�S)Nr)r(r)�_encrypt_from_parts)r#r,r5�ivrrrr06s
zFernet.encrypt_at_timer7cCs�t�d|�t�tjj���}|�|�|�	�}t
t�|j�t�
|����}|�|�|�	�}d|jddd�||}t|jt���}	|	�|�|	�	�}
t�||
�S)Nr,����big)�length�	byteorder)r�_check_bytesr�PKCS7r�AES�
block_size�padder�update�finalizerr"r	�CBC�	encryptor�to_bytesr
r!r�SHA256rr')r#r,r5r7rA�padded_datarE�
ciphertext�basic_parts�h�hmacrrrr6:s,
������
zFernet._encrypt_from_parts�token�ttl�
int | NonecCs:t�|�\}}|durd}n|tt���f}|�|||�Sr.)r�_get_unverified_token_datar1r2�
_decrypt_data)r#rMrN�	timestampr,�	time_inforrr�decryptSs
zFernet.decryptcCs0|durtd��t�|�\}}|�||||f�S)Nz6decrypt_at_time() can only be used with a non-None ttl)rrrPrQ)r#rMrNr5rRr,rrr�decrypt_at_time[s�zFernet.decrypt_at_timecCst�|�\}}|�|�|Sr.)rrP�_verify_signature)r#rMrRr,rrr�extract_timestampes
zFernet.extract_timestamp�tuple[int, bytes]c	Cs�t|ttf�std��zt�|�}Wnttjfyt�w|r'|ddkr)t�t	|�dkr1t�t
j|dd�dd�}||fS)Nztoken must be bytes or strr��	�r:)r<)�
isinstance�strr&�	TypeErrorrrrrrr r1�
from_bytes)rMr,rRrrrrPks�z!Fernet._get_unverified_token_datacCsNt|jt���}|�|dd��z|�|dd��WdSty&t�w)N���)r
r!rrGrB�verifyrr)r#r,rKrrrrV~s�zFernet._verify_signaturerRrS�tuple[int, int] | NonecCs�|dur|\}}|||krt�|t|krt�|�|�|dd�}|dd�}tt�|j�t�|���	�}|�
|�}	z|	|��7}	Wn	tyMt�wt
�tjj���}
|
�
|	�}z	||
��7}W|Stynt�w)NrZ�r`)r�_MAX_CLOCK_SKEWrVrrr?r"r	rD�	decryptorrBrCrrr>r@�unpadder)r#r,rRrSrNr5r7rIre�plaintext_paddedrf�unpaddedrrrrQ�s8
��
�
��zFernet._decrypt_datar.)rrrrrr)rr&)r,r&rr&)r,r&r5r1rr&)r,r&r5r1r7r&rr&)rMrrNrOrr&)rMrrNr1r5r1rr&)rMrrr1)rMrrrX)r,r&rr)r,r&rRr1rSrbrr&)rr
rr%�classmethodr+r3r0r6rTrUrW�staticmethodrPrVrQrrrrrs�






rc@sJeZdZddd�Zddd	�Zddd
�Zddd�Zdddd�Zddd�ZdS)�MultiFernet�fernets�typing.Iterable[Fernet]cCst|�}|s
td��||_dS)Nz1MultiFernet requires at least one Fernet instance)�listr�_fernets)r#rlrrrr%�s�
zMultiFernet.__init__�msgr&rcCr-r.r/)r#rprrrr3�r4zMultiFernet.encryptr5r1cCs|jd�||�S)Nr)ror0)r#rpr5rrrr0�szMultiFernet.encrypt_at_timerc	Csbt�|�\}}|jD]}z
|�||d�}WntyYq
wt�t�d�}|jd�|||�S)Nrr)rrProrQrr(r)r6)r#rprRr,�f�pr7rrr�rotate�s
�
zMultiFernet.rotateNrNrOc	Cs4|jD]}z	|�||�WStyYqwt�r.)rorTr)r#rprNrqrrrrT�s
�zMultiFernet.decryptc	Cs6|jD]}z
|�|||�WStyYqwt�r.)rorUr)r#rprNr5rqrrrrU�s
�zMultiFernet.decrypt_at_time)rlrm)rpr&rr&)rpr&r5r1rr&)rprrr&r.)rprrNrOrr&)rprrNr1r5r1rr&)	rr
rr%r3r0rsrTrUrrrrrk�s



rk)�
__future__rrrr(r2�typing�cryptographyr�cryptography.exceptionsr�cryptography.hazmat.primitivesrr�&cryptography.hazmat.primitives.ciphersrrr	�#cryptography.hazmat.primitives.hmacr
�	Exceptionrrdrrkrrrr�<module>s