From a5f1a0f62186d0bfeb62c17a22f9ba9d0ef5de37 Mon Sep 17 00:00:00 2001 From: daurnimator Date: Thu, 25 Oct 2018 17:58:18 +1100 Subject: regress/regress: Pull in some improvements from cqueues --- regress/regress.lua | 51 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 47 insertions(+), 4 deletions(-) diff --git a/regress/regress.lua b/regress/regress.lua index 4377db5..b89e996 100644 --- a/regress/regress.lua +++ b/regress/regress.lua @@ -1,3 +1,5 @@ +local require = require -- may be overloaded by regress.require + local regress = { openssl = require"openssl", bignum = require"openssl.bignum", @@ -98,12 +100,20 @@ function regress.export(...) return regress end -- export +function regress.require(modname) + local ok, module = pcall(require, modname) + + regress.check(ok, "module %s required", modname) + + return module +end -- regress.require + local counter = 0 function regress.genkey(type, ca_key, ca_crt) - local pkey = require"openssl.pkey" - local x509 = require"openssl.x509" - local name = require"openssl.x509.name" - local altname = require"openssl.x509.altname" + local pkey = regress.require"openssl.pkey" + local x509 = regress.require"openssl.x509" + local name = regress.require"openssl.x509.name" + local altname = regress.require"openssl.x509.altname" local key type = string.upper(type or "RSA") @@ -159,4 +169,37 @@ local function getsubtable(t, name, ...) end end -- getsubtable +function regress.newsslctx(protocol, accept, keytype) + local context = regress.require"openssl.ssl.context" + local ctx = context.new(protocol, accept) + + if keytype or keytype == nil then + local key, crt = regress.genkey(keytype) + + ctx:setCertificate(crt) + ctx:setPrivateKey(key) + end + + return ctx +end -- require.newsslctx + +local ctxcache = {} + +function regress.getsslctx(protocol, accept, keytype) + local keycache = getsubtable(ctxcache, protocol, accept) + + if keytype == nil then + keytype = "RSA" + end + + local ctx = keycache[keytype] + + if not ctx then + ctx = regress.newsslctx(protocol, accept, keytype) + keycache[keytype] = ctx + end + + return ctx +end -- regress.getsslctx + return regress -- cgit v1.2.3-59-g8ed1b