File manager - Edit - /usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/__pycache__/rsa.cpython-310.pyc
Back
o �)%a�Q � @ sn d dl Z d dlmZ d dlmZmZmZ d dlmZm Z m Z d dlmZm Z d dlmZmZmZ d dlmZmZmZmZmZmZ d dlmZmZmZmZ d ed e jeef dejde fd d�Z!d e jd de"dede"fdd�Z#d e jd de"de dede"f dd�Z$dd� Z%dd� Z&dd� Z'dd� Z(dd � Z)G d!d"� d"e�Z*G d#d$� d$e�Z+G d%d&� d&e�Z,G d'd(� d(e�Z-dS ))� N)�utils)�InvalidSignature�UnsupportedAlgorithm�_Reasons)�_calculate_digest_and_algorithm�_check_not_prehashed�_warn_sign_verify_deprecated)�hashes� serialization)�AsymmetricSignatureContext�AsymmetricVerificationContextr )�AsymmetricPadding�MGF1�OAEP�PKCS1v15�PSS�calculate_max_pss_salt_length)� RSAPrivateKey�RSAPrivateNumbers�RSAPublicKey�RSAPublicNumbers�pss�key�hash_algorithm�returnc C s( | j }|tju s |tju rt||�S |S �N)�_salt_lengthr � MAX_LENGTHr r )r r r �salt� r �J/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/rsa.py�_get_rsa_pss_salt_length) s r! )�_RSAPrivateKey� _RSAPublicKey�data�paddingc C s� t |t�s td��t |t�r| jj}n+t |t�r4| jj}t |jt �s(t dtj��| � |�s3t dtj��n t 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 �RSA_PKCS1_OAEP_PADDING�_mgfr r r �UNSUPPORTED_MGF�rsa_padding_supported�UNSUPPORTED_PADDING�format�name�_enc_dec_rsa_pkey_ctx)�backendr r$ r% �padding_enumr r r �_enc_dec_rsa6 s, � �� �r6 r5 c C s� t |t�r| jj}| jj}n| jj}| jj}| j�|j| j j �}| �|| j j k� | j �|| jj �}||�}| �|dk� | j�||�}| �|dk� | j�|j�} | �| dk� t |t�r�| jjr�| �|jj�} | j�|| �}| �|dk� | �|j�}| j�||�}| �|dk� t |t�r�|jd ur�t|j�dkr�| j�t|j��}| �|| j j k� | j �||jt|j�� | j�||t|j��}| �|dk� | j �d| �} | j �d| �}|||| |t|��}| j �|�d | d � }| j�� |dkr�td��|S )N� r �size_t *�unsigned char[]zEncryption/decryption failed.) r( r# r* �EVP_PKEY_encrypt_init�EVP_PKEY_encrypt�EVP_PKEY_decrypt_init�EVP_PKEY_decrypt�EVP_PKEY_CTX_new� _evp_pkey�_ffi�NULL�openssl_assert�gc�EVP_PKEY_CTX_free�EVP_PKEY_CTX_set_rsa_padding� EVP_PKEY_sizer �Cryptography_HAS_RSA_OAEP_MD�_evp_md_non_null_from_algorithmr- � _algorithm�EVP_PKEY_CTX_set_rsa_mgf1_md�EVP_PKEY_CTX_set_rsa_oaep_md�_label�len�OPENSSL_malloc�memmove� EVP_PKEY_CTX_set0_rsa_oaep_label�new�buffer�ERR_clear_error� ValueError)r4 r r$ r5 r% �init�crypt�pkey_ctx�res�buf_size�mgf1_md�oaep_md�labelptr�outlen�buf�resbufr r r r3 Z sT �� � r3 c C s� t |t�s td��| j�|j�}| �|dk� t |t�r"| jj}|S t |t �rPt |j t�s3tdt j��t |tj�s=td��||j d dk rJtd��| jj}|S td�|j�t j��)Nz'Expected provider of AsymmetricPadding.r r&