|
1 -- |
|
2 -- Public domain |
|
3 -- |
|
4 require("socket") |
|
5 require("ssl") |
|
6 |
|
7 local params = { |
|
8 mode = "server", |
|
9 protocol = "sslv3", |
|
10 key = "../certs/serverAkey.pem", |
|
11 certificate = "../certs/serverA.pem", |
|
12 cafile = "../certs/rootA.pem", |
|
13 verify = {"peer", "fail_if_no_peer_cert"}, |
|
14 options = {"all", "no_sslv2"}, |
|
15 } |
|
16 |
|
17 -- [[ SSL context |
|
18 local ctx = assert(ssl.newcontext(params)) |
|
19 --]] |
|
20 |
|
21 local server = socket.tcp() |
|
22 server:setoption('reuseaddr', true) |
|
23 assert( server:bind("127.0.0.1", 8888) ) |
|
24 server:listen() |
|
25 |
|
26 local peer = server:accept() |
|
27 |
|
28 -- [[ SSL wrapper |
|
29 peer = assert( ssl.wrap(peer, ctx) ) |
|
30 socket.sleep(2) -- force the timeout in the client dohandshake() |
|
31 assert( peer:dohandshake() ) |
|
32 --]] |
|
33 |
|
34 for i = 1, 10 do |
|
35 local v = tostring(i) |
|
36 io.write(v) |
|
37 io.flush() |
|
38 peer:send(v) |
|
39 socket.sleep(1) -- force the timeout in the client receive() |
|
40 end |
|
41 io.write("\n") |
|
42 peer:send("\n") |
|
43 peer:close() |