Sat, 24 Jul 2010 13:40:16 +0100
Initial commit (LuaSec 0.4)
0 | 1 | -- |
2 | -- Public domain | |
3 | -- | |
4 | require("socket") | |
5 | require("ssl") | |
6 | ||
7 | local params = { | |
8 | mode = "client", | |
9 | protocol = "sslv3", | |
10 | key = "../certs/clientAkey.pem", | |
11 | certificate = "../certs/clientA.pem", | |
12 | cafile = "../certs/rootA.pem", | |
13 | verify = {"peer", "fail_if_no_peer_cert"}, | |
14 | options = {"all", "no_sslv2"}, | |
15 | } | |
16 | ||
17 | local function wait(peer, err) | |
18 | if err == "wantread" then | |
19 | socket.select({peer}, nil) | |
20 | elseif err == "timeout" or err == "wantwrite" then | |
21 | socket.select(nil, {peer}) | |
22 | else | |
23 | peer:close() | |
24 | os.exit(1) | |
25 | end | |
26 | end | |
27 | ||
28 | ||
29 | local peer = socket.tcp() | |
30 | assert( peer:connect("127.0.0.1", 8888) ) | |
31 | ||
32 | -- [[ SSL wrapper | |
33 | peer = assert( ssl.wrap(peer, params) ) | |
34 | assert( peer:dohandshake() ) | |
35 | --]] | |
36 | ||
37 | peer:settimeout(0.3) | |
38 | ||
39 | local str = "a rose is a rose is a rose is a...\n" | |
40 | while true do | |
41 | print("Sending...") | |
42 | local succ, err = peer:send(str) | |
43 | while succ do | |
44 | succ, err = peer:send(str) | |
45 | end | |
46 | print("Waiting...", err) | |
47 | wait(peer, err) | |
48 | end | |
49 | peer:close() |