File: //usr/lib/python3/dist-packages/twisted/protocols/test/__pycache__/test_tls.cpython-38.pyc
U
W[ ' � @ s� d Z ddlmZmZ ddlZddlmZ ddlmZm Z m
Z
ddlmZ zTddl
mZmZ ddl
mZmZ dd lmZ dd
lmZmZmZmZmZmZmZ W n$ ek
r� dZd Z ZZY n2X ddlmZm Z dd
l!m"Z"m#Z#m$Z$ ddl%m&Z& ddl'm(Z( ddl)m*Z* ddl+m,Z, ddl-m.Z. ddl/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6 ddl7m8Z8m9Z9 ddl:m;Z;m<Z< ddl=m>Z>m?Z?m@Z@mAZA ddlBmCZC ddlDmEZEmFZF ddlGmHZHmIZI ddlJmKZK ddlLmMZMmNZN G dd� d�ZOG dd� de@�ZPd5d!d"�ZQG d#d$� d$eH�ZRd6d%d&�ZSG d'd(� d(eI�ZTG d)d*� d*eH�ZUG d+d,� d,eH�ZVG d-d.� d.eH�ZWe
e3�G d/d0� d0e>��ZXe
e3�G d1d2� d2eA��ZYG d3d4� d4eH�ZZdS )7z%
Tests for L{twisted.protocols.tls}.
� )�division�absolute_importN)�verifyObject)� Interface�directlyProvides�implementer)� iterbytes)�TLSMemoryBIOProtocol�TLSMemoryBIOFactory)�_PullToPush�_ProducerMembrane)�X509Type)�TLSv1_METHOD�TLSv1_1_METHOD�TLSv1_2_METHOD�Error�Context�ConnectionType�
WantReadErrorz9pyOpenSSL 0.10 or newer required for twisted.protocol.tls)�PrivateCertificate�optionsForClientTLS)�ClientTLSContext�ServerTLSContext�certPath)�!certificatesForAuthorityAndServer)�connectedServerAndClient)�FilePath)�Failure)�log)�
ISystemHandle�
ISSLTransport�
IPushProducer�IProtocolNegotiationFactory�IHandshakeListener�IOpenSSLServerConnectionCreator�IOpenSSLClientConnectionCreator)�ConnectionDone�ConnectionLost)�Deferred�
gatherResults)�
ClientFactory�Factory�Protocol�
ServerFactory)�TaskStopped)�
loopbackAsync�collapsingPumpPolicy)�TestCase�SynchronousTestCase��ConnectionLostNotifyingProtocol)�StringTransport�NonStreamingProducerc @ s@ e Zd ZdZdZefdd�Zdd� Zee�Zdd� Z d d
� Z
dS )�HandshakeCallbackContextFactorya
L{HandshakeCallbackContextFactory} is a factory for SSL contexts which
allows applications to get notification when the SSL handshake completes.
@ivar _finished: A L{Deferred} which will be called back when the handshake
is done.
� c C s t � | _|| _d S �N)r( � _finished�_method)�self�method� r>