blob: 8afccbbbf69db3d51253c3cac15e89457f868b81 (
plain) (
blame)
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
|
# $Id$
# Grope towards testing TLS functionality in POW
# openssl s_server -tls1 -Verify 9 -cert biz-certs/Alice-EE.cer -key biz-certs/Alice-EE.key -www -CApath biz-certs -chain
# openssl s_client -connect localhost:4433 -tls1 -cert biz-certs/Bob-EE.cer -key biz-certs/Bob-EE.key -verify 9 -CApath biz-certs -crlf
import POW, socket
def pow_error_iterator():
err = POW.getError()
if err is None:
raise StopIteration
else:
yield err
key = POW.pemRead(POW.RSA_PRIVATE_KEY, open("biz-certs/Bob-EE.key").read())
cer = POW.pemRead(POW.X509_CERTIFICATE, open("biz-certs/Bob-EE.cer").read())
ca = POW.pemRead(POW.X509_CERTIFICATE, open("biz-certs/Bob-CA.cer").read())
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("localhost", 4433))
try:
t = POW.Ssl(POW.TLSV1_CLIENT_METHOD)
t.useCertificate(cer)
t.useKey(key)
t.addCertificate(ca)
t.setFd(s.fileno())
t.connect()
x = t.peerCertificate()
if x is not None:
print "Peer", x.pprint()
t.write("GET / HTTP/1.0\r\n")
if False:
print t.read(10000)
else:
while True:
print t.read()
except:
print "ERROR:"
for e in pow_error_iterator():
print e
raise
|