File: //lib/python3/dist-packages/cryptography/hazmat/backends/openssl/__pycache__/rsa.cpython-38.pyc
U
�\�e�C � @ sD d dl mZmZmZ d dlZd dlmZ d dlmZm Z m
Z
d dlmZm
Z
mZ d dlmZ d dlmZmZmZ d dlmZmZmZmZmZmZ d d lmZmZ d
d� Zdd
� Z dd� Z!dd� Z"dd� Z#dd� Z$dd� Z%e�&e�G dd� de'��Z(e�&e�G dd� de'��Z)e�&e�G dd� de'��Z*e�&e�G dd� de'��Z+dS ) � )�absolute_import�division�print_functionN)�utils)�InvalidSignature�UnsupportedAlgorithm�_Reasons)�_calculate_digest_and_algorithm�_check_not_prehashed�_warn_sign_verify_deprecated)�hashes)�AsymmetricSignatureContext�AsymmetricVerificationContext�rsa)�AsymmetricPadding�MGF1�OAEP�PKCS1v15�PSS�calculate_max_pss_salt_length)�RSAPrivateKeyWithSerialization�RSAPublicKeyWithSerializationc C s, | j }|tjks|tjkr$t||�S |S d S �N)Z_salt_lengthr Z
MAX_LENGTHr r )Zpss�keyZhash_algorithmZsalt� r �J/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/rsa.py�_get_rsa_pss_salt_length s
r c C s� t |t�std��t |t�r&| jj}nVt |t�rh| jj}t |jt �sPt
dtj��| �
|�s|t
dtj��nt
d�|j�tj��t| ||||�S )Nz1Padding must be an instance of AsymmetricPadding.�'Only MGF1 is supported by this backend.zPThis combination of padding and hash algorithm is not supported by this backend.�${} is not supported by this backend.)�
isinstancer � TypeErrorr �_lib�RSA_PKCS1_PADDINGr ZRSA_PKCS1_OAEP_PADDING�_mgfr r r �UNSUPPORTED_MGFZrsa_padding_supported�UNSUPPORTED_PADDING�format�name�_enc_dec_rsa_pkey_ctx)�backendr �data�padding�padding_enumr r r �_enc_dec_rsa&