HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //snap/certbot/4965/lib/python3.12/site-packages/cryptography/__pycache__/fernet.cpython-312.pyc
�

N�h3����ddlmZddlZddlZddlZddlZddlZddlmZddl	m
Z
ddlmZddl
mZmZddlmZmZmZddlmZGd	�d
e�ZdZGd�d
�ZGd�d�Zy)�)�annotationsN)�Iterable)�utils)�InvalidSignature)�hashes�padding)�Cipher�
algorithms�modes)�HMACc��eZdZy)�InvalidTokenN)�__name__�
__module__�__qualname__����/build/snapcraft-certbot-c9561b03ef7f16aa90eb6754ca5f17a1/parts/certbot/install/lib/python3.12/site-packages/cryptography/fernet.pyrrs��rr�<c��eZdZ	d
					dd�Zedd��Zdd�Zdd�Z								dd�Zd
dd�Z									dd�Z
dd	�Zedd
��Z
dd�Z								dd�Zy)�FernetNc���	tj|�}t|�dk7rt	d��|dd|_|dd|_y#tj$r}t	d�|�d}~wwxYw)Nz4Fernet key must be 32 url-safe base64-encoded bytes.� �)�base64�urlsafe_b64decode�binascii�Error�
ValueError�len�_signing_key�_encryption_key)�self�key�backend�excs    r�__init__zFernet.__init__s{��
	��*�*�3�/�C�
�s�8�r�>��F��
� ���H���"�2�3�x�����~�~�	��F���
��	�s�A�A)�A$�$A)c�R�tjtjd��S)Nr)r�urlsafe_b64encode�os�urandom)�clss r�generate_keyzFernet.generate_key0s���'�'��
�
�2��7�7rc�\�|j|ttj���S�N��encrypt_at_time�int�time)r#�datas  r�encryptzFernet.encrypt4s ���#�#�D�#�d�i�i�k�*:�;�;rc�R�tjd�}|j|||�S)Nr)r*r+�_encrypt_from_parts)r#r4�current_time�ivs    rr1zFernet.encrypt_at_time7s$��
�Z�Z��^���'�'��l�B�?�?rc��tjd|�tjtj
j�j�}|j|�|j�z}tt	j
|j�tj|��j�}|j|�|j�z}d|jdd��z|z|z}t!|j"t%j&��}	|	j|�|	j�}
t)j*||
z�S)Nr4����big)�length�	byteorder)r�_check_bytesr�PKCS7r
�AES�
block_size�padder�update�finalizer	r"r�CBC�	encryptor�to_bytesrr!r�SHA256rr))r#r4r8r9rD�padded_datarH�
ciphertext�basic_parts�h�hmacs           rr7zFernet._encrypt_from_parts;s��	���6�4�(����z�~�~�8�8�9�@�@�B���m�m�D�)�F�O�O�,=�=����N�N�4�/�/�0��I�I�b�M�
��)�+�	��%�%�k�2�Y�5G�5G�5I�I�
�
��#�#�1��#�>�
?��
��
�	�
��"�"�F�M�M�O�4��	������z�z�|���'�'��d�(:�;�;rc��tj|�\}}|�d}n|ttj��f}|j	|||�Sr/)r�_get_unverified_token_datar2r3�
_decrypt_data)r#�token�ttl�	timestampr4�	time_infos      r�decryptzFernet.decryptTsJ�� �;�;�E�B��	�4��;��I��c�$�)�)�+�.�/�I��!�!�$�	�9�=�=rc�v�|�td��tj|�\}}|j||||f�S)Nz6decrypt_at_time() can only be used with a non-None ttl)rrrQrR)r#rSrTr8rUr4s      r�decrypt_at_timezFernet.decrypt_at_time\sI���;��H��
�!�;�;�E�B��	�4��!�!�$�	�C��3F�G�Grc�X�tj|�\}}|j|�|Sr/)rrQ�_verify_signature)r#rSrUr4s    r�extract_timestampzFernet.extract_timestampfs*�� �;�;�E�B��	�4����t�$��rc�:�t|ttf�std��	t	j
|�}|r|ddk7rt�t|�dkrt�tj|ddd��}||fS#ttjf$rt�wxYw)Nztoken must be bytes or strr��	�r=)r?)�
isinstance�str�bytes�	TypeErrorrrrrrr r2�
from_bytes)rSr4rUs   rrQz!Fernet._get_unverified_token_datals����%�#�u��.��8�9�9�	��+�+�E�2�D��t�A�w�$�����t�9�q�=����N�N�4��!�9��N�>�	��$�����8�>�>�*�	���	�s�A:�: Bc���t|jtj��}|j	|dd�	|j|dd�y#t$rt�wxYw)N���)rr!rrJrE�verifyrr)r#r4rNs   rr[zFernet._verify_signaturesX����"�"�F�M�M�O�4��	����d�s���	�
�H�H�T�#�$�Z� ���	���	�s�A�A#c�t�|�%|\}}||z|krt�|tz|krt�|j|�|dd}|dd}tt	j
|j�tj|��j�}|j|�}		|	|j�z
}	tjtj
j�j!�}
|
j|	�}	||
j�z
}|S#t$rt�wxYw#t$rt�wxYw)Nr_�rg)r�_MAX_CLOCK_SKEWr[r	r
rBr"rrG�	decryptorrErFrrrArC�unpadder)r#r4rUrVrTr8r9rLrl�plaintext_paddedrm�unpaddeds            rrRzFernet._decrypt_data�s7��� � )��C���3���-�"�"��o�-�	�9�"�"����t�$�
�!�B�Z���"�S�\�
���N�N�4�/�/�0�%�)�)�B�-�
�
�)�+�	�%�+�+�J�7��	��	� 2� 2� 4�4���=�=����!:�!:�;�D�D�F���?�?�#3�4��	���)�)�+�+�H�����	���	���	���	�s�D�?D'�D$�'D7r/)r$�bytes | strr%z
typing.Any�return�None)rqrc)r4rcrqrc)r4rcr8r2rqrc)r4rcr8r2r9rcrqrc)rSrprT�
int | Nonerqrc)rSrprTr2r8r2rqrc)rSrprqr2)rSrprqztuple[int, bytes])r4rcrqrr)r4rcrUr2rVztuple[int, int] | Nonerqrc)rrrr'�classmethodr-r5r1r7rWrYr\�staticmethodrQr[rRrrrrrs���#�(�
�(��(�
�	(�&�8��8�<�@�<��<�),�<�27�<�	�<�2>�H� �H�'*�H�:=�H�	�H������$�!��!��!�*�	!�

�!rrc�V�eZdZd	d�Zd
d�Zdd�Zdd�Zd
dd�Z								dd�Zdd�Z	y)�MultiFernetc�B�t|�}|std��||_y)Nz1MultiFernet requires at least one Fernet instance)�listr�_fernets)r#�fernetss  rr'zMultiFernet.__init__�s'���w�-����C��
� ��
rc�\�|j|ttj���Sr/r0)r#�msgs  rr5zMultiFernet.encrypt�s ���#�#�C��T�Y�Y�[�)9�:�:rc�@�|jdj||�S)Nr)rzr1)r#r}r8s   rr1zMultiFernet.encrypt_at_time�s���}�}�Q��/�/��\�B�Brc��tj|�\}}|jD]}	|j||d�}nt�tjd�}|jdj|||�S#t$rY�`wxYw)Nrr)rrQrzrRrr*r+r7)r#r}rUr4�f�pr9s       r�rotatezMultiFernet.rotate�s��� �;�;�C�@��	�4����	�A�
��O�O�D�)�T�:���	���
�Z�Z��^���}�}�Q��3�3�A�y�"�E�E��
 �
��
�s�A:�:	B�BNc�v�|jD]}	|j||�cSt�#t$rY�*wxYwr/)rzrWr)r#r}rTr�s    rrWzMultiFernet.decrypt�sG�����	�A�
��y�y��c�*�*�	�
��� �
��
�s�,�	8�8c�x�|jD]}	|j|||�cSt�#t$rY�+wxYwr/)rzrYr)r#r}rTr8r�s     rrYzMultiFernet.decrypt_at_time�sM�����	�A�
��(�(��c�<�@�@�	�
��� �
��
�s�-�	9�9c�t�|jD]}	|j|�cSt�#t$rY�)wxYwr/)rzr\r)r#r}r�s   rr\zMultiFernet.extract_timestamp�sG�����	�A�
��*�*�3�/�/�	�
��� �
��
�s�+�	7�7)r{zIterable[Fernet])r}rcrqrc)r}rcr8r2rqrc)r}rprqrcr/)r}rprTrsrqrc)r}rprTr2r8r2rqrc)r}rprqr2)
rrrr'r5r1r�rWrYr\rrrrwrw�sG�� �;�C�F�����%(��8;��	��rrw)�
__future__rrrr*r3�typing�collections.abcr�cryptographyr�cryptography.exceptionsr�cryptography.hazmat.primitivesrr�&cryptography.hazmat.primitives.ciphersr	r
r�#cryptography.hazmat.primitives.hmacr�	Exceptionrrkrrwrrr�<module>r�sX��
#�
��	��
�$��4�:�L�L�4�	�9�	���L�L�^5�5r