summaryrefslogtreecommitdiffstats
path: root/contrib/ntp/libntp/ssl_init.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/ntp/libntp/ssl_init.c')
-rw-r--r--contrib/ntp/libntp/ssl_init.c53
1 files changed, 33 insertions, 20 deletions
diff --git a/contrib/ntp/libntp/ssl_init.c b/contrib/ntp/libntp/ssl_init.c
index ef0f1c1..bebf6e1 100644
--- a/contrib/ntp/libntp/ssl_init.c
+++ b/contrib/ntp/libntp/ssl_init.c
@@ -13,52 +13,65 @@
#include <lib_strbuf.h>
#ifdef OPENSSL
+#include "openssl/crypto.h"
#include "openssl/err.h"
#include "openssl/evp.h"
+#include "openssl/opensslv.h"
#include "libssl_compat.h"
-void atexit_ssl_cleanup(void);
-
int ssl_init_done;
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
+
+static void
+atexit_ssl_cleanup(void)
+{
+ if (!ssl_init_done)
+ return;
+
+ ssl_init_done = FALSE;
+ EVP_cleanup();
+ ERR_free_strings();
+}
+
void
ssl_init(void)
{
init_lib();
- if (ssl_init_done)
- return;
-
- ERR_load_crypto_strings();
- OpenSSL_add_all_algorithms();
- atexit(&atexit_ssl_cleanup);
-
- ssl_init_done = TRUE;
+ if ( ! ssl_init_done) {
+ ERR_load_crypto_strings();
+ OpenSSL_add_all_algorithms();
+ atexit(&atexit_ssl_cleanup);
+ ssl_init_done = TRUE;
+ }
}
+#else /* OPENSSL_VERSION_NUMBER >= 0x10100000L */
void
-atexit_ssl_cleanup(void)
+ssl_init(void)
{
- if (!ssl_init_done)
- return;
-
- ssl_init_done = FALSE;
- EVP_cleanup();
- ERR_free_strings();
+ init_lib();
+ ssl_init_done = TRUE;
}
+#endif /* OPENSSL_VERSION_NUMBER */
+
void
ssl_check_version(void)
{
- if ((SSLeay() ^ OPENSSL_VERSION_NUMBER) & ~0xff0L) {
+ u_long v;
+
+ v = OpenSSL_version_num();
+ if ((v ^ OPENSSL_VERSION_NUMBER) & ~0xff0L) {
msyslog(LOG_WARNING,
"OpenSSL version mismatch. Built against %lx, you have %lx",
- (u_long)OPENSSL_VERSION_NUMBER, SSLeay());
+ (u_long)OPENSSL_VERSION_NUMBER, v);
fprintf(stderr,
"OpenSSL version mismatch. Built against %lx, you have %lx\n",
- (u_long)OPENSSL_VERSION_NUMBER, SSLeay());
+ (u_long)OPENSSL_VERSION_NUMBER, v);
}
INIT_SSL();
OpenPOWER on IntegriCloud