summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Ahern <william@25thandclement.com>2016-12-08 17:55:35 -0800
committerWilliam Ahern <william@25thandclement.com>2016-12-08 17:55:35 -0800
commit028873f1fde5b91a3b8d2f80f350ca1682146029 (patch)
tree8975018aba86088766bb9953c7e5a715f9f8abc3
parentdb6e414d68c0f94c2497d363f6131b4de1710ba9 (diff)
downloadluaossl-028873f1fde5b91a3b8d2f80f350ca1682146029.tar.gz
luaossl-028873f1fde5b91a3b8d2f80f350ca1682146029.tar.bz2
luaossl-028873f1fde5b91a3b8d2f80f350ca1682146029.zip
fix build for OpenSSL releases prior to 1.0.2
-rw-r--r--src/openssl.c109
1 files changed, 101 insertions, 8 deletions
diff --git a/src/openssl.c b/src/openssl.c
index c5c692f..7addaa1 100644
--- a/src/openssl.c
+++ b/src/openssl.c
@@ -250,6 +250,10 @@
250#define HAVE_SSL_CLIENT_VERSION OPENSSL_PREREQ(1,1,0) 250#define HAVE_SSL_CLIENT_VERSION OPENSSL_PREREQ(1,1,0)
251#endif 251#endif
252 252
253#ifndef HAVE_SSL_CTX_GET0_PARAM
254#define HAVE_SSL_CTX_GET0_PARAM OPENSSL_PREREQ(1,0,2)
255#endif
256
253#ifndef HAVE_SSL_CTX_SET_ALPN_PROTOS 257#ifndef HAVE_SSL_CTX_SET_ALPN_PROTOS
254#define HAVE_SSL_CTX_SET_ALPN_PROTOS (OPENSSL_PREREQ(1,0,2) || LIBRESSL_PREREQ(2,1,3)) 258#define HAVE_SSL_CTX_SET_ALPN_PROTOS (OPENSSL_PREREQ(1,0,2) || LIBRESSL_PREREQ(2,1,3))
255#endif 259#endif
@@ -262,16 +266,28 @@
262#define HAVE_SSL_CTX_SET1_CERT_STORE (HAVE_SSL_CTX_set1_cert_store || 0) /* backwards compatible with old macro name */ 266#define HAVE_SSL_CTX_SET1_CERT_STORE (HAVE_SSL_CTX_set1_cert_store || 0) /* backwards compatible with old macro name */
263#endif 267#endif
264 268
269#ifndef HAVE_SSL_CTX_SET1_PARAM
270#define HAVE_SSL_CTX_SET1_PARAM (OPENSSL_PREREQ(1,0,2) || LIBRESSL_PREREQ(2,1,0))
271#endif
272
265#ifndef HAVE_SSL_CTX_CERT_STORE 273#ifndef HAVE_SSL_CTX_CERT_STORE
266#define HAVE_SSL_CTX_CERT_STORE (!OPENSSL_PREREQ(1,1,0)) 274#define HAVE_SSL_CTX_CERT_STORE (!OPENSSL_PREREQ(1,1,0))
267#endif 275#endif
268 276
277#ifndef HAVE_SSL_GET0_ALPN_SELECTED
278#define HAVE_SSL_GET0_ALPN_SELECTED HAVE_SSL_CTX_SET_ALPN_PROTOS
279#endif
280
281#ifndef HAVE_SSL_GET0_PARAM
282#define HAVE_SSL_GET0_PARAM OPENSSL_PREREQ(1,0,2)
283#endif
284
269#ifndef HAVE_SSL_SET_ALPN_PROTOS 285#ifndef HAVE_SSL_SET_ALPN_PROTOS
270#define HAVE_SSL_SET_ALPN_PROTOS HAVE_SSL_CTX_SET_ALPN_PROTOS 286#define HAVE_SSL_SET_ALPN_PROTOS HAVE_SSL_CTX_SET_ALPN_PROTOS
271#endif 287#endif
272 288
273#ifndef HAVE_SSL_GET0_ALPN_SELECTED 289#ifndef HAVE_SSL_SET1_PARAM
274#define HAVE_SSL_GET0_ALPN_SELECTED HAVE_SSL_CTX_SET_ALPN_PROTOS 290#define HAVE_SSL_SET1_PARAM OPENSSL_PREREQ(1,0,2)
275#endif 291#endif
276 292
277#ifndef HAVE_SSL_UP_REF 293#ifndef HAVE_SSL_UP_REF
@@ -286,10 +302,6 @@
286#define HAVE_SSLV2_SERVER_METHOD (!OPENSSL_PREREQ(1,1,0) && !defined OPENSSL_NO_SSL2) 302#define HAVE_SSLV2_SERVER_METHOD (!OPENSSL_PREREQ(1,1,0) && !defined OPENSSL_NO_SSL2)
287#endif 303#endif
288 304
289#ifndef HAVE_X509_AUTH_LEVEL
290#define HAVE_X509_AUTH_LEVEL OPENSSL_PREREQ(1,1,0)
291#endif
292
293#ifndef HAVE_X509_STORE_REFERENCES 305#ifndef HAVE_X509_STORE_REFERENCES
294#define HAVE_X509_STORE_REFERENCES (!OPENSSL_PREREQ(1,1,0)) 306#define HAVE_X509_STORE_REFERENCES (!OPENSSL_PREREQ(1,1,0))
295#endif 307#endif
@@ -302,6 +314,26 @@
302#define HAVE_X509_UP_REF OPENSSL_PREREQ(1,1,0) 314#define HAVE_X509_UP_REF OPENSSL_PREREQ(1,1,0)
303#endif 315#endif
304 316
317#ifndef HAVE_X509_VERIFY_PARAM_ADD1_HOST
318#define HAVE_X509_VERIFY_PARAM_ADD1_HOST OPENSSL_PREREQ(1,0,2)
319#endif
320
321#ifndef HAVE_X509_VERIFY_PARAM_SET_AUTH_LEVEL
322#define HAVE_X509_VERIFY_PARAM_SET_AUTH_LEVEL OPENSSL_PREREQ(1,1,0)
323#endif
324
325#ifndef HAVE_X509_VERIFY_PARAM_SET1_EMAIL
326#define HAVE_X509_VERIFY_PARAM_SET1_EMAIL OPENSSL_PREREQ(1,0,2)
327#endif
328
329#ifndef HAVE_X509_VERIFY_PARAM_SET1_HOST
330#define HAVE_X509_VERIFY_PARAM_SET1_HOST OPENSSL_PREREQ(1,0,2)
331#endif
332
333#ifndef HAVE_X509_VERIFY_PARAM_SET1_IP_ASC
334#define HAVE_X509_VERIFY_PARAM_SET1_IP_ASC OPENSSL_PREREQ(1,0,2)
335#endif
336
305#ifndef HMAC_INIT_EX_INT 337#ifndef HMAC_INIT_EX_INT
306#define HMAC_INIT_EX_INT OPENSSL_PREREQ(1,0,0) 338#define HMAC_INIT_EX_INT OPENSSL_PREREQ(1,0,0)
307#endif 339#endif
@@ -1535,6 +1567,22 @@ static int compat_SSL_client_version(const SSL *ssl) {
1535} /* compat_SSL_client_version() */ 1567} /* compat_SSL_client_version() */
1536#endif 1568#endif
1537 1569
1570#if !HAVE_SSL_GET0_PARAM
1571#define SSL_get0_param(ssl) compat_SSL_get0_param((ssl))
1572
1573static X509_VERIFY_PARAM *compat_SSL_get0_param(SSL *ssl) {
1574 return ssl->param;
1575} /* compat_SSL_get0_param() */
1576#endif
1577
1578#if !HAVE_SSL_SET1_PARAM
1579#define SSL_set1_param(ssl, vpm) compat_SSL_set1_param((ssl), (vpm))
1580
1581static int compat_SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm) {
1582 return X509_VERIFY_PARAM_set1(ssl->param, vpm);
1583} /* compat_SSL_set1_param() */
1584#endif
1585
1538#if !HAVE_SSL_UP_REF 1586#if !HAVE_SSL_UP_REF
1539#define SSL_up_ref(...) compat_SSL_up_ref(__VA_ARGS__) 1587#define SSL_up_ref(...) compat_SSL_up_ref(__VA_ARGS__)
1540 1588
@@ -1547,6 +1595,22 @@ static int compat_SSL_up_ref(SSL *ssl) {
1547} /* compat_SSL_up_ref() */ 1595} /* compat_SSL_up_ref() */
1548#endif 1596#endif
1549 1597
1598#if !HAVE_SSL_CTX_GET0_PARAM
1599#define SSL_CTX_get0_param(ctx) compat_SSL_CTX_get0_param((ctx))
1600
1601static X509_VERIFY_PARAM *compat_SSL_CTX_get0_param(SSL_CTX *ctx) {
1602 return ctx->param;
1603} /* compat_SSL_CTX_get0_param() */
1604#endif
1605
1606#if !HAVE_SSL_CTX_SET1_PARAM
1607#define SSL_CTX_set1_param(ctx, vpm) compat_SSL_CTX_set1_param((ctx), (vpm))
1608
1609static int compat_SSL_CTX_set1_param(SSL_CTX *ctx, X509_VERIFY_PARAM *vpm) {
1610 return X509_VERIFY_PARAM_set1(ctx->param, vpm);
1611} /* compat_SSL_CTX_set1_param() */
1612#endif
1613
1550#if !HAVE_X509_GET0_EXT 1614#if !HAVE_X509_GET0_EXT
1551#define X509_get0_ext(crt, i) X509_get_ext((crt), (i)) 1615#define X509_get0_ext(crt, i) X509_get_ext((crt), (i))
1552#endif 1616#endif
@@ -1667,6 +1731,19 @@ static int compat_X509_up_ref(X509 *crt) {
1667} /* compat_X509_up_ref() */ 1731} /* compat_X509_up_ref() */
1668#endif 1732#endif
1669 1733
1734#if !HAVE_X509_VERIFY_PARAM_SET1_EMAIL
1735/*
1736 * NB: Cannot emulate. Requires dereferencing X509_VERIFY_PARAM_ID objects,
1737 * which were always opaque.
1738 */
1739#endif
1740
1741#if !HAVE_X509_VERIFY_PARAM_SET1_HOST
1742/*
1743 * NB: See HAVE_X509_VERIFY_PARAM_SET1_EMAIL.
1744 */
1745#endif
1746
1670static int compat_init(void) { 1747static int compat_init(void) {
1671 static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; 1748 static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
1672 static int store_index = -1, ssl_ctx_index = -1, done; 1749 static int store_index = -1, ssl_ctx_index = -1, done;
@@ -8364,7 +8441,7 @@ static int xp_getDepth(lua_State *L) {
8364} /* xp_getDepth() */ 8441} /* xp_getDepth() */
8365 8442
8366 8443
8367#if HAVE_X509_AUTH_LEVEL 8444#if HAVE_X509_VERIFY_PARAM_SET_AUTH_LEVEL
8368static int xp_setAuthLevel(lua_State *L) { 8445static int xp_setAuthLevel(lua_State *L) {
8369 X509_VERIFY_PARAM *xp = checksimple(L, 1, X509_VERIFY_PARAM_CLASS); 8446 X509_VERIFY_PARAM *xp = checksimple(L, 1, X509_VERIFY_PARAM_CLASS);
8370 int auth_level = luaL_checkinteger(L, 2); 8447 int auth_level = luaL_checkinteger(L, 2);
@@ -8387,6 +8464,7 @@ static int xp_getAuthLevel(lua_State *L) {
8387#endif 8464#endif
8388 8465
8389 8466
8467#if HAVE_X509_VERIFY_PARAM_SET1_HOST
8390static int xp_setHost(lua_State *L) { 8468static int xp_setHost(lua_State *L) {
8391 X509_VERIFY_PARAM *xp = checksimple(L, 1, X509_VERIFY_PARAM_CLASS); 8469 X509_VERIFY_PARAM *xp = checksimple(L, 1, X509_VERIFY_PARAM_CLASS);
8392 size_t len; 8470 size_t len;
@@ -8399,8 +8477,10 @@ static int xp_setHost(lua_State *L) {
8399 lua_pushboolean(L, 1); 8477 lua_pushboolean(L, 1);
8400 return 1; 8478 return 1;
8401} /* xp_setHost() */ 8479} /* xp_setHost() */
8480#endif
8402 8481
8403 8482
8483#if HAVE_X509_VERIFY_PARAM_ADD1_HOST
8404static int xp_addHost(lua_State *L) { 8484static int xp_addHost(lua_State *L) {
8405 X509_VERIFY_PARAM *xp = checksimple(L, 1, X509_VERIFY_PARAM_CLASS); 8485 X509_VERIFY_PARAM *xp = checksimple(L, 1, X509_VERIFY_PARAM_CLASS);
8406 size_t len; 8486 size_t len;
@@ -8413,8 +8493,10 @@ static int xp_addHost(lua_State *L) {
8413 lua_pushboolean(L, 1); 8493 lua_pushboolean(L, 1);
8414 return 1; 8494 return 1;
8415} /* xp_addHost() */ 8495} /* xp_addHost() */
8496#endif
8416 8497
8417 8498
8499#if HAVE_X509_VERIFY_PARAM_SET1_EMAIL
8418static int xp_setEmail(lua_State *L) { 8500static int xp_setEmail(lua_State *L) {
8419 X509_VERIFY_PARAM *xp = checksimple(L, 1, X509_VERIFY_PARAM_CLASS); 8501 X509_VERIFY_PARAM *xp = checksimple(L, 1, X509_VERIFY_PARAM_CLASS);
8420 size_t len; 8502 size_t len;
@@ -8427,8 +8509,10 @@ static int xp_setEmail(lua_State *L) {
8427 lua_pushboolean(L, 1); 8509 lua_pushboolean(L, 1);
8428 return 1; 8510 return 1;
8429} /* xp_setEmail() */ 8511} /* xp_setEmail() */
8512#endif
8430 8513
8431 8514
8515#if HAVE_X509_VERIFY_PARAM_SET1_IP_ASC
8432static int xp_setIP(lua_State *L) { 8516static int xp_setIP(lua_State *L) {
8433 X509_VERIFY_PARAM *xp = checksimple(L, 1, X509_VERIFY_PARAM_CLASS); 8517 X509_VERIFY_PARAM *xp = checksimple(L, 1, X509_VERIFY_PARAM_CLASS);
8434 const char *str = luaL_checkstring(L, 2); 8518 const char *str = luaL_checkstring(L, 2);
@@ -8440,6 +8524,7 @@ static int xp_setIP(lua_State *L) {
8440 lua_pushboolean(L, 1); 8524 lua_pushboolean(L, 1);
8441 return 1; 8525 return 1;
8442} /* xp_setIP() */ 8526} /* xp_setIP() */
8527#endif
8443 8528
8444 8529
8445static int xp__gc(lua_State *L) { 8530static int xp__gc(lua_State *L) {
@@ -8458,14 +8543,22 @@ static const auxL_Reg xp_methods[] = {
8458 { "setTime", &xp_setTime }, 8543 { "setTime", &xp_setTime },
8459 { "setDepth", &xp_setDepth }, 8544 { "setDepth", &xp_setDepth },
8460 { "getDepth", &xp_getDepth }, 8545 { "getDepth", &xp_getDepth },
8461#if HAVE_X509_AUTH_LEVEL 8546#if HAVE_X509_VERIFY_PARAM_SET_AUTH_LEVEL
8462 { "setAuthLevel", &xp_setAuthLevel }, 8547 { "setAuthLevel", &xp_setAuthLevel },
8463 { "getAuthLevel", &xp_getAuthLevel }, 8548 { "getAuthLevel", &xp_getAuthLevel },
8464#endif 8549#endif
8550#if HAVE_X509_VERIFY_PARAM_SET1_HOST
8465 { "setHost", &xp_setHost }, 8551 { "setHost", &xp_setHost },
8552#endif
8553#if HAVE_X509_VERIFY_PARAM_ADD1_HOST
8466 { "addHost", &xp_addHost }, 8554 { "addHost", &xp_addHost },
8555#endif
8556#if HAVE_X509_VERIFY_PARAM_SET1_EMAIL
8467 { "setEmail", &xp_setEmail }, 8557 { "setEmail", &xp_setEmail },
8558#endif
8559#if HAVE_X509_VERIFY_PARAM_SET1_IP_ASC
8468 { "setIP", &xp_setIP }, 8560 { "setIP", &xp_setIP },
8561#endif
8469 { NULL, NULL }, 8562 { NULL, NULL },
8470}; 8563};
8471 8564