Index: third_party/twisted_8_1/twisted/internet/ssl.py |
diff --git a/third_party/twisted_8_1/twisted/internet/ssl.py b/third_party/twisted_8_1/twisted/internet/ssl.py |
deleted file mode 100644 |
index 23bd1e92d7af6a1c6585b0131780f9854027ad08..0000000000000000000000000000000000000000 |
--- a/third_party/twisted_8_1/twisted/internet/ssl.py |
+++ /dev/null |
@@ -1,205 +0,0 @@ |
-# -*- test-case-name: twisted.test.test_ssl -*- |
-# Copyright (c) 2001-2004 Twisted Matrix Laboratories. |
-# See LICENSE for details. |
- |
- |
-""" |
-SSL transport. Requires PyOpenSSL (http://pyopenssl.sf.net). |
- |
-SSL connections require a ContextFactory so they can create SSL contexts. |
-End users should only use the ContextFactory classes directly - for SSL |
-connections use the reactor.connectSSL/listenSSL and so on, as documented |
-in IReactorSSL. |
- |
-All server context factories should inherit from ContextFactory, and all |
-client context factories should inherit from ClientContextFactory. At the |
-moment this is not enforced, but in the future it might be. |
- |
-Future Plans: |
- - split module so reactor-specific classes are in a separate module |
- - support for switching TCP into SSL |
- - more options |
- |
-Maintainer: U{Itamar Shtull-Trauring<mailto:twisted@itamarst.org>} |
-""" |
- |
-# If something goes wrong, most notably an OpenSSL import failure, |
-# sys.modules['twisted.internet.ssl'] will be bound to a partially |
-# initialized module object. This is wacko, but we will take advantage |
-# of it to publish whether or not SSL is available. |
-# See the end of this module for the other half of this solution. |
- |
-# The correct idiom to import this module is thus: |
- |
-# try: |
-# from twisted.internet import ssl |
-# except ImportError: |
-# # happens the first time the interpreter tries to import it |
-# ssl = None |
-# if ssl and not ssl.supported: |
-# # happens second and later times |
-# ssl = None |
- |
-supported = False |
- |
-# System imports |
-from OpenSSL import SSL |
-from zope.interface import implements, implementsOnly, implementedBy |
- |
-# sibling imports |
-import tcp, interfaces |
- |
-# Twisted imports |
-from twisted.internet import base, address |
- |
- |
-class ContextFactory: |
- """A factory for SSL context objects, for server SSL connections.""" |
- |
- isClient = 0 |
- |
- def getContext(self): |
- """Return a SSL.Context object. override in subclasses.""" |
- raise NotImplementedError |
- |
- |
-class DefaultOpenSSLContextFactory(ContextFactory): |
- |
- def __init__(self, privateKeyFileName, certificateFileName, |
- sslmethod=SSL.SSLv23_METHOD): |
- """ |
- @param privateKeyFileName: Name of a file containing a private key |
- @param certificateFileName: Name of a file containing a certificate |
- @param sslmethod: The SSL method to use |
- """ |
- self.privateKeyFileName = privateKeyFileName |
- self.certificateFileName = certificateFileName |
- self.sslmethod = sslmethod |
- self.cacheContext() |
- |
- def cacheContext(self): |
- ctx = SSL.Context(self.sslmethod) |
- ctx.use_certificate_file(self.certificateFileName) |
- ctx.use_privatekey_file(self.privateKeyFileName) |
- self._context = ctx |
- |
- def __getstate__(self): |
- d = self.__dict__.copy() |
- del d['_context'] |
- return d |
- |
- def __setstate__(self, state): |
- self.__dict__ = state |
- self.cacheContext() |
- |
- def getContext(self): |
- """Create an SSL context. |
- """ |
- return self._context |
- |
- |
-class ClientContextFactory: |
- """A context factory for SSL clients.""" |
- |
- isClient = 1 |
- method = SSL.SSLv3_METHOD |
- |
- def getContext(self): |
- return SSL.Context(self.method) |
- |
- |
-class Client(tcp.Client): |
- """I am an SSL client.""" |
- |
- implementsOnly(interfaces.ISSLTransport, |
- *[i for i in implementedBy(tcp.Client) if i != interfaces.ITLSTransport]) |
- |
- def __init__(self, host, port, bindAddress, ctxFactory, connector, reactor=None): |
- # tcp.Client.__init__ depends on self.ctxFactory being set |
- self.ctxFactory = ctxFactory |
- tcp.Client.__init__(self, host, port, bindAddress, connector, reactor) |
- |
- def getHost(self): |
- """Returns the address from which I am connecting.""" |
- h, p = self.socket.getsockname() |
- return address.IPv4Address('TCP', h, p, 'SSL') |
- |
- def getPeer(self): |
- """Returns the address that I am connected.""" |
- return address.IPv4Address('TCP', self.addr[0], self.addr[1], 'SSL') |
- |
- def _connectDone(self): |
- self.startTLS(self.ctxFactory) |
- self.startWriting() |
- tcp.Client._connectDone(self) |
- |
- |
-class Server(tcp.Server): |
- """I am an SSL server. |
- """ |
- |
- implements(interfaces.ISSLTransport) |
- |
- def getHost(self): |
- """Return server's address.""" |
- h, p = self.socket.getsockname() |
- return address.IPv4Address('TCP', h, p, 'SSL') |
- |
- def getPeer(self): |
- """Return address of peer.""" |
- h, p = self.client |
- return address.IPv4Address('TCP', h, p, 'SSL') |
- |
- |
-class Port(tcp.Port): |
- """I am an SSL port.""" |
- _socketShutdownMethod = 'sock_shutdown' |
- |
- transport = Server |
- |
- def __init__(self, port, factory, ctxFactory, backlog=50, interface='', reactor=None): |
- tcp.Port.__init__(self, port, factory, backlog, interface, reactor) |
- self.ctxFactory = ctxFactory |
- |
- def createInternetSocket(self): |
- """(internal) create an SSL socket |
- """ |
- sock = tcp.Port.createInternetSocket(self) |
- return SSL.Connection(self.ctxFactory.getContext(), sock) |
- |
- def _preMakeConnection(self, transport): |
- # *Don't* call startTLS here |
- # The transport already has the SSL.Connection object from above |
- transport._startTLS() |
- return tcp.Port._preMakeConnection(self, transport) |
- |
- |
-class Connector(base.BaseConnector): |
- def __init__(self, host, port, factory, contextFactory, timeout, bindAddress, reactor=None): |
- self.host = host |
- self.port = port |
- self.bindAddress = bindAddress |
- self.contextFactory = contextFactory |
- base.BaseConnector.__init__(self, factory, timeout, reactor) |
- |
- def _makeTransport(self): |
- return Client(self.host, self.port, self.bindAddress, self.contextFactory, self, self.reactor) |
- |
- def getDestination(self): |
- return address.IPv4Address('TCP', self.host, self.port, 'SSL') |
- |
-from twisted.internet._sslverify import DistinguishedName, DN, Certificate |
-from twisted.internet._sslverify import CertificateRequest, PrivateCertificate |
-from twisted.internet._sslverify import KeyPair |
-from twisted.internet._sslverify import OpenSSLCertificateOptions as CertificateOptions |
- |
-__all__ = [ |
- "ContextFactory", "DefaultOpenSSLContextFactory", "ClientContextFactory", |
- |
- 'DistinguishedName', 'DN', |
- 'Certificate', 'CertificateRequest', 'PrivateCertificate', |
- 'KeyPair', |
- 'CertificateOptions', |
- ] |
- |
-supported = True |