--- a/src/lib-dcrypt/dcrypt-openssl.c +++ b/src/lib-dcrypt/dcrypt-openssl.c @@ -17,10 +17,12 @@ #include #include #include -#include #include #include #include +#ifndef OPENSSL_NO_ENGINE +#include +#endif #include "dcrypt.h" #include "dcrypt-private.h" @@ -179,11 +181,13 @@ static bool dcrypt_openssl_error(const char **error_r) static bool dcrypt_openssl_initialize(const struct dcrypt_settings *set, const char **error_r) { +#ifndef OPENSSL_NO_ENGINE if (set->crypto_device != NULL && set->crypto_device[0] != '\0') { if (dovecot_openssl_common_global_set_engine( set->crypto_device, error_r) <= 0) return FALSE; } +#endif return TRUE; } --- a/src/lib-ssl-iostream/dovecot-openssl-common.c +++ b/src/lib-ssl-iostream/dovecot-openssl-common.c @@ -5,11 +5,14 @@ #include "dovecot-openssl-common.h" #include -#include #include +#ifndef OPENSSL_NO_ENGINE +#include -static int openssl_init_refcount = 0; static ENGINE *dovecot_openssl_engine; +#endif + +static int openssl_init_refcount = 0; #ifdef HAVE_SSL_NEW_MEM_FUNCS static void *dovecot_openssl_malloc(size_t size, const char *u0 ATTR_UNUSED, int u1 ATTR_UNUSED) @@ -75,10 +78,12 @@ bool dovecot_openssl_common_global_unref(void) if (--openssl_init_refcount > 0) return TRUE; +#ifndef OPENSSL_NO_ENGINE if (dovecot_openssl_engine != NULL) { ENGINE_finish(dovecot_openssl_engine); dovecot_openssl_engine = NULL; } +#endif #if OPENSSL_VERSION_NUMBER < 0x10100000L /* OBJ_cleanup() is called automatically by EVP_cleanup() in newer versions. Doesn't hurt to call it anyway. */ @@ -86,7 +91,9 @@ bool dovecot_openssl_common_global_unref(void) #ifdef HAVE_SSL_COMP_FREE_COMPRESSION_METHODS SSL_COMP_free_compression_methods(); #endif +#ifndef OPENSSL_NO_ENGINE ENGINE_cleanup(); +#endif EVP_cleanup(); CRYPTO_cleanup_all_ex_data(); #ifdef HAVE_OPENSSL_AUTO_THREAD_DEINIT @@ -109,6 +116,7 @@ bool dovecot_openssl_common_global_unref(void) int dovecot_openssl_common_global_set_engine(const char *engine, const char **error_r) { +#ifndef OPENSSL_NO_ENGINE if (dovecot_openssl_engine != NULL) return 1; @@ -130,5 +138,6 @@ int dovecot_openssl_common_global_set_engine(const char *engine, dovecot_openssl_engine = NULL; return -1; } +#endif return 1; }