2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-09-01 23:25:38 +00:00

3068. [bug] Named failed to build with a OpenSSL without engine

support. [RT #23473]
This commit is contained in:
Mark Andrews
2011-03-11 01:11:54 +00:00
parent 2d96b63d31
commit 19f4b069dc
4 changed files with 39 additions and 15 deletions

View File

@@ -1,3 +1,6 @@
3068. [bug] Named failed to build with a OpenSSL without engine
support. [RT #23473]
3067. [bug] ixfr-from-differences {master|slave}; failed to 3067. [bug] ixfr-from-differences {master|slave}; failed to
select the master/slave zones. [RT #23580] select the master/slave zones. [RT #23580]

View File

@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE. * PERFORMANCE OF THIS SOFTWARE.
*/ */
/* $Id: dst_openssl.h,v 1.9 2009/10/06 04:40:14 tbox Exp $ */ /* $Id: dst_openssl.h,v 1.10 2011/03/11 01:11:54 marka Exp $ */
#ifndef DST_OPENSSL_H #ifndef DST_OPENSSL_H
#define DST_OPENSSL_H 1 #define DST_OPENSSL_H 1
@@ -23,13 +23,28 @@
#include <isc/lang.h> #include <isc/lang.h>
#include <isc/result.h> #include <isc/result.h>
#include <openssl/err.h>
#include <openssl/rand.h>
#include <openssl/evp.h>
#include <openssl/conf.h>
#include <openssl/crypto.h>
#if !defined(OPENSSL_NO_ENGINE) && defined(CRYPTO_LOCK_ENGINE) && \
(OPENSSL_VERSION_NUMBER >= 0x0090707f)
#define USE_ENGINE 1
#endif
ISC_LANG_BEGINDECLS ISC_LANG_BEGINDECLS
isc_result_t isc_result_t
dst__openssl_toresult(isc_result_t fallback); dst__openssl_toresult(isc_result_t fallback);
#ifdef USE_ENGINE
ENGINE * ENGINE *
dst__openssl_getengine(const char *engine); dst__openssl_getengine(const char *engine);
#else
#define dst__openssl_getengine(x) NULL
#endif
ISC_LANG_ENDDECLS ISC_LANG_ENDDECLS

View File

@@ -31,7 +31,7 @@
/* /*
* Principal Author: Brian Wellington * Principal Author: Brian Wellington
* $Id: openssl_link.c,v 1.29 2010/09/15 12:38:36 tbox Exp $ * $Id: openssl_link.c,v 1.30 2011/03/11 01:11:54 marka Exp $
*/ */
#ifdef OPENSSL #ifdef OPENSSL
@@ -50,16 +50,6 @@
#include "dst_internal.h" #include "dst_internal.h"
#include "dst_openssl.h" #include "dst_openssl.h"
#include <openssl/err.h>
#include <openssl/rand.h>
#include <openssl/evp.h>
#include <openssl/conf.h>
#include <openssl/crypto.h>
#if defined(CRYPTO_LOCK_ENGINE) && (OPENSSL_VERSION_NUMBER >= 0x0090707f)
#define USE_ENGINE 1
#endif
#ifdef USE_ENGINE #ifdef USE_ENGINE
#include <openssl/engine.h> #include <openssl/engine.h>
#endif #endif
@@ -308,19 +298,19 @@ dst__openssl_toresult(isc_result_t fallback) {
return (result); return (result);
} }
#if defined(USE_ENGINE)
ENGINE * ENGINE *
dst__openssl_getengine(const char *engine) { dst__openssl_getengine(const char *engine) {
if (engine == NULL) if (engine == NULL)
return (NULL); return (NULL);
#if defined(USE_ENGINE)
if (e == NULL) if (e == NULL)
return (NULL); return (NULL);
if (strcmp(engine, ENGINE_get_id(e)) == 0) if (strcmp(engine, ENGINE_get_id(e)) == 0)
return (e); return (e);
#endif
return (NULL); return (NULL);
} }
#endif
#else /* OPENSSL */ #else /* OPENSSL */

View File

@@ -17,7 +17,7 @@
/* /*
* Principal Author: Brian Wellington * Principal Author: Brian Wellington
* $Id: opensslrsa_link.c,v 1.39 2011/01/11 23:47:13 tbox Exp $ * $Id: opensslrsa_link.c,v 1.40 2011/03/11 01:11:54 marka Exp $
*/ */
#ifdef OPENSSL #ifdef OPENSSL
#include <config.h> #include <config.h>
@@ -51,7 +51,9 @@
#if OPENSSL_VERSION_NUMBER > 0x00908000L #if OPENSSL_VERSION_NUMBER > 0x00908000L
#include <openssl/bn.h> #include <openssl/bn.h>
#endif #endif
#ifdef USE_ENGINE
#include <openssl/engine.h> #include <openssl/engine.h>
#endif
/* /*
* We don't use configure for windows so enforce the OpenSSL version * We don't use configure for windows so enforce the OpenSSL version
@@ -1138,7 +1140,9 @@ opensslrsa_parse(dst_key_t *key, isc_lex_t *lexer, dst_key_t *pub) {
isc_result_t ret; isc_result_t ret;
int i; int i;
RSA *rsa = NULL, *pubrsa = NULL; RSA *rsa = NULL, *pubrsa = NULL;
#ifdef USE_ENGINE
ENGINE *e = NULL; ENGINE *e = NULL;
#endif
isc_mem_t *mctx = key->mctx; isc_mem_t *mctx = key->mctx;
const char *engine = NULL, *label = NULL; const char *engine = NULL, *label = NULL;
EVP_PKEY *pkey = NULL; EVP_PKEY *pkey = NULL;
@@ -1175,6 +1179,7 @@ opensslrsa_parse(dst_key_t *key, isc_lex_t *lexer, dst_key_t *pub) {
* See if we can fetch it. * See if we can fetch it.
*/ */
if (label != NULL) { if (label != NULL) {
#ifdef USE_ENGINE
if (engine == NULL) if (engine == NULL)
DST_RET(DST_R_NOENGINE); DST_RET(DST_R_NOENGINE);
e = dst__openssl_getengine(engine); e = dst__openssl_getengine(engine);
@@ -1209,6 +1214,9 @@ opensslrsa_parse(dst_key_t *key, isc_lex_t *lexer, dst_key_t *pub) {
dst__privstruct_free(&priv, mctx); dst__privstruct_free(&priv, mctx);
memset(&priv, 0, sizeof(priv)); memset(&priv, 0, sizeof(priv));
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
#else
DST_RET(DST_R_NOENGINE);
#endif
} }
rsa = RSA_new(); rsa = RSA_new();
@@ -1303,6 +1311,7 @@ static isc_result_t
opensslrsa_fromlabel(dst_key_t *key, const char *engine, const char *label, opensslrsa_fromlabel(dst_key_t *key, const char *engine, const char *label,
const char *pin) const char *pin)
{ {
#ifdef USE_ENGINE
ENGINE *e = NULL; ENGINE *e = NULL;
isc_result_t ret; isc_result_t ret;
EVP_PKEY *pkey = NULL; EVP_PKEY *pkey = NULL;
@@ -1366,6 +1375,13 @@ opensslrsa_fromlabel(dst_key_t *key, const char *engine, const char *label,
if (pkey != NULL) if (pkey != NULL)
EVP_PKEY_free(pkey); EVP_PKEY_free(pkey);
return (ret); return (ret);
#else
UNUSED(key);
UNUSED(engine);
UNUSED(label);
UNUSED(pin);
return(DST_R_NOENGINE);
#endif
} }
static dst_func_t opensslrsa_functions = { static dst_func_t opensslrsa_functions = {