Your IP : 18.118.10.75


Current Path : /lib64/python3.6/site-packages/cryptography/__pycache__/
Upload File :
Current File : //lib64/python3.6/site-packages/cryptography/__pycache__/fernet.cpython-36.opt-1.pyc

3

l�_\�@s�ddlmZmZmZddlZddlZddlZddlZddlZddl	Z	ddl
mZddlm
Z
ddlmZddlmZmZddlmZmZmZddlmZGd	d
�d
e�ZdZGdd
�d
e�ZGdd�de�ZdS)�)�absolute_import�division�print_functionN)�utils)�InvalidSignature)�_get_backend)�hashes�padding)�Cipher�
algorithms�modes)�HMACc@seZdZdS)�InvalidTokenN)�__name__�
__module__�__qualname__�rr�/usr/lib64/python3.6/fernet.pyrsr�<c@speZdZddd�Zedd��Zdd�Zdd	�Zd
d�Zddd
�Z	dd�Z
dd�Zedd��Z
dd�Zdd�ZdS)�FernetNcCsLt|�}tj|�}t|�dkr&td��|dd�|_|dd�|_||_dS)N� z4Fernet key must be 32 url-safe base64-encoded bytes.�)r�base64�urlsafe_b64decode�len�
ValueError�_signing_key�_encryption_key�_backend)�self�key�backendrrr�__init__s
zFernet.__init__cCstjtjd��S)Nr)r�urlsafe_b64encode�os�urandom)�clsrrr�generate_key,szFernet.generate_keycCs|j|ttj���S)N)�encrypt_at_time�int�time)r�datarrr�encrypt0szFernet.encryptcCstjd�}|j|||�S)Nr)r$r%�_encrypt_from_parts)rr+�current_time�ivrrrr(3s
zFernet.encrypt_at_timecCs�tjd|�tjtjj�j�}|j|�|j	�}t
tj|j�tj
|�|j�j�}|j|�|j	�}dtjd|�||}t|jtj�|jd�}	|	j|�|	j	�}
tj||
�S)Nr+��z>Q)r!)r�_check_bytesr	�PKCS7r�AES�
block_size�padder�update�finalizer
rr�CBCr�	encryptor�struct�packr
rr�SHA256rr#)rr+r.r/r5Zpadded_datar9�
ciphertextZbasic_parts�hZhmacrrrr-7s
zFernet._encrypt_from_partscCs&tj|�\}}|j|||ttj���S)N)r�_get_unverified_token_data�
_decrypt_datar)r*)r�token�ttl�	timestampr+rrr�decryptJszFernet.decryptcCs.|dkrtd��tj|�\}}|j||||�S)Nz6decrypt_at_time() can only be used with a non-None ttl)rrr?r@)rrArBr.rCr+rrr�decrypt_at_timeNs
zFernet.decrypt_at_timecCstj|�\}}|j|�|S)N)rr?�_verify_signature)rrArCr+rrr�extract_timestampVs
zFernet.extract_timestampcCs�tjd|�ytj|�}Wnttjfk
r8t�YnX|sPtj	|d�dkrTt�yt
jd|dd��\}Wnt
jk
r�t�YnX||fS)NrAr�z>Q��	)
rr1rr�	TypeError�binascii�Errorr�sixZ
indexbytesr:�unpack�error)rAr+rCrrrr?\s

z!Fernet._get_unverified_token_datacCs\t|jtj�|jd�}|j|dd��y|j|dd��Wntk
rVt�YnXdS)N)r!ri��i��)	r
rrr<rr6Zverifyrr)rr+r>rrrrFmszFernet._verify_signaturecCs�|dk	r(|||krt�|t|kr(t�|j|�|dd�}|dd�}ttj|j�tj|�|j	�j
�}|j|�}y||j�7}Wnt
k
r�t�YnXtjtjj�j�}	|	j|�}
y|
|	j�7}
Wnt
k
r�t�YnX|
S)NrJ�ri��)r�_MAX_CLOCK_SKEWrFr
rr3rrr8r�	decryptorr6r7rr	r2r4�unpadder)rr+rCrBr.r/r=rSZplaintext_paddedrTZunpaddedrrrr@us,




zFernet._decrypt_data)N)N)rrrr"�classmethodr'r,r(r-rDrErG�staticmethodr?rFr@rrrrrs


rc@s>eZdZdd�Zdd�Zdd�Zdd�Zdd
d�Zdd
�Zd	S)�MultiFernetcCst|�}|std��||_dS)Nz1MultiFernet requires at least one Fernet instance)�listr�_fernets)rZfernetsrrrr"�s
zMultiFernet.__init__cCs|j|ttj���S)N)r(r)r*)r�msgrrrr,�szMultiFernet.encryptcCs|jdj||�S)Nr)rYr()rrZr.rrrr(�szMultiFernet.encrypt_at_timecCsltj|�\}}x>|jD]0}y|j||dd�}PWqtk
rDYqXqWt�tjd�}|jdj|||�S)Nrr)rr?rYr@rr$r%r-)rrZrCr+�f�pr/rrr�rotate�s

zMultiFernet.rotateNcCs:x0|jD]&}y|j||�Stk
r,YqXqWt�dS)N)rYrDr)rrZrBr[rrrrD�s
zMultiFernet.decryptcCs<x2|jD](}y|j|||�Stk
r.YqXqWt�dS)N)rYrEr)rrZrBr.r[rrrrE�s
zMultiFernet.decrypt_at_time)N)	rrrr"r,r(r]rDrErrrrrW�s
rW)Z
__future__rrrrrLr$r:r*rNZcryptographyrZcryptography.exceptionsrZcryptography.hazmat.backendsrZcryptography.hazmat.primitivesrr	Z&cryptography.hazmat.primitives.ciphersr
rrZ#cryptography.hazmat.primitives.hmacr
�	ExceptionrrR�objectrrWrrrr�<module>s u

?>