summaryrefslogtreecommitdiff
path: root/demo/ssl/echo-eg.py
diff options
context:
space:
mode:
Diffstat (limited to 'demo/ssl/echo-eg.py')
-rw-r--r--demo/ssl/echo-eg.py51
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')
+