Your IP : 216.73.216.213


Current Path : /opt/alt/python35/lib64/python3.5/site-packages/cryptography/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/site-packages/cryptography/__pycache__/fernet.cpython-35.pyc



���]��@sddlmZmZmZddlZddlZddlZddlZddlZddl	Z	ddl
mZddlm
Z
ddlmZmZddlmZmZmZddlmZGdd	�d	e�Zd
ZGdd�de�ZGd
d�de�ZdS)�)�absolute_import�division�print_functionN)�InvalidSignature)�default_backend)�hashes�padding)�Cipher�
algorithms�modes)�HMACc@seZdZdS)�InvalidTokenN)�__name__�
__module__�__qualname__�rr�F/opt/alt/python35/lib64/python3.5/site-packages/cryptography/fernet.pyr
sr
�<c@sXeZdZddd�Zedd��Zdd�Zdd	�Zdd
d�ZdS)�FernetNcCsu|dkrt�}tj|�}t|�dkrBtd��|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_keycCs4ttj��}tjd�}|j|||�S)Nr)�int�timer#r$�_encrypt_from_parts)r�data�current_time�ivrrr�encrypt0szFernet.encryptcCst|t�std��tjtjj�j�}|j	|�|j
�}ttj|j�t
j|�|j�j�}|j	|�|j
�}dtjd|�||}t|jtj�d|j�}	|	j	|�|	j
�}
tj||
�S)Nzdata must be bytes.s�z>Qr )�
isinstance�bytes�	TypeErrorr�PKCS7r
�AES�
block_size�padder�update�finalizer	rr�CBCr�	encryptor�struct�packrrr�SHA256rr")rr*r+r,r4Zpadded_datar8�
ciphertextZbasic_parts�h�hmacrrrr)5s-!
zFernet._encrypt_from_partsc
+Cs[t|t�std��ttj��}ytj|�}Wn!ttjfk
rct	�YnX|s�t
j|d�dkr�t	�y#tj
d|dd��\}Wntjk
r�t	�YnX|dk	r|||kr�t	�|t|krt	�t|jtj�d|j�}|j|dd
��y|j|dd��Wntk
rot	�YnX|dd	�}|d	d�}ttj|j�tj|�|j�j�}	|	j|�}
y|
|	j�7}
Wnt k
r�t	�YnXt!j"tjj#�j$�}|j|
�}y||j�7}Wnt k
rVt	�YnX|S)
Nztoken must be bytes.r�z>Q��	r r�i��i��i��)%r.r/r0r'r(rr�binascii�Errorr
�six�
indexbytesr9�unpack�error�_MAX_CLOCK_SKEWrrrr;rr5�verifyrr	r
r2rrr7�	decryptorr6rrr1r3�unpadder)
r�token�ttlr+r*�	timestampr=r,r<rKZplaintext_paddedrLZunpaddedrrr�decryptIsP#!
-

zFernet.decrypt)	rrrr!�classmethodr&r-r)rPrrrrrs
rc@s7eZdZdd�Zdd�Zddd�ZdS)�MultiFernetcCs+t|�}|std��||_dS)Nz1MultiFernet requires at least one Fernet instance)�listr�_fernets)rZfernetsrrrr!~s
	zMultiFernet.__init__cCs|jdj|�S)Nr)rTr-)r�msgrrrr-�szMultiFernet.encryptNcCsGx:|jD]/}y|j||�SWq
tk
r8Yq
Xq
Wt�dS)N)rTrPr
)rrUrN�frrrrP�s
	zMultiFernet.decrypt)rrrr!r-rPrrrrrR}srR)�
__future__rrrrrCr#r9r(rEZcryptography.exceptionsrZcryptography.hazmat.backendsrZcryptography.hazmat.primitivesrrZ&cryptography.hazmat.primitives.ciphersr	r
rZ#cryptography.hazmat.primitives.hmacr�	Exceptionr
rI�objectrrRrrrr�<module>s`