mirror of
https://github.com/brunoos/luasec.git
synced 2024-12-27 12:58:21 +01:00
Add sample DANE usage
This commit is contained in:
parent
6359275c5f
commit
5ffe22e98e
40
samples/dane/client.lua
Normal file
40
samples/dane/client.lua
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
|
||||||
|
local socket = require "socket";
|
||||||
|
local ssl = require "ssl";
|
||||||
|
|
||||||
|
local dns = require "lunbound".new();
|
||||||
|
|
||||||
|
|
||||||
|
local cfg = {
|
||||||
|
protocol = "tlsv1_2",
|
||||||
|
mode = "client",
|
||||||
|
ciphers = "DEFAULT",
|
||||||
|
capath = "/etc/ssl/certs",
|
||||||
|
verify = "peer",
|
||||||
|
dane = true,
|
||||||
|
};
|
||||||
|
|
||||||
|
local function daneconnect(host, port)
|
||||||
|
port = port or "443";
|
||||||
|
local conn = ssl.wrap(socket.connect(host, port), cfg);
|
||||||
|
|
||||||
|
local tlsa = dns:resolve("_" .. port .. "._tcp." .. host, 52);
|
||||||
|
assert(tlsa.secure, "Insecure DNS");
|
||||||
|
|
||||||
|
assert(conn:setdane(host));
|
||||||
|
for i = 1, tlsa.n do
|
||||||
|
local usage, selector, mtype = tlsa[i] :byte(1, 3);
|
||||||
|
assert(conn:settlsa(usage, selector, mtype, tlsa[i] :sub(4, - 1)));
|
||||||
|
end
|
||||||
|
|
||||||
|
assert(conn:dohandshake());
|
||||||
|
return conn;
|
||||||
|
end
|
||||||
|
|
||||||
|
if not ... then
|
||||||
|
print("Usage: client.lua example.com [port]");
|
||||||
|
return os.exit(1);
|
||||||
|
end
|
||||||
|
local conn = daneconnect(...);
|
||||||
|
|
||||||
|
print(conn:getpeerverification());
|
Loading…
Reference in New Issue
Block a user