summaryrefslogtreecommitdiff
path: root/src/openssl.c
diff options
context:
space:
mode:
authorWilliam Ahern <william@25thandclement.com>2016-10-29 15:13:43 -0700
committerWilliam Ahern <william@25thandclement.com>2016-10-29 15:13:43 -0700
commit2ea408fad69bf85df4f3991e91cb0e4dc3727955 (patch)
tree494df07c177137607116f0c3deb6541bd9685b55 /src/openssl.c
parent20afc608216ab2a09c91626f099e40928bd7fc58 (diff)
downloadluaossl-2ea408fad69bf85df4f3991e91cb0e4dc3727955.tar.gz
luaossl-2ea408fad69bf85df4f3991e91cb0e4dc3727955.tar.bz2
luaossl-2ea408fad69bf85df4f3991e91cb0e4dc3727955.zip
use SSL_client_version
OPENSSL_NO_SSL2 isn't defined even though SSLv2 methods are gone
Diffstat (limited to 'src/openssl.c')
-rw-r--r--src/openssl.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/openssl.c b/src/openssl.c
index f05b57a..823bc23 100644
--- a/src/openssl.c
+++ b/src/openssl.c
@@ -195,6 +195,10 @@
195#define HAVE_RSA_SET0_KEY OPENSSL_PREREQ(1,1,0) 195#define HAVE_RSA_SET0_KEY OPENSSL_PREREQ(1,1,0)
196#endif 196#endif
197 197
198#ifndef HAVE_SSL_CLIENT_VERSION
199#define HAVE_SSL_CLIENT_VERSION OPENSSL_PREREQ(1,1,0)
200#endif
201
198#ifndef HAVE_SSL_CTX_SET_ALPN_PROTOS 202#ifndef HAVE_SSL_CTX_SET_ALPN_PROTOS
199#define HAVE_SSL_CTX_SET_ALPN_PROTOS (OPENSSL_PREREQ(1,0,2) || LIBRESSL_PREREQ(2,1,3)) 203#define HAVE_SSL_CTX_SET_ALPN_PROTOS (OPENSSL_PREREQ(1,0,2) || LIBRESSL_PREREQ(2,1,3))
200#endif 204#endif
@@ -223,6 +227,14 @@
223#define HAVE_SSL_UP_REF OPENSSL_PREREQ(1,1,0) 227#define HAVE_SSL_UP_REF OPENSSL_PREREQ(1,1,0)
224#endif 228#endif
225 229
230#ifndef HAVE_SSLV2_CLIENT_METHOD
231#define HAVE_SSLV2_CLIENT_METHOD (!OPENSSL_PREREQ(1,1,0) && !defined OPENSSL_NO_SSL2)
232#endif
233
234#ifndef HAVE_SSLV2_SERVER_METHOD
235#define HAVE_SSLV2_SERVER_METHOD (!OPENSSL_PREREQ(1,1,0) && !defined OPENSSL_NO_SSL2)
236#endif
237
226#ifndef HAVE_X509_STORE_REFERENCES 238#ifndef HAVE_X509_STORE_REFERENCES
227#define HAVE_X509_STORE_REFERENCES (!OPENSSL_PREREQ(1,1,0)) 239#define HAVE_X509_STORE_REFERENCES (!OPENSSL_PREREQ(1,1,0))
228#endif 240#endif
@@ -1443,6 +1455,14 @@ static void compat_RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d) {
1443} /* compat_RSA_set0_key() */ 1455} /* compat_RSA_set0_key() */
1444#endif 1456#endif
1445 1457
1458#if !HAVE_SSL_CLIENT_VERSION
1459#define SSL_client_version(...) compat_SSL_client_version(__VA_ARGS__)
1460
1461static int compat_SSL_client_version(const SSL *ssl) {
1462 return ssl->client_version;
1463} /* compat_SSL_client_version() */
1464#endif
1465
1446#if !HAVE_SSL_UP_REF 1466#if !HAVE_SSL_UP_REF
1447#define SSL_up_ref(...) compat_SSL_up_ref(__VA_ARGS__) 1467#define SSL_up_ref(...) compat_SSL_up_ref(__VA_ARGS__)
1448 1468
@@ -7077,7 +7097,7 @@ static int sx_new(lua_State *L) {
7077 method = (srv)? &SSLv23_server_method : &SSLv23_client_method; 7097 method = (srv)? &SSLv23_server_method : &SSLv23_client_method;
7078 options = SSL_OP_NO_SSLv2|SSL_OP_NO_SSLv3; 7098 options = SSL_OP_NO_SSLv2|SSL_OP_NO_SSLv3;
7079 break; 7099 break;
7080#ifndef OPENSSL_NO_SSL2 7100#if HAVE_SSLV2_CLIENT_METHOD && HAVE_SSLV2_SERVER_METHOD
7081 case 2: /* SSLv2 */ 7101 case 2: /* SSLv2 */
7082 method = (srv)? &SSLv2_server_method : &SSLv2_client_method; 7102 method = (srv)? &SSLv2_server_method : &SSLv2_client_method;
7083 break; 7103 break;
@@ -7700,7 +7720,7 @@ static int ssl_getVersion(lua_State *L) {
7700static int ssl_getClientVersion(lua_State *L) { 7720static int ssl_getClientVersion(lua_State *L) {
7701 SSL *ssl = checksimple(L, 1, SSL_CLASS); 7721 SSL *ssl = checksimple(L, 1, SSL_CLASS);
7702 int format = luaL_checkoption(L, 2, "d", (const char *[]){ "d", ".", "f", NULL }); 7722 int format = luaL_checkoption(L, 2, "d", (const char *[]){ "d", ".", "f", NULL });
7703 int version = ssl->client_version; 7723 int version = SSL_client_version(ssl);
7704 int major, minor; 7724 int major, minor;
7705 7725
7706 switch (format) { 7726 switch (format) {