HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/cryptography/__pycache__/fernet.cpython-310.pyc
o

;j3�@s�ddlmZddlZddlZddlZddlZddlZddlmZddl	m
Z
ddlmZddl
mZmZddlmZmZmZddlmZGd	d
�d
e�ZdZGdd
�d
�ZGdd�d�ZdS)�)�annotationsN)�Iterable)�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.pyrsr�<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_key0szFernet.generate_key�datacC�|�|tt����S�N��encrypt_at_time�int�time)r$r-rrr�encrypt4�zFernet.encrypt�current_timer2cCst�d�}|�|||�S)Nr)r)r*�_encrypt_from_parts)r$r-r6�ivrrrr17s
zFernet.encrypt_at_timer8cCs�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_bytesrr"r�SHA256rr()r$r-r6r8rBZpadded_datarF�
ciphertextZbasic_parts�hZhmacrrrr7;s,
������
zFernet._encrypt_from_parts�token�ttl�
int | NonecCs:t�|�\}}|durd}n|tt���f}|�|||�Sr/)r�_get_unverified_token_datar2r3�
_decrypt_data)r$rKrL�	timestampr-�	time_inforrr�decryptTs
zFernet.decryptcCs0|durtd��t�|�\}}|�||||f�S)Nz6decrypt_at_time() can only be used with a non-None ttl)r rrNrO)r$rKrLr6rPr-rrr�decrypt_at_time\s�zFernet.decrypt_at_timecCst�|�\}}|�|�|Sr/)rrN�_verify_signature)r$rKrPr-rrr�extract_timestampfs
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'�	TypeErrorrrrrrr!r2�
from_bytes)rKr-rPrrrrNls�z!Fernet._get_unverified_token_datacCsNt|jt���}|�|dd��z|�|dd��WdSty&t�w)N���)rr"rrHrCZverifyrr)r$r-rJrrrrTs�zFernet._verify_signaturerPrQ�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)NrX�r^)r�_MAX_CLOCK_SKEWrTrr	r@r#r
rE�	decryptorrCrDr rr?rA�unpadder)r$r-rPrQrLr6r8rIrbZplaintext_paddedrcZunpaddedrrrrO�s8
��
�
��zFernet._decrypt_datar/)rrrrrr)rr')r-r'rr')r-r'r6r2rr')r-r'r6r2r8r'rr')rKrrLrMrr')rKrrLr2r6r2rr')rKrrr2)rKrrrV)r-r'rr)r-r'rPr2rQr_rr')r
rrr&�classmethodr,r4r1r7rRrSrU�staticmethodrNrTrOrrrrrs�






rc@sTeZdZddd�Zddd	�Zddd
�Zddd�Zdddd�Zd dd�Zd!dd�Z	dS)"�MultiFernet�fernets�Iterable[Fernet]cCst|�}|s
td��||_dS)Nz1MultiFernet requires at least one Fernet instance)�listr �_fernets)r$rgrrrr&�s�
zMultiFernet.__init__�msgr'rcCr.r/r0)r$rkrrrr4�r5zMultiFernet.encryptr6r2cCs|jd�||�S)Nr)rjr1)r$rkr6rrrr1�szMultiFernet.encrypt_at_timerc	Csbt�|�\}}|jD]}z
|�||d�}WntyYq
wt�t�d�}|jd�|||�S)Nrr)rrNrjrOrr)r*r7)r$rkrPr-�f�pr8rrr�rotate�s
�
zMultiFernet.rotateNrLrMc	Cs4|jD]}z	|�||�WStyYqwt�r/)rjrRr)r$rkrLrlrrrrR�s
�zMultiFernet.decryptc	Cs6|jD]}z
|�|||�WStyYqwt�r/)rjrSr)r$rkrLr6rlrrrrS�s
�zMultiFernet.decrypt_at_timec	Cs2|jD]}z|�|�WStyYqwt�r/)rjrUr)r$rkrlrrrrU�s
�zMultiFernet.extract_timestamp)rgrh)rkr'rr')rkr'r6r2rr')rkrrr'r/)rkrrLrMrr')rkrrLr2r6r2rr')rkrrr2)
r
rrr&r4r1rnrRrSrUrrrrrf�s





rf)�
__future__rrrr)r3�typing�collections.abcrZcryptographyrZcryptography.exceptionsrZcryptography.hazmat.primitivesrrZ&cryptography.hazmat.primitives.ciphersrr	r
Z#cryptography.hazmat.primitives.hmacr�	Exceptionrrarrfrrrr�<module>s"