File: //lib/python3/dist-packages/cryptography/hazmat/backends/openssl/__pycache__/backend.cpython-38.pyc
U
�e�]�{ � @ s� d dl mZmZmZ d dlZd dlZd dlZd dlZd dlmZ d dl Z d dl
mZ d dlm
Z
mZ d dlmZmZ d dlmZmZmZmZmZ d dlmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z% d d l&m'Z' d d
l(m)Z) d dl*m+Z+ d dl,m-Z- d d
l.m/Z/m0Z0m1Z1m2Z2 d dl3m4Z4m5Z5m6Z6 d dl7m8Z8m9Z9 d dl:m;Z;m<Z< d dl=m>Z>m?Z?m@Z@ d dlAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJ d dlKmLZL d dlMmNZN d dlOmPZPmQZQ d dlRmSZSmTZT d dlUmVZVmWZW d dlXmYZYmZZZ d dl[m\Z\m]Z] d dl^m_Z_m`Z`maZambZb d dlcmdZd d dlemfZfmgZg d dlhmiZimjZjmkZkmlZlmmZm d dlnmoZompZpmqZqmrZr d dlsmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z| d d l}m~Z~mZm�Z�m�Z�m�Z�m�Z�m�Z�m�Z� d d!l�m�Z� d d"l�m�Z� d d#l�m�Z� e��d$d%d&g�Z�e
��e�e
��e�e
��e�e
��e�e
��e�e
��e�e
��e �e
��e�e
��e!�e
��e#�e
��e"�e
��e%�e
��ed��� j�j�e$�G d'd(� d(e���������������Z�G d)d*� d*e��Z�d+d,� Z�e�� Z�dS )-� )�absolute_import�division�print_functionN)�contextmanager��range)�utils�x509)�UnsupportedAlgorithm�_Reasons)�INTEGER�NULL�SEQUENCE�
encode_der�encode_der_integer)
�CMACBackend�
CipherBackend�DERSerializationBackend� DHBackend�
DSABackend�EllipticCurveBackend�HMACBackend�HashBackend�PBKDF2HMACBackend�PEMSerializationBackend�
RSABackend�
ScryptBackend�X509Backend)�aead)�_CipherContext��_CMACContext)�_CRL_ENTRY_REASON_ENUM_TO_CODE)�
_DHParameters�
_DHPrivateKey�_DHPublicKey�_dh_params_dup)�_DSAParameters�_DSAPrivateKey�
_DSAPublicKey)�_EllipticCurvePrivateKey�_EllipticCurvePublicKey)�_Ed25519PrivateKey�_Ed25519PublicKey)�_ED448_KEY_SIZE�_Ed448PrivateKey�_Ed448PublicKey) �$_CRL_ENTRY_EXTENSION_ENCODE_HANDLERS�_CRL_EXTENSION_ENCODE_HANDLERS�_EXTENSION_ENCODE_HANDLERS�)_OCSP_BASICRESP_EXTENSION_ENCODE_HANDLERS�'_OCSP_REQUEST_EXTENSION_ENCODE_HANDLERS�_encode_asn1_int_gc�_encode_asn1_str_gc�_encode_name_gc�_txt2obj_gc��_HashContext��_HMACContext)�_OCSPRequest�
_OCSPResponse)�_POLY1305_KEY_SIZE�_Poly1305Context)�_RSAPrivateKey�
_RSAPublicKey)�_X25519PrivateKey�_X25519PublicKey)�_X448PrivateKey�_X448PublicKey)�_Certificate�_CertificateRevocationList�_CertificateSigningRequest�_RevokedCertificate)�binding)�hashes�
serialization)�dsa�ec�ed25519�ed448�rsa)�MGF1�OAEP�PKCS1v15�PSS) �AES�ARC4�Blowfish�CAST5�Camellia�ChaCha20�IDEA�SEED� TripleDES)�CBC�CFB�CFB8�CTR�ECB�GCM�OFB�XTS)�scrypt)�ssh)�ocsp�
_MemoryBIO�bioZchar_ptrc @ sv e Zd ZdZdZdd� Zdd� Zdd� Zej d d
� �Z
dd� Zd
d� Zdd� Z
dd� Zdd� Zdd� Zdd� Zdd� Zdd� Zdd� Zdd � Zd!d"� Zd#d$� Zd%d&� Zd'd(� Zd)d*� Zd+d,� Zd-d.� Zd/d0� Z�dd2d3�Zd4d5� Zd6d7� Z d8d9� Z!d:d;� Z"d<d=� Z#d>d?� Z$d@dA� Z%dBdC� Z&dDdE� Z'dFdG� Z(dHdI� Z)dJdK� Z*dLdM� Z+dNdO� Z,dPdQ� Z-dRdS� Z.dTdU� Z/dVdW� Z0dXdY� Z1dZd[� Z2d\d]� Z3d^d_� Z4d`da� Z5dbdc� Z6ddde� Z7dfdg� Z8dhdi� Z9djdk� Z:dldm� Z;dndo� Z<dpdq� Z=drds� Z>dtdu� Z?dvdw� Z@dxdy� ZAdzd{� ZBd|d}� ZCd~d� ZDd�d�� ZEd�d�� ZFd�d�� ZGd�d�� ZHd�d�� ZId�d�� ZJd�d�� ZKd�d�� ZLd�d�� ZMd�d�� ZNd�d�� ZOd�d�� ZPd�d�� ZQd�d�� ZRd�d�� ZSd�d�� ZTd�d�� ZUd�d�� ZVd�d�� ZWd�d�� ZXd�d�� ZYd�d�� ZZd�d�� Z[d�d�� Z\d�d�� Z]d�d�� Z^d�d�� Z_d�d�� Z`e d�d�� �Zad�d�� Zbd�d�� Zcd�d�� Zdd�d�� Zed�dÄ Zfd�dń Zgd�dDŽ Zhd�dɄ Zid�d˄ Zjd�d̈́ Zkd�dτ Zld�dф Zmd�dӄ Znd�dՄ Zo�dd�dׄZpd�dل Zqd�dۄ Zrd�d݄ Zsd�d߄ Ztd�d� Zud�d� Zvd�d� Zwd�d� Zxd�d� Zyd�d� Zzd�d� Z{d�d� Z|d�d� Z}d�d� Z~d�d�� Zd�d�� Z�d�d�� Z�d�d�� Z�d�d�� Z�d�d�� Z��d �d� Z�ej �d�d� �Z��d�d� Z�ej �d�d� �Z��d�d � Z��d
�d� Z��d�d
� Z�d1S ( �Backendz)
OpenSSL API binding interfaces.
Zopensslc C s\ t �� | _| jj| _| jj| _i | _| �� | � � | jj
g| _| jjrX| j�
| jj� d S �N)rL �BindingZ_bindingZffi�_ffi�lib�_lib�_cipher_registry�_register_default_ciphers�activate_osrandom_engineZEVP_PKEY_DH� _dh_types�Cryptography_HAS_EVP_PKEY_DHX�appendZEVP_PKEY_DHX��self� r| �N/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/backend.py�__init__v s
zBackend.__init__c C s t �| j|�S ro )rL Z_openssl_assertrs )r{ �okr| r| r} �openssl_assert� s zBackend.openssl_assertc C sf | j jrb| j �� }|| jjkrb| j �|� | j �| jj�}| �|dk� | j �|�}| �|dk� d S �N� ) rs �Cryptography_HAS_ENGINEZENGINE_get_default_RANDrq r
ZENGINE_unregister_RAND�RAND_set_rand_methodr� �
ENGINE_finish�r{ �e�resr| r| r} �activate_builtin_random� s
zBackend.activate_builtin_randomc
c s� | j �| j j�}| �|| jjk� | j �|�}| �|dk� z
|V W 5 | j �|�}| �|dk� | j �|�}| �|dk� X d S r� ) rs ZENGINE_by_idZCryptography_osrandom_engine_idr� rq r
ZENGINE_initZENGINE_freer� r� r| r| r} �_get_osurandom_engine� s
zBackend._get_osurandom_enginec C s` | j jr\| �� | �� � }| j �|�}| �|dk� W 5 Q R X | j �| jj�}| �|dk� d S r� ) rs r� r� r� ZENGINE_set_default_RANDr� r� rq r
r� r| r| r} rv � s
z Backend.activate_osrandom_enginec C s` | j �dd�}| �� �2}| j�|dt|�|| j jd�}| �|dk� W 5 Q R X | j �|�� d�S )N�char[]�@ s get_implementationr �ascii)
rq �newr� rs ZENGINE_ctrl_cmd�lenr
r� �string�decode)r{ �bufr� r� r| r| r} �osrandom_engine_implementation� s
�z&Backend.osrandom_engine_implementationc C s | j �| j�| jj���d�S )z�
Friendly string name of the loaded OpenSSL library. This is not
necessarily the same version as it was compiled against.
Example: OpenSSL 1.0.1e 11 Feb 2013
r� )rq r� rs ZOpenSSL_versionZOPENSSL_VERSIONr� rz r| r| r} �openssl_version_text� s
��zBackend.openssl_version_textc C s
| j �� S ro )rs ZOpenSSL_version_numrz r| r| r} �openssl_version_number� s zBackend.openssl_version_numberc C s t | ||�S ro r<