1 # -*- coding: latin-1 -*-
3 # Copyright (C) AB Strakt
4 # Copyright (C) Jean-Paul Calderone
5 # See LICENSE for details.
8 Simple SSL client, using blocking I/O
11 from OpenSSL import SSL
12 import sys, os, select, socket
14 def verify_cb(conn, cert, errnum, depth, ok):
15 # This obviously has to be updated
16 print 'Got certificate: %s' % cert.get_subject()
20 print 'Usage: python[2] client.py HOST PORT'
23 dir = os.path.dirname(sys.argv[0])
28 ctx = SSL.Context(SSL.SSLv23_METHOD)
29 ctx.set_verify(SSL.VERIFY_PEER, verify_cb) # Demand a certificate
30 ctx.use_privatekey_file (os.path.join(dir, 'client.pkey'))
31 ctx.use_certificate_file(os.path.join(dir, 'client.cert'))
32 ctx.load_verify_locations(os.path.join(dir, 'CA.cert'))
35 sock = SSL.Connection(ctx, socket.socket(socket.AF_INET, socket.SOCK_STREAM))
36 sock.connect((sys.argv[1], int(sys.argv[2])))
39 line = sys.stdin.readline()
44 sys.stdout.write(sock.recv(1024))
47 print 'Connection died unexpectedly'