Only do openssl accel stuff if version is at least 0.9.7

svn:r4973
This commit is contained in:
Nick Mathewson 2005-09-09 22:07:15 +00:00
parent 09d83c564b
commit 6b479b3cfa

View File

@ -22,7 +22,6 @@ const char crypto_c_id[] = "$Id$";
#include <string.h> #include <string.h>
#include <openssl/engine.h>
#include <openssl/err.h> #include <openssl/err.h>
#include <openssl/rsa.h> #include <openssl/rsa.h>
#include <openssl/pem.h> #include <openssl/pem.h>
@ -65,6 +64,12 @@ const char crypto_c_id[] = "$Id$";
#define OPENSSL_095 #define OPENSSL_095
#endif #endif
#if OPENSSL_VERSION_NUMBER < 0x00907000l
#define NO_ENGINES
#else
#include <openssl/engine.h>
#endif
/* Certain functions that return a success code in OpenSSL 0.9.6 return void /* Certain functions that return a success code in OpenSSL 0.9.6 return void
* (and don't indicate errors) in OpenSSL version 0.9.5. * (and don't indicate errors) in OpenSSL version 0.9.5.
* *
@ -161,6 +166,7 @@ crypto_log_errors(int severity, const char *doing)
} }
} }
#ifndef NO_ENGINES
static void static void
log_engine(const char *fn, ENGINE *e) log_engine(const char *fn, ENGINE *e)
{ {
@ -174,6 +180,7 @@ log_engine(const char *fn, ENGINE *e)
log(LOG_INFO, "Using default implementation for %s", fn); log(LOG_INFO, "Using default implementation for %s", fn);
} }
} }
#endif
/** Initialize the crypto library. Return 0 on success, -1 on failure. /** Initialize the crypto library. Return 0 on success, -1 on failure.
*/ */
@ -185,6 +192,7 @@ crypto_global_init(int useAccel)
OpenSSL_add_all_algorithms(); OpenSSL_add_all_algorithms();
_crypto_global_initialized = 1; _crypto_global_initialized = 1;
setup_openssl_threading(); setup_openssl_threading();
#ifndef NO_ENGINES
if (useAccel) { if (useAccel) {
if (useAccel < 0) if (useAccel < 0)
log_fn(LOG_WARN, "Initializing OpenSSL via tor_tls_init()."); log_fn(LOG_WARN, "Initializing OpenSSL via tor_tls_init().");
@ -201,6 +209,7 @@ crypto_global_init(int useAccel)
log_engine("3DES", ENGINE_get_cipher_engine(NID_des_ede3_ecb)); log_engine("3DES", ENGINE_get_cipher_engine(NID_des_ede3_ecb));
log_engine("AES", ENGINE_get_cipher_engine(NID_aes_128_ecb)); log_engine("AES", ENGINE_get_cipher_engine(NID_aes_128_ecb));
} }
#endif
} }
return 0; return 0;
} }
@ -210,7 +219,9 @@ crypto_global_init(int useAccel)
int crypto_global_cleanup() int crypto_global_cleanup()
{ {
ERR_free_strings(); ERR_free_strings();
#ifndef NO_ENGINES
ENGINE_cleanup(); ENGINE_cleanup();
#endif
#ifdef TOR_IS_MULTITHREADED #ifdef TOR_IS_MULTITHREADED
if (_n_openssl_mutexes) { if (_n_openssl_mutexes) {
int n = _n_openssl_mutexes; int n = _n_openssl_mutexes;