aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/luaossl.pdfbin274644 -> 274840 bytes
-rw-r--r--doc/luaossl.tex4
-rw-r--r--src/openssl.c13
3 files changed, 17 insertions, 0 deletions
diff --git a/doc/luaossl.pdf b/doc/luaossl.pdf
index 85c165e..106b4ea 100644
--- a/doc/luaossl.pdf
+++ b/doc/luaossl.pdf
Binary files differ
diff --git a/doc/luaossl.tex b/doc/luaossl.tex
index bbdf055..e75a678 100644
--- a/doc/luaossl.tex
+++ b/doc/luaossl.tex
@@ -981,6 +981,10 @@ A table mapping OpenSSL named constants. Includes all constants provided by \mod
\subsubsection[\fn{ssl.interpose}]{\fn{ssl.interpose($name$, $function$)}}
Add or interpose an ssl class method. Returns the previous method, if any.
+\subsubsection[\fn{ssl:setContext}]{\fn{ssl:setContext($context$)}}
+
+Replaces the \module{openssl.ssl.context} used by $ssl$ with $context$.
+
\subsubsection[\fn{ssl:setOptions}]{\fn{ssl:setOptions($flags$)}}
Adds the option flags of the SSL connection instance. See \fn{openssl.ssl.context:setOptions}.
diff --git a/src/openssl.c b/src/openssl.c
index dc67d8a..890ca2c 100644
--- a/src/openssl.c
+++ b/src/openssl.c
@@ -8316,6 +8316,18 @@ static int ssl_interpose(lua_State *L) {
} /* ssl_interpose() */
+static int ssl_setContext(lua_State *L) {
+ SSL *ssl = checksimple(L, 1, SSL_CLASS);
+ SSL_CTX *ctx = checksimple(L, 2, SSL_CTX_CLASS);
+
+ if (!SSL_set_SSL_CTX(ssl, ctx))
+ return auxL_error(L, auxL_EOPENSSL, "ssl.setContext");
+
+ lua_pushboolean(L, 1);
+
+ return 1;
+} /* ssl_setContext() */
+
static int ssl_setOptions(lua_State *L) {
SSL *ssl = checksimple(L, 1, SSL_CLASS);
auxL_Integer options = auxL_checkinteger(L, 2);
@@ -8676,6 +8688,7 @@ static int ssl__gc(lua_State *L) {
static const auxL_Reg ssl_methods[] = {
+ { "setContext", &ssl_setContext },
{ "setOptions", &ssl_setOptions },
{ "getOptions", &ssl_getOptions },
{ "clearOptions", &ssl_clearOptions },