+3068. [bug] Named failed to build with a OpenSSL without engine
+ support. [RT #23473]
+
3067. [bug] ixfr-from-differences {master|slave}; failed to
select the master/slave zones. [RT #23580]
* 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
#define DST_OPENSSL_H 1
#include <isc/lang.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_result_t
dst__openssl_toresult(isc_result_t fallback);
+#ifdef USE_ENGINE
ENGINE *
dst__openssl_getengine(const char *engine);
+#else
+#define dst__openssl_getengine(x) NULL
+#endif
ISC_LANG_ENDDECLS
/*
* 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
#include "dst_internal.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
#include <openssl/engine.h>
#endif
return (result);
}
+#if defined(USE_ENGINE)
ENGINE *
dst__openssl_getengine(const char *engine) {
if (engine == NULL)
return (NULL);
-#if defined(USE_ENGINE)
if (e == NULL)
return (NULL);
if (strcmp(engine, ENGINE_get_id(e)) == 0)
return (e);
-#endif
return (NULL);
}
+#endif
#else /* OPENSSL */
/*
* 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
#include <config.h>
#if OPENSSL_VERSION_NUMBER > 0x00908000L
#include <openssl/bn.h>
#endif
+#ifdef USE_ENGINE
#include <openssl/engine.h>
+#endif
/*
* We don't use configure for windows so enforce the OpenSSL version
isc_result_t ret;
int i;
RSA *rsa = NULL, *pubrsa = NULL;
+#ifdef USE_ENGINE
ENGINE *e = NULL;
+#endif
isc_mem_t *mctx = key->mctx;
const char *engine = NULL, *label = NULL;
EVP_PKEY *pkey = NULL;
* See if we can fetch it.
*/
if (label != NULL) {
+#ifdef USE_ENGINE
if (engine == NULL)
DST_RET(DST_R_NOENGINE);
e = dst__openssl_getengine(engine);
dst__privstruct_free(&priv, mctx);
memset(&priv, 0, sizeof(priv));
return (ISC_R_SUCCESS);
+#else
+ DST_RET(DST_R_NOENGINE);
+#endif
}
rsa = RSA_new();
opensslrsa_fromlabel(dst_key_t *key, const char *engine, const char *label,
const char *pin)
{
+#ifdef USE_ENGINE
ENGINE *e = NULL;
isc_result_t ret;
EVP_PKEY *pkey = NULL;
if (pkey != NULL)
EVP_PKEY_free(pkey);
return (ret);
+#else
+ UNUSED(key);
+ UNUSED(engine);
+ UNUSED(label);
+ UNUSED(pin);
+ return(DST_R_NOENGINE);
+#endif
}
static dst_func_t opensslrsa_functions = {