3 local finalisers = { };
4 local id = function (v) return v end
6 function handlers.options(a, k, b)
8 if type(b) ~= "table" then b = { b } end
9 for key, value in pairs(b) do
10 if value == true or value == false then
19 handlers.verify = handlers.options;
20 handlers.verifyext = handlers.options;
22 function finalisers.options(a)
24 for opt, enable in pairs(a) do
32 finalisers.verify = finalisers.options;
33 finalisers.verifyext = finalisers.options;
35 function finalisers.ciphers(a)
36 if type(a) == "table" then
37 return table.concat(a, ":");
42 local protocols = { "sslv2", "sslv3", "tlsv1", "tlsv1_1", "tlsv1_2" };
43 for i = 1, #protocols do protocols[protocols[i] .. "+"] = i - 1; end
45 local function protocol(a)
46 local min_protocol = protocols[a.protocol];
48 a.protocol = "sslv23";
49 for i = 1, min_protocol do
50 table.insert(a.options, "no_"..protocols[i]);
55 local function apply(a, b)
56 if type(b) == "table" then
57 for k,v in pairs(b) do
58 (handlers[k] or rawset)(a, k, v);
63 local function final(a)
65 for k,v in pairs(a) do
66 f[k] = (finalisers[k] or id)(v);
80 return setmetatable({options={}}, sslopts_mt);