3
l�_� � @ s� d dl mZmZmZ d dlZd dlZd dlmZ d dlm Z d dl
mZ ejej
�G dd� de��Zeje�G dd � d e��Zeje�G d
d� de��Zeje�G dd
� d
e��ZG dd� de�Zdd� ZdS )� )�absolute_import�division�print_functionN)�utils)�hashes)�rsac @ s e Zd Zejdd� �ZdS )�AsymmetricPaddingc C s dS )zE
A string naming this padding (e.g. "PSS", "PKCS1").
N� )�selfr r �/usr/lib64/python3.6/padding.py�name s zAsymmetricPadding.nameN)�__name__�
__module__�__qualname__�abc�abstractpropertyr r r r r r s r c @ s e Zd ZdZdS )�PKCS1v15zEMSA-PKCS1-v1_5N)r
r r r r r r r r s r c @ s e Zd Ze� ZdZdd� ZdS )�PSSzEMSA-PSSc C sJ || _ t|tj� r&|| jk r&td��|| jk r@|dk r@td��|| _d S )Nzsalt_length must be an integer.r z$salt_length must be zero or greater.)�_mgf�
isinstance�sixZ
integer_types�
MAX_LENGTH� TypeError�
ValueErrorZ_salt_length)r
�mgf�salt_lengthr r r �__init__# s
zPSS.__init__N)r
r r �objectr r r r r r r r s r c @ s e Zd ZdZdd� ZdS )�OAEPzEME-OAEPc C s* t |tj�std��|| _|| _|| _d S )Nz*Expected instance of hashes.HashAlgorithm.)r r �
HashAlgorithmr r �
_algorithmZ_label)r
r � algorithmZlabelr r r r 6 s
z
OAEP.__init__N)r
r r r r r r r r r 2 s r c @ s e Zd Ze� Zdd� ZdS )�MGF1c C s t |tj�std��|| _d S )Nz*Expected instance of hashes.HashAlgorithm.)r r r r r )r
r! r r r r B s z
MGF1.__init__N)r
r r r r r r r r r r" ? s r" c C s: t | tjtjf�std��| jd d }||j d }|S )Nz(key must be an RSA public or private key� � � )r r Z
RSAPrivateKeyZRSAPublicKeyr Zkey_sizeZdigest_size)�keyZhash_algorithmZemlenr r r r �calculate_max_pss_salt_lengthI s
r' )Z
__future__r r r r r Zcryptographyr Zcryptography.hazmat.primitivesr Z)cryptography.hazmat.primitives.asymmetricr Z
add_metaclass�ABCMetar r Zregister_interfacer r r r" r' r r r r �