From 143ccf132326ccb449eb07bc170b1b217ea2f992 Mon Sep 17 00:00:00 2001 From: Jeremy List Date: Tue, 26 Feb 2019 10:51:44 +1300 Subject: [PATCH] PR feedback (Data structure) --- src/ssl.lua | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/src/ssl.lua b/src/ssl.lua index 10925e8..4ef9be1 100644 --- a/src/ssl.lua +++ b/src/ssl.lua @@ -74,35 +74,37 @@ local function newcontext(cfg) -- Mode succ, msg = context.setmode(ctx, cfg.mode) if not succ then return nil, msg end - -- Wrap singular certificate, key, etc in tables if necessary + if not cfg.certificates then + cfg.certificates = {} + end + local singularcertificate = {} + local singularexists = false for _, prop in pairs({ "key", "certificate", "password" }) do - if not cfg[prop .. "s"] then - if cfg[prop] then - cfg[prop .. "s"] = { cfg[prop] } - else - cfg[prop .. "s"] = {} - end + if cfg[prop] then + singularexists = true + singularcertificate[prop] = cfg[prop] end end - for i, certificate in pairs(cfg.certificates) do - local password = cfg.passwords[i] - local key = cfg.keys[i] + if singularexists then + table.insert(crt.certificates, singularcertificate) + end + for _, certificate in pairs(cfg.certificates) do -- Load the key - if key then - if password and - type(password) ~= "function" and - type(password) ~= "string" + if certificate.key then + if certificate.password and + type(certificate.password) ~= "function" and + type(certificate.password) ~= "string" then return nil, "invalid password type" end - succ, msg = context.loadkey(ctx, key, password) + succ, msg = context.loadkey(ctx, certificate.key, certificate.password) if not succ then return nil, msg end end -- Load the certificate(s) - if certificate then - succ, msg = context.loadcert(ctx, certificate) + if certificate.certificate then + succ, msg = context.loadcert(ctx, certificate.certificate) if not succ then return nil, msg end - if key and context.checkkey then + if certificate.key and context.checkkey then succ = context.checkkey(ctx) if not succ then return nil, "private key does not match public key" end end