Sat, 17 Dec 2011 10:30:58 -0800
context: Add no_compression for OpenSSL 0.9.8 as well
Since OpenSSL 0.9.8 doesn't have SSL_OP_NO_COMPRESSION, this is
implemented by simplying NULLing out the SSL_CTX->comp_methods stack.
0 | 1 | -- |
2 | -- Test the conn:want() function | |
3 | -- | |
4 | -- Public domain | |
5 | -- | |
6 | require("socket") | |
7 | require("ssl") | |
8 | ||
9 | local params = { | |
10 | mode = "client", | |
11 | protocol = "sslv3", | |
12 | key = "../certs/clientAkey.pem", | |
13 | certificate = "../certs/clientA.pem", | |
14 | cafile = "../certs/rootA.pem", | |
15 | verify = {"peer", "fail_if_no_peer_cert"}, | |
16 | options = {"all", "no_sslv2"}, | |
17 | } | |
18 | ||
19 | -- Wait until socket is ready (for reading or writing) | |
20 | local function wait(peer) | |
21 | -- What event blocked us? | |
22 | local err | |
23 | if peer.want then -- Is it an SSL connection? | |
24 | err = peer:want() | |
25 | print("Want? ", err) | |
26 | else | |
27 | -- No, it's a normal TCP connection... | |
28 | err = "timeout" | |
29 | end | |
30 | ||
31 | if err == "read" or err == "timeout" then | |
32 | socket.select({peer}, nil) | |
33 | elseif err == "write" then | |
34 | socket.select(nil, {peer}) | |
35 | else | |
36 | peer:close() | |
37 | os.exit(1) | |
38 | end | |
39 | end | |
40 | ||
41 | -- Start the TCP connection | |
42 | local peer = socket.tcp() | |
43 | assert( peer:connect("127.0.0.1", 8888) ) | |
44 | ||
45 | -- [[ SSL wrapper | |
46 | peer = assert( ssl.wrap(peer, params) ) | |
47 | peer:settimeout(0.3) | |
48 | local succ = peer:dohandshake() | |
49 | while not succ do | |
50 | wait(peer) | |
51 | succ = peer:dohandshake() | |
52 | end | |
53 | print("** Handshake done") | |
54 | --]] | |
55 | ||
56 | -- If the section above is commented, the timeout is not set. | |
57 | -- We set it again for safetiness. | |
58 | peer:settimeout(0.3) | |
59 | ||
60 | -- Try to receive a line | |
61 | local str = peer:receive("*l") | |
62 | while not str do | |
63 | wait(peer) | |
64 | str = peer:receive("*l") | |
65 | end | |
66 | peer:close() |