From a5ae3959b5cde24880fb79a1e489eb839cdeb8c5 Mon Sep 17 00:00:00 2001 From: Steven Barth Date: Wed, 4 Mar 2009 13:09:32 +0000 Subject: [PATCH] Set /etc/private.rsa as default key for axTLS contexts More openssl - axTLS fixes --- libs/nixio/axTLS/.prepared | 0 libs/nixio/src/tls-context.c | 28 +++++++++++++++++++++++----- 2 files changed, 23 insertions(+), 5 deletions(-) delete mode 100644 libs/nixio/axTLS/.prepared diff --git a/libs/nixio/axTLS/.prepared b/libs/nixio/axTLS/.prepared deleted file mode 100644 index e69de29bb..000000000 diff --git a/libs/nixio/src/tls-context.c b/libs/nixio/src/tls-context.c index c55517630..bcbe1fc24 100644 --- a/libs/nixio/src/tls-context.c +++ b/libs/nixio/src/tls-context.c @@ -43,14 +43,16 @@ static int nixio__tls_pstatus(lua_State *L, int code) { static int nixio_tls_ctx(lua_State * L) { const char *method = luaL_optlstring(L, 1, "tlsv1", NULL); + luaL_getmetatable(L, NIXIO_TLS_CTX_META); SSL_CTX **ctx = lua_newuserdata(L, sizeof(SSL_CTX *)); if (!ctx) { return luaL_error(L, "out of memory"); } /* create userdata */ - luaL_getmetatable(L, NIXIO_TLS_CTX_META); + lua_pushvalue(L, -2); lua_setmetatable(L, -2); + lua_getfield(L, -1, "tls_defaultkey"); if (!strcmp(method, "tlsv1")) { *ctx = SSL_CTX_new(TLSv1_method()); @@ -60,13 +62,18 @@ static int nixio_tls_ctx(lua_State * L) { return luaL_argerror(L, 1, "supported values: tlsv1, sslv23"); } - - SSL_CTX_set_options(*ctx, SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3); - if (!(*ctx)) { return luaL_error(L, "unable to create TLS context"); } + const char *autoload = lua_tostring(L, -1); + if (autoload) { + SSL_CTX_use_PrivateKey_file(*ctx, autoload, SSL_FILETYPE_PEM); + } + lua_pop(L, 1); + + SSL_CTX_set_options(*ctx, SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3); + return 1; } @@ -202,10 +209,21 @@ void nixio_open_tls_context(lua_State *L) { /* register module functions */ luaL_register(L, NULL, R); +#ifndef WITH_AXTLS + lua_pushliteral(L, "openssl"); +#else + lua_pushliteral(L, "axtls"); +#endif + lua_setfield(L, -2, "tls_provider"); + /* create context metatable */ luaL_newmetatable(L, NIXIO_TLS_CTX_META); lua_pushvalue(L, -1); lua_setfield(L, -2, "__index"); luaL_register(L, NULL, CTX_M); - lua_pop(L, 1); +#ifdef WITH_AXTLS + lua_pushliteral(L, "/etc/private.rsa"); + lua_setfield(L, -2, "tls_defaultkey"); +#endif + lua_setfield(L, -2, "meta_tls_context"); } -- 2.11.0