nixio: Add support for DER certificates, PX5G fix Certmaster
This commit is contained in:
parent
4934c97978
commit
0ebce1d608
5 changed files with 28 additions and 6 deletions
0
libs/nixio/root/etc/nixio/.nixio_stamp
Normal file
0
libs/nixio/root/etc/nixio/.nixio_stamp
Normal file
|
@ -113,7 +113,22 @@ static int nixio_tls_ctx_create(lua_State *L) {
|
|||
static int nixio_tls_ctx_set_cert(lua_State *L) {
|
||||
SSL_CTX *ctx = nixio__checktlsctx(L);
|
||||
const char *cert = luaL_checkstring(L, 2);
|
||||
return nixio__tls_pstatus(L, SSL_CTX_use_certificate_chain_file(ctx, cert));
|
||||
const char *type = luaL_optstring(L, 3, "chain");
|
||||
int ktype;
|
||||
|
||||
if (!strcmp(type, "chain")) {
|
||||
return nixio__tls_pstatus(L,
|
||||
SSL_CTX_use_certificate_chain_file(ctx, cert));
|
||||
} else if (!strcmp(type, "pem")) {
|
||||
ktype = SSL_FILETYPE_PEM;
|
||||
} else if (!strcmp(type, "asn1")) {
|
||||
ktype = SSL_FILETYPE_ASN1;
|
||||
} else {
|
||||
return luaL_argerror(L, 3, "supported values: chain, pem, asn1");
|
||||
}
|
||||
|
||||
return nixio__tls_pstatus(L,
|
||||
SSL_CTX_use_certificate_file(ctx, cert, ktype));
|
||||
}
|
||||
|
||||
static int nixio_tls_ctx_set_key(lua_State *L) {
|
||||
|
|
|
@ -29,7 +29,7 @@ function der2pem(data, type)
|
|||
local b64 = nixio.bin.b64encode(data)
|
||||
|
||||
local outdata = {preamble[type]}
|
||||
for i = 1, 64, #b64 + 63 do
|
||||
for i = 1, #b64, 64 do
|
||||
outdata[#outdata + 1] = b64:sub(i, i + 63)
|
||||
end
|
||||
outdata[#outdata + 1] = postamble[type]
|
||||
|
@ -37,3 +37,8 @@ function der2pem(data, type)
|
|||
|
||||
return table.concat(outdata, "\n")
|
||||
end
|
||||
|
||||
function pem2der(data)
|
||||
local b64 = data:gsub({["\n"] = "", ["%-%-%-%-%-.-%-%-%-%-%-"] = ""})
|
||||
return nixio.bin.b64decode(b64)
|
||||
end
|
|
@ -6,6 +6,7 @@ local px5g = require "px5g"
|
|||
local nixio = require "nixio"
|
||||
local fs = require "nixio.fs"
|
||||
local os = require "os"
|
||||
nixio.umask(77)
|
||||
|
||||
if not fs.access(certfile) then
|
||||
local key = px5g.genkey(2048)
|
||||
|
|
|
@ -85,21 +85,22 @@ static int px5g_rsa_create_selfsigned(lua_State *L) {
|
|||
strftime(tstr, sizeof(tstr), "%F %H:%M:%S", gmtime(&to)),
|
||||
4, "Invalid Time");
|
||||
|
||||
size_t join = 1;
|
||||
lua_pushliteral(L, "");
|
||||
for (int i = 0; i < (sizeof(xfields) / sizeof(*xfields)); i++) {
|
||||
lua_pushstring(L, xfields[i]);
|
||||
lua_rawget(L, 2);
|
||||
if (lua_isstring(L, -1)) {
|
||||
const char *val = lua_tostring(L, -1);
|
||||
luaL_argcheck(L, !strchr(val, '\''), 2, "Invalid Value");
|
||||
lua_pushfstring(L, "%s%s='%s';",
|
||||
lua_tostring(L, -2), xfields[i], val);
|
||||
lua_remove(L, -2);
|
||||
luaL_argcheck(L, !strchr(val, ';'), 2, "Invalid Value");
|
||||
lua_pushfstring(L, "%s=%s;", xfields[i], val);
|
||||
lua_remove(L, -2);
|
||||
join++;
|
||||
} else {
|
||||
lua_pop(L, 1);
|
||||
}
|
||||
}
|
||||
lua_concat(L, join);
|
||||
|
||||
x509_raw cert;
|
||||
x509write_init_raw(&cert);
|
||||
|
|
Loading…
Reference in a new issue