Implementation of a TLS transport (ISSLTransport
) as an IProtocol
layered on top of any ITransport
implementation, based on OpenSSL's memory BIO features.
TLSMemoryBIOFactory
is a WrappingFactory
which wraps protocols created by the factory it wraps with TLSMemoryBIOProtocol
. TLSMemoryBIOProtocol
intercedes between the underlying transport and the wrapped protocol to implement SSL and TLS. Typical usage of this module looks like this:
from twisted.protocols.tls import TLSMemoryBIOFactory from twisted.internet.protocol import ServerFactory from twisted.internet.ssl import PrivateCertificate from twisted.internet import reactor from someapplication import ApplicationProtocol serverFactory = ServerFactory() serverFactory.protocol = ApplicationProtocol certificate = PrivateCertificate.loadPEM(certPEMData) contextFactory = certificate.options() tlsFactory = TLSMemoryBIOFactory(contextFactory, False, serverFactory) reactor.listenTCP(12345, tlsFactory) reactor.run()
This API offers somewhat more flexibility than twisted.internet.interfaces.IReactorSSL
; for example, a TLSMemoryBIOProtocol
instance can use another instance of TLSMemoryBIOProtocol
as its transport, yielding TLS over TLS - useful to implement onion routing. It can also be used to run TLS over unusual transports, such as UNIX sockets and stdio.
Class | TLSMemoryBIOProtocol | No summary |
Class | TLSMemoryBIOFactory | TLSMemoryBIOFactory adds TLS to connections. |
Class | _ProducerMembrane | Stand-in for producer registered with a TLSMemoryBIOProtocol transport. |
Class | _ContextFactoryToConnectionFactory | Adapter wrapping a twisted.internet.interfaces.IOpenSSLContextFactory into a IOpenSSLClientConnectionCreator or IOpenSSLServerConnectionCreator . |