/usr/share/pyshared/txsocksx/tls.py is in python-txsocksx 1.13.0.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | # Copyright (c) Aaron Gallagher <_@habnab.it>
# See COPYING for details.
"""TLS convenience wrappers for endpoints.
"""
from twisted.protocols import tls
from twisted.internet import interfaces
from zope.interface import implementer
@implementer(interfaces.IStreamClientEndpoint)
class TLSWrapClientEndpoint(object):
"""An endpoint which automatically starts TLS.
:param contextFactory: A `ContextFactory`__ instance.
:param wrappedEndpoint: The endpoint to wrap.
__ http://twistedmatrix.com/documents/current/api/twisted.internet.protocol.ClientFactory.html
"""
_wrapper = tls.TLSMemoryBIOFactory
def __init__(self, contextFactory, wrappedEndpoint):
self.contextFactory = contextFactory
self.wrappedEndpoint = wrappedEndpoint
def connect(self, fac):
"""Connect to the wrapped endpoint, then start TLS.
The TLS negotiation is done by way of wrapping the provided factory
with `TLSMemoryBIOFactory`__ during connection.
:returns: A ``Deferred`` which fires with the same ``Protocol`` as
``wrappedEndpoint.connect(fac)`` fires with. If that ``Deferred``
errbacks, so will the returned deferred.
__ http://twistedmatrix.com/documents/current/api/twisted.protocols.tls.html
"""
fac = self._wrapper(self.contextFactory, True, fac)
return self.wrappedEndpoint.connect(fac).addCallback(self._unwrapProtocol)
def _unwrapProtocol(self, proto):
return proto.wrappedProtocol
|