mirror of
https://github.com/nmap/nmap.git
synced 2025-12-10 09:49:05 +00:00
Remove deprecated calls from OpenSSL 1.1 API. Closes #630
This commit is contained in:
@@ -1,5 +1,8 @@
|
|||||||
# Nmap Changelog ($Id$); -*-text-*-
|
# Nmap Changelog ($Id$); -*-text-*-
|
||||||
|
|
||||||
|
o [GH#630] Updated or removed some OpenSSL library calls that were deprecated
|
||||||
|
in OpenSSL 1.1. [eroen]
|
||||||
|
|
||||||
o [NSE] New script http-hsts-verify reports whether or not HTTP Strict
|
o [NSE] New script http-hsts-verify reports whether or not HTTP Strict
|
||||||
Transport Security is configured. [Ícaro Torres]
|
Transport Security is configured. [Ícaro Torres]
|
||||||
|
|
||||||
|
|||||||
@@ -173,10 +173,12 @@ SSL_CTX *setup_ssl_listen(void)
|
|||||||
if (sslctx)
|
if (sslctx)
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
|
#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
SSL_library_init();
|
SSL_library_init();
|
||||||
OpenSSL_add_all_algorithms();
|
OpenSSL_add_all_algorithms();
|
||||||
ERR_load_crypto_strings();
|
ERR_load_crypto_strings();
|
||||||
SSL_load_error_strings();
|
SSL_load_error_strings();
|
||||||
|
#endif
|
||||||
|
|
||||||
/* RAND_status initializes the random number generator through a variety of
|
/* RAND_status initializes the random number generator through a variety of
|
||||||
platform-dependent methods, then returns 1 if there is enough entropy or
|
platform-dependent methods, then returns 1 if there is enough entropy or
|
||||||
@@ -585,12 +587,35 @@ static int ssl_gen_cert(X509 **cert, EVP_PKEY **key)
|
|||||||
if (X509_add_ext(*cert, ext, -1) == 0)
|
if (X509_add_ext(*cert, ext, -1) == 0)
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
|
#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined LIBRESSL_VERSION_NUMBER
|
||||||
|
{
|
||||||
|
ASN1_TIME *tb, *ta;
|
||||||
|
tb = NULL;
|
||||||
|
ta = NULL;
|
||||||
|
|
||||||
|
if (X509_set_issuer_name(*cert, X509_get_subject_name(*cert)) == 0
|
||||||
|
|| (tb = ASN1_STRING_dup(X509_get0_notBefore(*cert))) == 0
|
||||||
|
|| X509_gmtime_adj(tb, 0) == 0
|
||||||
|
|| X509_set1_notBefore(*cert, tb) == 0
|
||||||
|
|| (ta = ASN1_STRING_dup(X509_get0_notAfter(*cert))) == 0
|
||||||
|
|| X509_gmtime_adj(ta, 60) == 0
|
||||||
|
|| X509_set1_notAfter(*cert, ta) == 0
|
||||||
|
|| X509_set_pubkey(*cert, *key) == 0) {
|
||||||
|
ASN1_STRING_free(tb);
|
||||||
|
ASN1_STRING_free(ta);
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
ASN1_STRING_free(tb);
|
||||||
|
ASN1_STRING_free(ta);
|
||||||
|
}
|
||||||
|
#else
|
||||||
if (X509_set_issuer_name(*cert, X509_get_subject_name(*cert)) == 0
|
if (X509_set_issuer_name(*cert, X509_get_subject_name(*cert)) == 0
|
||||||
|| X509_gmtime_adj(X509_get_notBefore(*cert), 0) == 0
|
|| X509_gmtime_adj(X509_get_notBefore(*cert), 0) == 0
|
||||||
|| X509_gmtime_adj(X509_get_notAfter(*cert), DEFAULT_CERT_DURATION) == 0
|
|| X509_gmtime_adj(X509_get_notAfter(*cert), DEFAULT_CERT_DURATION) == 0
|
||||||
|| X509_set_pubkey(*cert, *key) == 0) {
|
|| X509_set_pubkey(*cert, *key) == 0) {
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Sign it. */
|
/* Sign it. */
|
||||||
if (X509_sign(*cert, *key, EVP_sha1()) == 0)
|
if (X509_sign(*cert, *key, EVP_sha1()) == 0)
|
||||||
|
|||||||
@@ -12,8 +12,10 @@ are rejected. The SSL transactions happen over OpenSSL BIO pairs.
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include <openssl/bio.h>
|
#include <openssl/bio.h>
|
||||||
|
#include <openssl/bn.h>
|
||||||
#include <openssl/ssl.h>
|
#include <openssl/ssl.h>
|
||||||
#include <openssl/err.h>
|
#include <openssl/err.h>
|
||||||
|
#include <openssl/rsa.h>
|
||||||
#include <openssl/x509.h>
|
#include <openssl/x509.h>
|
||||||
#include <openssl/x509v3.h>
|
#include <openssl/x509v3.h>
|
||||||
|
|
||||||
@@ -347,12 +349,35 @@ static int gen_cert(X509 **cert, EVP_PKEY **key,
|
|||||||
if (set_dNSNames(*cert, dNSNames) == 0)
|
if (set_dNSNames(*cert, dNSNames) == 0)
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
|
#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined LIBRESSL_VERSION_NUMBER
|
||||||
|
{
|
||||||
|
ASN1_TIME *tb, *ta;
|
||||||
|
tb = NULL;
|
||||||
|
ta = NULL;
|
||||||
|
|
||||||
|
if (X509_set_issuer_name(*cert, X509_get_subject_name(*cert)) == 0
|
||||||
|
|| (tb = ASN1_STRING_dup(X509_get0_notBefore(*cert))) == 0
|
||||||
|
|| X509_gmtime_adj(tb, 0) == 0
|
||||||
|
|| X509_set1_notBefore(*cert, tb) == 0
|
||||||
|
|| (ta = ASN1_STRING_dup(X509_get0_notAfter(*cert))) == 0
|
||||||
|
|| X509_gmtime_adj(ta, 60) == 0
|
||||||
|
|| X509_set1_notAfter(*cert, ta) == 0
|
||||||
|
|| X509_set_pubkey(*cert, *key) == 0) {
|
||||||
|
ASN1_STRING_free(tb);
|
||||||
|
ASN1_STRING_free(ta);
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
ASN1_STRING_free(tb);
|
||||||
|
ASN1_STRING_free(ta);
|
||||||
|
}
|
||||||
|
#else
|
||||||
if (X509_set_issuer_name(*cert, X509_get_subject_name(*cert)) == 0
|
if (X509_set_issuer_name(*cert, X509_get_subject_name(*cert)) == 0
|
||||||
|| X509_gmtime_adj(X509_get_notBefore(*cert), 0) == 0
|
|| X509_gmtime_adj(X509_get_notBefore(*cert), 0) == 0
|
||||||
|| X509_gmtime_adj(X509_get_notAfter(*cert), 60) == 0
|
|| X509_gmtime_adj(X509_get_notAfter(*cert), 60) == 0
|
||||||
|| X509_set_pubkey(*cert, *key) == 0) {
|
|| X509_set_pubkey(*cert, *key) == 0) {
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Sign it. */
|
/* Sign it. */
|
||||||
if (X509_sign(*cert, *key, EVP_sha1()) == 0)
|
if (X509_sign(*cert, *key, EVP_sha1()) == 0)
|
||||||
@@ -556,9 +581,11 @@ int main(void)
|
|||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
|
#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
SSL_library_init();
|
SSL_library_init();
|
||||||
ERR_load_crypto_strings();
|
ERR_load_crypto_strings();
|
||||||
SSL_load_error_strings();
|
SSL_load_error_strings();
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Test single pattens in both the commonName and dNSName positions. */
|
/* Test single pattens in both the commonName and dNSName positions. */
|
||||||
for (i = 0; i < NELEMS(single_tests); i++)
|
for (i = 0; i < NELEMS(single_tests); i++)
|
||||||
|
|||||||
@@ -602,12 +602,13 @@ static const struct luaL_Reg openssllib[] = {
|
|||||||
|
|
||||||
LUALIB_API int luaopen_openssl(lua_State *L) {
|
LUALIB_API int luaopen_openssl(lua_State *L) {
|
||||||
|
|
||||||
OpenSSL_add_all_algorithms();
|
|
||||||
#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
OpenSSL_add_all_algorithms();
|
||||||
ERR_load_crypto_strings();
|
ERR_load_crypto_strings();
|
||||||
#else
|
#else
|
||||||
/* This is now deprecated in OpenSSL 1.1.0 _ No explicit initialisation
|
/* This is now deprecated in OpenSSL 1.1.0 _ No explicit initialisation
|
||||||
or de-initialisation is necessary */
|
or de-initialisation is necessary */
|
||||||
|
// OpenSSL_add_all_algorithms();
|
||||||
// ERR_load_crypto_strings();
|
// ERR_load_crypto_strings();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -142,6 +142,7 @@
|
|||||||
#include <openssl/bn.h>
|
#include <openssl/bn.h>
|
||||||
#include <openssl/bio.h>
|
#include <openssl/bio.h>
|
||||||
#include <openssl/pem.h>
|
#include <openssl/pem.h>
|
||||||
|
#include <openssl/rsa.h>
|
||||||
#include <openssl/ssl.h>
|
#include <openssl/ssl.h>
|
||||||
#include <openssl/x509.h>
|
#include <openssl/x509.h>
|
||||||
#include <openssl/x509v3.h>
|
#include <openssl/x509v3.h>
|
||||||
@@ -152,6 +153,9 @@
|
|||||||
/* Technically some of these things were added in 0x10100006
|
/* Technically some of these things were added in 0x10100006
|
||||||
* but that was pre-release. */
|
* but that was pre-release. */
|
||||||
#define HAVE_OPAQUE_STRUCTS 1
|
#define HAVE_OPAQUE_STRUCTS 1
|
||||||
|
#else
|
||||||
|
#define X509_get0_notBefore X509_get_notBefore
|
||||||
|
#define X509_get0_notAfter X509_get_notAfter
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@@ -457,9 +461,9 @@ static void x509_validity_to_table(lua_State *L, X509 *cert)
|
|||||||
{
|
{
|
||||||
lua_newtable(L);
|
lua_newtable(L);
|
||||||
|
|
||||||
asn1_time_to_obj(L, X509_get_notBefore(cert));
|
asn1_time_to_obj(L, X509_get0_notBefore(cert));
|
||||||
lua_setfield(L, -2, "notBefore");
|
lua_setfield(L, -2, "notBefore");
|
||||||
asn1_time_to_obj(L, X509_get_notAfter(cert));
|
asn1_time_to_obj(L, X509_get0_notAfter(cert));
|
||||||
lua_setfield(L, -2, "notAfter");
|
lua_setfield(L, -2, "notAfter");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -84,8 +84,10 @@ extern struct timeval nsock_tod;
|
|||||||
static SSL_CTX *ssl_init_common() {
|
static SSL_CTX *ssl_init_common() {
|
||||||
SSL_CTX *ctx;
|
SSL_CTX *ctx;
|
||||||
|
|
||||||
|
#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
SSL_load_error_strings();
|
SSL_load_error_strings();
|
||||||
SSL_library_init();
|
SSL_library_init();
|
||||||
|
#endif
|
||||||
|
|
||||||
ctx = SSL_CTX_new(SSLv23_client_method());
|
ctx = SSL_CTX_new(SSLv23_client_method());
|
||||||
if (!ctx) {
|
if (!ctx) {
|
||||||
|
|||||||
Reference in New Issue
Block a user