File: //usr/lib/python3.6/site-packages/ipaclient/plugins/__pycache__/vault.cpython-36.pyc
3
�
�i� � @ s� d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl Z d dl
mZmZ d dl
mZ d dlmZ d dlmZ d dlmZ d dlmZmZmZ d d lmZ d d
lmZmZ d dlmZ d dl m!Z! d d
l m"Z" d dl#m$Z$m%Z%m&Z& d dl'm(Z( d dl m)Z)m*Z* d dl m+Z+m,Z,m-Z- d dl.m/Z/ d dl m0Z0 d dl1m2Z2 d dl3m4Z4 ej5e6�Z7d<dd�Z8e/� Z9d=Z:dd� Z;d>dd�Z<d?dd �Z=e9d!d"�G d#d$� d$e&��Z>e9d!d"�G d%d&� d&e%��Z?e9� G d'd(� d(e$��Z@e9d!d"�G d)d*� d*e%��ZAe9� G d+d,� d,e$��ZBG d-d.� d.�ZCeC� ZDe9d!d!d/�G d0d1� d1e��ZEG d2d3� d3e$�ZFe9d!d"�G d4d5� d5e%��ZGe9� G d6d7� d7eF��ZHe9d!d"�G d8d9� d9e%��ZIe9� G d:d;� d;eF��ZJdS )@� )�print_functionN)�Fernet�InvalidToken)�default_backend)�hashes)�
PBKDF2HMAC)�padding)�Cipher�
algorithms�modes)�PKCS7)�load_pem_public_key�load_pem_private_key)�MethodOverride)�x509)� constants)�Local�Method�Object)�
classproperty)�api�errors)�Bytes�Flag�Str)�Registry)�_)�ipautil)�DNSName�rc C s� y(t j|||d��}|j� }W dQ R X W n� tk
rl } z(tj| td�||jd d� d��W Y dd}~X n> tk
r� } z"tj| td�||d� d��W Y dd}~X nX |S )ztRead file and catch errors
IOError and UnicodeError (for text files) are turned into a
ValidationError
)�mode�encodingNz(Cannot read file '%(filename)s': %(exc)s� )�filename�exc)�name�errorz*Cannot decode file '%(filename)s': %(exc)s) �io�open�read�IOErrorr �ValidationErrorr �args�UnicodeError)Zargnamer# r r! �f�datar$ � r0 �/usr/lib/python3.6/vault.py�validated_read8 s &"r2 � � c C s. t tj� d|dt� d�}tj|j| jd���S )z9
Generates symmetric key from password and salt.
� i�� )� algorithmZlength�saltZ
iterations�backendzutf-8)r r �SHA256r �base64� b64encodeZderive�encode)�passwordr7 Zkdfr0 r0 r1 �generate_symmetric_keyW s
r>