HEX
Server: Apache
System: Linux 185.122.168.184.host.secureserver.net 5.14.0-570.60.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Nov 5 05:00:59 EST 2025 x86_64
User: barbeatleanalyti (1024)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //var/opt/nydus/ops/cryptography/__pycache__/fernet.cpython-39.pyc
a

�,�h��@s�ddlZddlZddlZddlZddlZddlmZddlmZddl	m
Z
mZddlm
Z
mZmZddlmZGdd�de�Zd	ZGd
d�d�ZGdd
�d
�ZdS)�N)�utils)�InvalidSignature)�hashes�padding)�Cipher�
algorithms�modes)�HMACc@seZdZdS)�InvalidTokenN)�__name__�
__module__�__qualname__�rr�F/opt/nydus/tmp/pip-target-wkfpz8uv/lib64/python/cryptography/fernet.pyr
sr
�<c@seZdZd!ejeefejd�dd�Ze	ed�dd��Z
eed�d	d
�Zeeed�dd
�Z
eeeed�dd�Zd"eejeed�dd�Zeeeed�dd�Zeed�dd�Zeeejeefd�dd��Zedd�dd�Zeeejejeefed�dd �ZdS)#�FernetN)�key�backendc
Cstzt�|�}Wn0tjy>}ztd�|�WYd}~n
d}~00t|�dkrTtd��|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__)�returncCst�t�d��S)Nr)r�urlsafe_b64encode�os�urandom)�clsrrr�generate_key.szFernet.generate_key)�datar!cCs|�|tt����S�N��encrypt_at_time�int�time)rr'rrr�encrypt2szFernet.encrypt)r'�current_timer!cCst�d�}|�|||�S)Nr)r#r$�_encrypt_from_parts)rr'r.�ivrrrr*5s
zFernet.encrypt_at_time)r'r.r0r!cCs�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�finalizerrr�CBC�	encryptor�to_bytesr	rr�SHA256rr")rr'r.r0r:Zpadded_datar>�
ciphertextZbasic_parts�h�hmacrrrr/9s(
�����
zFernet._encrypt_from_parts)�token�ttlr!cCs:t�|�\}}|durd}n|tt���f}|�|||�Sr()r�_get_unverified_token_datar+r,�
_decrypt_data)rrDrE�	timestampr'�	time_inforrr�decryptRs
zFernet.decrypt)rDrEr.r!cCs0|durtd��t�|�\}}|�||||f�S)Nz6decrypt_at_time() can only be used with a non-None ttl)rrrFrG)rrDrEr.rHr'rrr�decrypt_at_timeZs�zFernet.decrypt_at_time)rDr!cCst�|�\}}|�|�|Sr()rrF�_verify_signature)rrDrHr'rrr�extract_timestampds
zFernet.extract_timestampc	Cszt�d|�zt�|�}Wnttjfy6t�Yn0|rH|ddkrLt�t|�dkr\t�t	j
|dd�dd�}||fS)NrDr��	�r3)r5)rr6rr�	TypeErrorrrr
rr+�
from_bytes)rDr'rHrrrrFjs
z!Fernet._get_unverified_token_datacCsTt|jt���}|�|dd��z|�|dd��WntyNt�Yn0dS)N���)r	rrr@r;�verifyrr
)rr'rBrrrrL{szFernet._verify_signature)r'rHrIr!cCs�|dur0|\}}|||kr t�|t|kr0t�|�|�|dd�}|dd�}tt�|j�t�|���	�}|�
|�}	z|	|��7}	Wnty�t�Yn0t
�tjj���}
|
�
|	�}z||
��7}Wnty�t�Yn0|S)NrO�rS)r
�_MAX_CLOCK_SKEWrLrrr8rrr=�	decryptorr;r<rrr7r9�unpadder)rr'rHrIrEr.r0rArWZplaintext_paddedrXZunpaddedrrrrG�s0
�



zFernet._decrypt_data)N)N)rrr
�typing�Union�bytes�str�Anyr �classmethodr&r-r+r*r/�OptionalrJrKrM�staticmethod�TuplerFrLrGrrrrrs2���	�

�rc@s�eZdZejed�dd�Zeed�dd�Zee	ed�dd	�Z
eed�d
d�Zdeeje	ed
�dd�Z
ee	e	ed�dd�ZdS)�MultiFernet)�fernetscCst|�}|std��||_dS)Nz1MultiFernet requires at least one Fernet instance)�listr�_fernets)rrcrrrr �s�zMultiFernet.__init__)�msgr!cCs|�|tt����Sr(r))rrfrrrr-�szMultiFernet.encrypt)rfr.r!cCs|jd�||�S)Nr)rer*)rrfr.rrrr*�szMultiFernet.encrypt_at_timec	Csht�|�\}}|jD]0}z|�||d�}WqJWqtyBYq0qt�t�d�}|jd�|||�S)Nrr)rrFrerGr
r#r$r/)rrfrHr'�f�pr0rrr�rotate�s


zMultiFernet.rotateN)rfrEr!c	Cs:|jD]*}z|�||�WSty.Yq0qt�dSr()rerJr
)rrfrErgrrrrJ�s
zMultiFernet.decrypt)rfrEr.r!c	Cs<|jD],}z|�|||�WSty0Yq0qt�dSr()rerKr
)rrfrEr.rgrrrrK�s
zMultiFernet.decrypt_at_time)N)rrr
rY�Iterablerr r[r-r+r*rir_rJrKrrrrrb�s	�rb)rrr#r,rYZcryptographyrZcryptography.exceptionsrZcryptography.hazmat.primitivesrrZ&cryptography.hazmat.primitives.ciphersrrrZ#cryptography.hazmat.primitives.hmacr	�	Exceptionr
rVrrbrrrr�<module>s