HEX
Server: LiteSpeed
System: Linux server.nevid-deploma.com 4.18.0-553.111.1.lve.el8.x86_64 #1 SMP Fri Mar 13 13:42:17 UTC 2026 x86_64
User: smilepac (1037)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //opt/cppython/lib/python3.8/site-packages/cryptography/__pycache__/fernet.cpython-38.pyc
U

KD�g�@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�@/opt/cppython/lib/python3.8/site-packages/cryptography/fernet.pyrsr�<c@s�eZdZd)dddd�dd�Zedd	�d
d��Zddd�d
d�Zdddd�dd�Zddddd�dd�Zd*dddd�dd�Z	ddddd�dd�Z
ddd�dd�Zedd d�d!d"��Z
ddd�d#d$�Zddd%dd&�d'd(�ZdS)+�FernetN�bytes | strz
typing.Any�None)�key�backend�returnc
Csrzt�|�}Wn.tjk
r<}ztd�|�W5d}~XYnXt|�dkrRtd��|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__�bytes)rcCst�t�d��S)Nr)r�urlsafe_b64encode�os�urandom)�clsrrr�generate_key/szFernet.generate_key)�datarcCs|�|tt����S�N��encrypt_at_time�int�time)r"r+rrr�encrypt3szFernet.encryptr/)r+�current_timercCst�d�}|�|||�S)Nr)r'r(�_encrypt_from_parts)r"r+r2�ivrrrr.6s
zFernet.encrypt_at_time)r+r2r4rcCs�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+r2r4r>Zpadded_datarB�
ciphertextZbasic_parts�h�hmacrrrr3:s(
�����
zFernet._encrypt_from_parts�
int | None)�token�ttlrcCs:t�|�\}}|dkrd}n|tt���f}|�|||�Sr,)r�_get_unverified_token_datar/r0�
_decrypt_data)r"rIrJ�	timestampr+�	time_inforrr�decryptSs
zFernet.decrypt)rIrJr2rcCs0|dkrtd��t�|�\}}|�||||f�S)Nz6decrypt_at_time() can only be used with a non-None ttl)rrrKrL)r"rIrJr2rMr+rrr�decrypt_at_time[s�zFernet.decrypt_at_time)rIrcCst�|�\}}|�|�|Sr,)rrK�_verify_signature)r"rIrMr+rrr�extract_timestampes
zFernet.extract_timestampztuple[int, bytes]c	Cs�t|ttf�std��zt�|�}Wnttjfk
rBt�YnX|rT|ddkrXt�t	|�dkrht�t
j|dd�dd�}||fS)Nztoken must be bytes or strr��	�r7)r9)�
isinstance�strr%�	TypeErrorrrrrrrr/�
from_bytes)rIr+rMrrrrKks
z!Fernet._get_unverified_token_datacCsVt|jt���}|�|dd��z|�|dd��Wntk
rPt�YnXdS)N���)r
r rrDr?�verifyrr)r"r+rFrrrrQ~szFernet._verify_signatureztuple[int, int] | None)r+rMrNrcCs�|dk	r0|\}}|||kr t�|t|kr0t�|�|�|dd�}|dd�}tt�|j�t�|���	�}|�
|�}	z|	|��7}	Wntk
r�t�YnXt
�tjj���}
|
�
|	�}z||
��7}Wntk
r�t�YnX|S)NrT�rZ)r�_MAX_CLOCK_SKEWrQrrr<r!r	rA�	decryptorr?r@rrr;r=�unpadder)r"r+rMrNrJr2r4rEr^Zplaintext_paddedr_ZunpaddedrrrrL�s2

�



zFernet._decrypt_data)N)N)rr
rr$�classmethodr*r1r.r3rOrPrR�staticmethodrKrQrLrrrrrs�
rc@s�eZdZdd�dd�Zddd�dd�Zdd	dd
�dd�Zd
dd�dd�Zdd
ddd�dd�Zd
d	d	dd�dd�Zd
d	d�dd�Z	dS)�MultiFernetztyping.Iterable[Fernet])�fernetscCst|�}|std��||_dS)Nz1MultiFernet requires at least one Fernet instance)�listr�_fernets)r"rcrrrr$�s�zMultiFernet.__init__r%)�msgrcCs|�|tt����Sr,r-)r"rfrrrr1�szMultiFernet.encryptr/)rfr2rcCs|jd�||�S)Nr)rer.)r"rfr2rrrr.�szMultiFernet.encrypt_at_timerc	Csjt�|�\}}|jD]2}z|�||d�}WqLWqtk
rDYqXqt�t�d�}|jd�|||�S)Nrr)rrKrerLrr'r(r3)r"rfrMr+�f�pr4rrr�rotate�s


zMultiFernet.rotateNrH)rfrJrc	Cs<|jD],}z|�||�WStk
r0YqXqt�dSr,)rerOr)r"rfrJrgrrrrO�s
zMultiFernet.decrypt)rfrJr2rc	Cs>|jD].}z|�|||�WStk
r2YqXqt�dSr,)rerPr)r"rfrJr2rgrrrrP�s
zMultiFernet.decrypt_at_timec	Cs:|jD]*}z|�|�WStk
r.YqXqt�dSr,)rerRr)r"rfrgrrrrR�s
zMultiFernet.extract_timestamp)N)
rr
rr$r1r.rirOrPrRrrrrrb�s
rb)�
__future__rrrr'r0�typingZcryptographyrZcryptography.exceptionsrZcryptography.hazmat.primitivesrrZ&cryptography.hazmat.primitives.ciphersrrr	Z#cryptography.hazmat.primitives.hmacr
�	Exceptionrr]rrbrrrr�<module>s