diff options
author | William Ahern <william@25thandclement.com> | 2016-12-08 17:55:35 -0800 |
---|---|---|
committer | William Ahern <william@25thandclement.com> | 2016-12-08 17:55:35 -0800 |
commit | 028873f1fde5b91a3b8d2f80f350ca1682146029 (patch) | |
tree | 8975018aba86088766bb9953c7e5a715f9f8abc3 | |
parent | db6e414d68c0f94c2497d363f6131b4de1710ba9 (diff) | |
download | luaossl-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.c | 109 |
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 | |||
1573 | static 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 | |||
1581 | static 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 | |||
1601 | static 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 | |||
1609 | static 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 | |||
1670 | static int compat_init(void) { | 1747 | static 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 |
8368 | static int xp_setAuthLevel(lua_State *L) { | 8445 | static 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 | ||
8390 | static int xp_setHost(lua_State *L) { | 8468 | static 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 | ||
8404 | static int xp_addHost(lua_State *L) { | 8484 | static 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 | ||
8418 | static int xp_setEmail(lua_State *L) { | 8500 | static 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 | ||
8432 | static int xp_setIP(lua_State *L) { | 8516 | static 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 | ||
8445 | static int xp__gc(lua_State *L) { | 8530 | static 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 | ||