관리-도구
편집 파일: fernet.cpython-39.opt-1.pyc
a �����a����������������������@���s����d�dl�Z�d�dlZd�dlZd�dlZd�dlZd�dlZd�dlmZ�d�dlm Z �d�dl mZmZ�d�dl mZmZmZ�d�dlmZ�G�dd��de�Zd ZG�d d��de�ZG�dd ��d e�ZdS�)�����N)�utils)�InvalidSignature)�hashes�padding)�Cipher� algorithms�modes)�HMACc�������������������@���s���e�Zd�ZdS�)�InvalidTokenN)�__name__� __module__�__qualname__��r���r����9/usr/lib64/python3.9/site-packages/cryptography/fernet.pyr ������s���r ����<���c�������������������@���s��e�Zd�Zd!ejeef�ejd�dd�Ze ed�dd��Z eed�d d �Zeeed�dd �Z eeeed�dd�Zd"eeje�ed�dd�Zeeeed�dd�Zeed�dd�Zeeejeef�d�dd��Zedd�dd�Zeeejejeef��ed�dd �ZdS�)#�FernetN)�key�backendc�����������������C���s>���t��|�}t|�dkrtd��|d�d��|�_|dd���|�_d�S�)N� ���z4Fernet key must be 32 url-safe base64-encoded bytes.����)�base64�urlsafe_b64decode�len� ValueError�_signing_key�_encryption_key)�selfr���r���r���r���r����__init__���s���� �zFernet.__init__)�returnc�����������������C���s���t��t�d��S�)Nr���)r����urlsafe_b64encode�os�urandom)�clsr���r���r����generate_key*���s����zFernet.generate_key)�datar���c�����������������C���s���|���|tt�����S��N��encrypt_at_time�int�time)r���r$���r���r���r����encrypt.���s����zFernet.encrypt)r$����current_timer���c�����������������C���s���t��d�}|��|||�S�)Nr���)r ���r!����_encrypt_from_parts)r���r$���r+����ivr���r���r���r'���1���s���� zFernet.encrypt_at_time)r$���r+���r-���r���c�����������������C���s����t��d|��t�tjj����}|�|�|� ���}t t�|�j�t� |�����}|�|�|� ���}dt�d|��|�|�}t|�jt����} | �|��| � ��} t�|| ��S�)Nr$���������>Q)r����_check_bytesr����PKCS7r����AES� block_size�padder�update�finalizer���r���r����CBC� encryptor�struct�packr ���r���r����SHA256r���r���)r���r$���r+���r-���r4���Zpadded_datar8���� ciphertextZbasic_parts�hZhmacr���r���r���r,���5���s���� �� zFernet._encrypt_from_parts)�token�ttlr���c�����������������C���s:���t��|�\}}|d�u�rd�}n|tt����f}|��|||�S�r%���)r����_get_unverified_token_datar(���r)���� _decrypt_data)r���r>���r?���� timestampr$���� time_infor���r���r����decryptK���s ����zFernet.decrypt)r>���r?���r+���r���c�����������������C���s0���|d�u�rt�d��t�|�\}}|��||||f�S�)Nz6decrypt_at_time() can only be used with a non-None ttl)r���r���r@���rA���)r���r>���r?���r+���rB���r$���r���r���r����decrypt_at_timeS���s�����zFernet.decrypt_at_time)r>���r���c�����������������C���s���t��|�\}}|��|��|S�r%���)r���r@����_verify_signature)r���r>���rB���r$���r���r���r����extract_timestamp]���s���� zFernet.extract_timestampc�������������� ���C���s����t��d|���zt�|��}W�n�ttjfy6���t�Y�n0�|rH|d�dkrLt�zt� d|dd���\}W�n�tj y~���t�Y�n0�||fS�)Nr>���r�������r/�������� ���)r���r0���r���r���� TypeError�binascii�Errorr ���r9����unpack�error)r>���r$���rB���r���r���r���r@���c���s���� z!Fernet._get_unverified_token_datac�����������������C���sT���t�|�jt����}|�|d�d����z|�|dd�����W�n�tyN���t�Y�n0�d�S�)N���)r ���r���r���r;���r5���Zverifyr���r ���)r���r$���r=���r���r���r���rF���t���s����zFernet._verify_signature)r$���rB���rC���r���c�����������������C���s����|d�ur0|\}}||�|k�r t��|t�|k�r0t��|��|��|dd��}|dd��}tt�|�j�t�|��� ��}|� |�} z| |���7�} W�n�ty����t��Y�n0�t �tjj����} | � | �}z|| ���7�}W�n�ty����t��Y�n0�|S�)NrJ�������rP���)r ����_MAX_CLOCK_SKEWrF���r���r���r2���r���r���r7���� decryptorr5���r6���r���r���r1���r3����unpadder)r���r$���rB���rC���r?���r+���r-���r<���rS���Zplaintext_paddedrT���Zunpaddedr���r���r���rA���|���s0���� � zFernet._decrypt_data)N)N)r���r���r ����typing�Union�bytes�str�Anyr����classmethodr#���r*���r(���r'���r,����OptionalrD���rE���rG����staticmethod�Tupler@���rF���rA���r���r���r���r���r������s2������� � �r���c�������������������@���s����e�Zd�Zeje�d�dd�Zeed�dd�Zee ed�dd �Z eed�d d�Zdeeje �ed �dd�Z ee e ed�dd�ZdS�)�MultiFernet)�fernetsc�����������������C���s���t�|�}|std��||�_d�S�)Nz1MultiFernet requires at least one Fernet instance)�listr����_fernets)r���r_���r���r���r���r�������s�����zMultiFernet.__init__)�msgr���c�����������������C���s���|���|tt�����S�r%���r&���)r���rb���r���r���r���r*�������s����zMultiFernet.encrypt)rb���r+���r���c�����������������C���s���|�j�d��||�S�)Nr���)ra���r'���)r���rb���r+���r���r���r���r'�������s����zMultiFernet.encrypt_at_timec�������������� ���C���sh���t��|�\}}|�jD�]0}z|�||d��}W��qJW�q�tyB���Y�q0�qt�t�d�}|�jd��|||�S�)Nr���r���)r���r@���ra���rA���r ���r ���r!���r,���)r���rb���rB���r$����f�pr-���r���r���r����rotate����s���� zMultiFernet.rotateN)rb���r?���r���c�������������� ���C���s:���|�j�D�]*}z|�||�W���S��ty.���Y�q0�qt�d�S�r%���)ra���rD���r ���)r���rb���r?���rc���r���r���r���rD�������s���� zMultiFernet.decrypt)rb���r?���r+���r���c�������������� ���C���s<���|�j�D�],}z|�|||�W���S��ty0���Y�q0�qt�d�S�r%���)ra���rE���r ���)r���rb���r?���r+���rc���r���r���r���rE�������s���� zMultiFernet.decrypt_at_time)N)r���r���r ���rU����Iterabler���r���rW���r*���r(���r'���re���r[���rD���rE���r���r���r���r���r^�������s��� �r^���)r���rL���r ���r9���r)���rU���Zcryptographyr���Zcryptography.exceptionsr���Zcryptography.hazmat.primitivesr���r���Z&cryptography.hazmat.primitives.ciphersr���r���r���Z#cryptography.hazmat.primitives.hmacr ���� Exceptionr ���rR����objectr���r^���r���r���r���r����<module>���s����