38 lines
1.6 KiB
Diff
38 lines
1.6 KiB
Diff
From d0fe73a0910c52c5ad9a57fbebea260ef22f4be4 Mon Sep 17 00:00:00 2001
|
|
From: Remi Gacogne <remi.gacogne@powerdns.com>
|
|
Date: Mon, 17 Jan 2022 15:44:01 +0100
|
|
Subject: [PATCH] dnsdist-1.7.x: Fix compilation with OpenSSL 3.0.0
|
|
|
|
---
|
|
pdns/credentials.cc | 10 ++++++++--
|
|
1 file changed, 8 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/pdns/credentials.cc b/pdns/credentials.cc
|
|
index b3a09e5c819..d058a948ac1 100644
|
|
--- a/pdns/credentials.cc
|
|
+++ b/pdns/credentials.cc
|
|
@@ -31,6 +31,7 @@
|
|
#ifdef HAVE_EVP_PKEY_CTX_SET1_SCRYPT_SALT
|
|
#include <openssl/evp.h>
|
|
#include <openssl/kdf.h>
|
|
+#include <openssl/opensslv.h>
|
|
#include <openssl/rand.h>
|
|
#endif
|
|
|
|
@@ -105,8 +106,13 @@ static std::string hashPasswordInternal(const std::string& password, const std::
|
|
throw std::runtime_error("Error intializing the scrypt context to hash the supplied password");
|
|
}
|
|
|
|
- // OpenSSL 3.0 changed the string arg to const unsigned char*, other versions use const char *, so cast to const void * to satisfy both
|
|
- if (EVP_PKEY_CTX_set1_pbe_pass(pctx.get(), reinterpret_cast<const void*>(password.data()), password.size()) <= 0) {
|
|
+ // OpenSSL 3.0 changed the string arg to const unsigned char*, other versions use const char *
|
|
+#if OPENSSL_VERSION_MAJOR >= 3
|
|
+ auto passwordData = reinterpret_cast<const char*>(password.data());
|
|
+#else
|
|
+ auto passwordData = reinterpret_cast<const unsigned char*>(password.data());
|
|
+#endif
|
|
+ if (EVP_PKEY_CTX_set1_pbe_pass(pctx.get(), passwordData, password.size()) <= 0) {
|
|
throw std::runtime_error("Error adding the password to the scrypt context to hash the supplied password");
|
|
}
|
|
|