]> git.sur5r.net Git - bacula/bacula/commitdiff
crypto: Add a tiny OpenSSL compat level
authorSebastian Andrzej Siewior <sebastian@breakpoint.cc>
Wed, 8 Nov 2017 13:40:12 +0000 (14:40 +0100)
committerKern Sibbald <kern@sibbald.com>
Sun, 19 Nov 2017 15:53:52 +0000 (16:53 +0100)
This header file provides a few OpenSSL 1.1 functions which are not
available in OpenSSL 1.0.2 and earlier. The body of the function
implements the pre-1.1 version of the function provided in 1.1.

Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
bacula/src/lib/crypto.c
bacula/src/lib/tls.c
src/lib/openssl-compat.h [new file with mode: 0644]

index b4403eb45618a466d0a4ddbaaace9101c3b95fb9..c172efb2b5d9a4e8b671a597835ffb665505d329 100644 (file)
 #ifdef HAVE_CRYPTO /* Is encryption enabled? */
 #ifdef HAVE_OPENSSL /* How about OpenSSL? */
 
+#include "openssl-compat.h"
+
 /* ASN.1 Declarations */
 #define BACULA_ASN1_VERSION 0
 
index 992265b38ad22069f4274a3cac048175bdd3dc92..c71a4ad525fe08b5f0b41d1217cafb54ded4eb5f 100644 (file)
@@ -45,6 +45,8 @@
 
 #ifdef HAVE_OPENSSL /* How about OpenSSL? */
 
+#include "openssl-compat.h"
+
 /* No anonymous ciphers, no <128 bit ciphers, no export ciphers, no MD5 ciphers */
 #define TLS_DEFAULT_CIPHERS "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH"
 
diff --git a/src/lib/openssl-compat.h b/src/lib/openssl-compat.h
new file mode 100644 (file)
index 0000000..e811a4b
--- /dev/null
@@ -0,0 +1,43 @@
+#ifndef __OPENSSL_COPMAT__H__
+#define __OPENSSL_COPMAT__H__
+
+#if (OPENSSL_VERSION_NUMBER < 0x10100000L)
+static inline int EVP_PKEY_up_ref(EVP_PKEY *pkey)
+{
+       CRYPTO_add(&pkey->references, 1, CRYPTO_LOCK_EVP_PKEY);
+       return 1;
+}
+
+static inline void EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *ctx)
+{
+       EVP_CIPHER_CTX_init(ctx);
+}
+
+static inline void EVP_MD_CTX_reset(EVP_MD_CTX *ctx)
+{
+       EVP_MD_CTX_init(ctx);
+}
+
+static inline EVP_MD_CTX *EVP_MD_CTX_new(void)
+{
+       EVP_MD_CTX *ctx;
+
+       ctx = (EVP_MD_CTX *)OPENSSL_malloc(sizeof(EVP_MD_CTX));
+       if (ctx)
+               memset(ctx, 0, sizeof(EVP_MD_CTX));
+       return ctx;
+}
+
+static inline void EVP_MD_CTX_free(EVP_MD_CTX *ctx)
+{
+       EVP_MD_CTX_reset(ctx);
+       OPENSSL_free(ctx);
+}
+
+static inline const unsigned char *ASN1_STRING_get0_data(const ASN1_STRING *asn1)
+{
+       return asn1->data;
+}
+#endif
+
+#endif