From 2c833051a5a2969d677063a6cf30108889c65ca3 Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Tue, 25 Jun 2024 13:59:23 +0200 Subject: [PATCH] Fix SHA3-256 implementation when linking against OpenSSL 1.1.1 --- src/core/system_parameters/CMakeLists.txt | 4 ++++ src/core/system_parameters/gnss_crypto.cc | 14 ++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/core/system_parameters/CMakeLists.txt b/src/core/system_parameters/CMakeLists.txt index 607c3702a..0ef4cf22e 100644 --- a/src/core/system_parameters/CMakeLists.txt +++ b/src/core/system_parameters/CMakeLists.txt @@ -163,6 +163,10 @@ if(OPENSSL_FOUND) target_compile_definitions(core_system_parameters PUBLIC -DUSE_OPENSSL_FALLBACK=1 -DUSE_OPENSSL_3=1) message("USE_OPENSSL_3: " ${DUSE_OPENSSL_3}) message("USE_OPENSSL_FALLBACK:" ${USE_OPENSSL_FALLBACK}) + else() + if(NOT OPENSSL_VERSION VERSION_LESS "1.1.1") + target_compile_definitions(core_system_parameters PRIVATE -DUSE_OPENSSL_FALLBACK=1 -DUSE_OPENSSL_111=1) + endif() endif() endif() diff --git a/src/core/system_parameters/gnss_crypto.cc b/src/core/system_parameters/gnss_crypto.cc index 5adab48b3..0f1774271 100644 --- a/src/core/system_parameters/gnss_crypto.cc +++ b/src/core/system_parameters/gnss_crypto.cc @@ -60,6 +60,11 @@ Gnss_Crypto::Gnss_Crypto() { #if USE_OPENSSL_FALLBACK +#if !(USE_OPENSSL_3 || USE_OPENSSL_111) + LOG(WARNING) << "The OpenSSL library version you are linking against is too old for some OSNMA functions." + << " Please do not trust OSNMA ouputs or upgrade your system to a newer version of OpenSSL" + << " and rebuild GNSS-SDR against it."; +#endif #else // GnuTLS gnutls_global_init(); #endif @@ -69,6 +74,11 @@ Gnss_Crypto::Gnss_Crypto() Gnss_Crypto::Gnss_Crypto(const std::string& certFilePath, const std::string& merkleTreePath) { #if USE_OPENSSL_FALLBACK +#if !(USE_OPENSSL_3 || USE_OPENSSL_111) + LOG(WARNING) << "The OpenSSL library version you are linking against is too old for some OSNMA functions." + << " Please do not trust OSNMA ouputs or upgrade your system to a newer version of OpenSSL" + << " and rebuild GNSS-SDR against it."; +#endif #else // GnuTLS gnutls_global_init(); #endif @@ -296,7 +306,7 @@ std::vector Gnss_Crypto::computeSHA3_256(const std::vector& in { std::vector output(32); // SHA256 hash size #if USE_OPENSSL_FALLBACK -#if USE_OPENSSL_3 +#if USE_OPENSSL_3 || USE_OPENSSL_111 EVP_MD_CTX* mdctx = EVP_MD_CTX_new(); const EVP_MD* md = EVP_sha3_256(); @@ -308,7 +318,7 @@ std::vector Gnss_Crypto::computeSHA3_256(const std::vector& in // SHA3-256 not implemented in OpenSSL 1.0, it was introduced in OpenSSL 1.1.1 if (!input.empty()) { - // TODO + // do nothing } #endif #else // GnuTLS