diff options
Diffstat (limited to 'demo/ssl/echo-eg.py')
-rw-r--r-- | demo/ssl/echo-eg.py | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/demo/ssl/echo-eg.py b/demo/ssl/echo-eg.py new file mode 100644 index 0000000..f7975d4 --- /dev/null +++ b/demo/ssl/echo-eg.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python + +"""Demo SSL client #1 for the HOWTO. + +Copyright (c) 1999-2001 Ng Pheng Siong. All rights reserved.""" + +import getopt, sys +from socket import gethostname +from M2Crypto import Err, Rand, SSL, X509, threading + +host = '127.0.0.1' +port = 9999 + +optlist, optarg = getopt.getopt(sys.argv[1:], 'h:p:') +for opt in optlist: + if '-h' in opt: + host = opt[1] + elif '-p' in opt: + port = int(opt[1]) + +Rand.load_file('../randpool.dat', -1) + +ctx = SSL.Context('sslv3') +ctx.load_cert('client.pem') +#ctx.load_verify_info('ca.pem') +ctx.set_verify(SSL.verify_peer, 10) +ctx.set_info_callback() + +s = SSL.Connection(ctx) +s.connect((host, port)) +print 'Host =', gethostname() +print 'Cipher =', s.get_cipher().name() + +peer = s.get_peer_cert() +print 'Server =', peer.get_subject().CN + +while 1: + data = s.recv() + if not data: + break + sys.stdout.write(data) + sys.stdout.flush() + buf = sys.stdin.readline() + if not buf: + break + s.send(buf) + +s.close() + +Rand.save_file('../randpool.dat') + |