File: //opt/saltstack/salt/lib/python3.10/site-packages/cheroot/ssl/__pycache__/builtin.cpython-310.pyc
o
�N�g}F � @ s> d Z ddlmZmZmZ eZddlZddlZddl Z zddl
Z
W n ey+ dZ
Y nw zddlm
Z
W n eyQ zddlm
Z
W n eyN dZ
Y nw Y nw ddlZddlmZ dd lmZ dd
lmZmZ ddlmZmZ ddlmZ ejrejZneZd
d� Zdd� Z dd� Z!dd� Z"dd� Z#G dd� de�Z$dS )z�
A library for integrating Python's builtin :py:mod:`ssl` library with Cheroot.
The :py:mod:`ssl` module must be importable for SSL functionality.
To use this module, set ``HTTPServer.ssl_adapter`` to an instance of
``BuiltinSSLAdapter``.
� )�absolute_import�division�print_functionN)�DEFAULT_BUFFER_SIZE���� )�Adapter� )�errors)�IS_ABOVE_OPENSSL10�suppress��StreamReader�StreamWriter)�
HTTPServerc s6 t |�dk r
td��t| ��� � t� fdd�|D ��S )zACheck whether SSL exception contains either of messages provided.r zF_assert_ssl_exc_contains() requires at least one message to be passed.c 3 s � | ] }|� � � v V qd S )N)�lower)�.0�m�Z
err_msg_lower� �G/opt/saltstack/salt/lib/python3.10/site-packages/cheroot/ssl/builtin.py� <genexpr>4 s � z+_assert_ssl_exc_contains.<locals>.<genexpr>)�len� TypeError�strr �any)�excZmsgsr r r �_assert_ssl_exc_contains, s �r c C s| t tjt��. | j|ddd��
}|�d� W d � n1 sw Y W d � dS W d � dS 1 s7w Y dS )z;Wrap a socket in ssl and perform the server-side handshake.T��do_handshake_on_connect�server_sides 0000N)r �ssl�SSLError�OSError�wrap_socket�send)�context�server�ssl_sockr r r �_loopback_for_cert_thread7 s ���"�r) c C s� t j|d�}|�| |� d|_t j|_t�� \}}zStj t
||fd�}z9|�� |j|ddd��}|�
d� |�� W d � W |�� W |�� |�� S 1 sRw Y W |�� n|�� w W |�� |�� dS |�� |�� w )z@Create a loopback connection to parse a cert with a private key.)�cafileF)�target�argsTr � N)r! �create_default_context�load_cert_chain�check_hostname� CERT_NONE�verify_mode�socket�
socketpair� threading�Threadr) �startr$ �recv�getpeercert�join�close)�certificate�private_key�certificate_chainr&