HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.29
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/cryptography/__pycache__/fernet.cpython-310.pyc
o

�N�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�G/opt/saltstack/salt/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,r5r7rAZpadded_datarE�
ciphertextZbasic_parts�hZhmacrrrr6:s,
������
zFernet._encrypt_from_parts�token�ttl�
int | NonecCs:t�|�\}}|durd}n|tt���f}|�|||�Sr.)r�_get_unverified_token_datar1r2�
_decrypt_data)r#rJrK�	timestampr,�	time_inforrr�decryptSs
zFernet.decryptcCs0|durtd��t�|�\}}|�||||f�S)Nz6decrypt_at_time() can only be used with a non-None ttl)rrrMrN)r#rJrKr5rOr,rrr�decrypt_at_time[s�zFernet.decrypt_at_timecCst�|�\}}|�|�|Sr.)rrM�_verify_signature)r#rJrOr,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)rJr,rOrrrrMks�z!Fernet._get_unverified_token_datacCsNt|jt���}|�|dd��z|�|dd��WdSty&t�w)N���)r
r!rrGrBZverifyrr)r#r,rIrrrrS~s�zFernet._verify_signaturerOrP�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)NrW�r])r�_MAX_CLOCK_SKEWrSrrr?r"r	rD�	decryptorrBrCrrr>r@�unpadder)r#r,rOrPrKr5r7rHraZplaintext_paddedrbZunpaddedrrrrN�s8
��
�
��zFernet._decrypt_datar.)rrrrrr)rr&)r,r&rr&)r,r&r5r1rr&)r,r&r5r1r7r&rr&)rJrrKrLrr&)rJrrKr1r5r1rr&)rJrrr1)rJrrrU)r,r&rr)r,r&rOr1rPr^rr&)rr
rr%�classmethodr+r3r0r6rQrRrT�staticmethodrMrSrNrrrrrs�






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#rfrrrr%�s�
zMultiFernet.__init__�msgr&rcCr-r.r/)r#rjrrrr3�r4zMultiFernet.encryptr5r1cCs|jd�||�S)Nr)rir0)r#rjr5rrrr0�szMultiFernet.encrypt_at_timerc	Csbt�|�\}}|jD]}z
|�||d�}WntyYq
wt�t�d�}|jd�|||�S)Nrr)rrMrirNrr(r)r6)r#rjrOr,�f�pr7rrr�rotate�s
�
zMultiFernet.rotateNrKrLc	Cs4|jD]}z	|�||�WStyYqwt�r.)rirQr)r#rjrKrkrrrrQ�s
�zMultiFernet.decryptc	Cs6|jD]}z
|�|||�WStyYqwt�r.)rirRr)r#rjrKr5rkrrrrR�s
�zMultiFernet.decrypt_at_time)rfrg)rjr&rr&)rjr&r5r1rr&)rjrrr&r.)rjrrKrLrr&)rjrrKr1r5r1rr&)	rr
rr%r3r0rmrQrRrrrrre�s



re)Z
__future__rrrr(r2�typingZcryptographyrZcryptography.exceptionsrZcryptography.hazmat.primitivesrrZ&cryptography.hazmat.primitives.ciphersrrr	Z#cryptography.hazmat.primitives.hmacr
�	Exceptionrr`rrerrrr�<module>s