/usr/share/doc/python-gnutls/examples/twisted-client.py is in python-gnutls 1.2.5-1.
This file is owned by root:root, with mode 0o755.
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 49 50 51 | #!/usr/bin/env python
"""Asynchronous client using Twisted with GNUTLS"""
import sys
import os
from twisted.internet.error import ConnectionDone
from twisted.internet.protocol import ClientFactory
from twisted.protocols.basic import LineOnlyReceiver
from twisted.internet import reactor
from gnutls.constants import *
from gnutls.crypto import *
from gnutls.errors import *
from gnutls.interfaces.twisted import X509Credentials
class EchoProtocol(LineOnlyReceiver):
def connectionMade(self):
self.sendLine('echo')
def lineReceived(self, line):
print 'received: %s' % line
self.transport.loseConnection()
def connectionLost(self, reason):
if reason.type != ConnectionDone:
print "connection was lost: %s" % reason.value
reactor.stop()
class EchoFactory(ClientFactory):
protocol = EchoProtocol
def clientConnectionFailed(self, connector, err):
print "connection failed: %s" % err.value
reactor.stop()
script_path = os.path.realpath(os.path.dirname(sys.argv[0]))
certs_path = os.path.join(script_path, 'certs')
cert = X509Certificate(open(certs_path + '/valid.crt').read())
key = X509PrivateKey(open(certs_path + '/valid.key').read())
ca = X509Certificate(open(certs_path + '/ca.pem').read())
crl = X509CRL(open(certs_path + '/crl.pem').read())
cred = X509Credentials(cert, key, [ca])
cred.verify_peer = True
reactor.connectTLS('localhost', 10000, EchoFactory(), cred)
reactor.run()
|