mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2025-12-05 16:18:06 +00:00
Fixes for GnuTLS and OpenSSL < 3 (#14)
* Fix set_public_key when using GnuTLS * Fix for OpenSSL 1.1.1 * Fix formatting * Fix formatting * Fix ECDSA-P521 signature verification when using GnuTLS * Improve finding of the GMP library in Debian-based systems * Improve finding of the GMP library in Debian-based systems * Keep GMP usage private
This commit is contained in:
119
cmake/Modules/FindGMP.cmake
Normal file
119
cmake/Modules/FindGMP.cmake
Normal file
@@ -0,0 +1,119 @@
|
||||
# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
|
||||
# This file is part of GNSS-SDR.
|
||||
#
|
||||
# SPDX-FileCopyrightText: 2011-2024 C. Fernandez-Prades cfernandez(at)cttc.es
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
if(NOT PKG_CONFIG_FOUND)
|
||||
include(FindPkgConfig)
|
||||
endif()
|
||||
pkg_check_modules(PC_GMP "gmp")
|
||||
|
||||
set(GMP_DEFINITIONS ${PC_GMP_CFLAGS_OTHER})
|
||||
|
||||
find_path(
|
||||
GMP_INCLUDE_DIR
|
||||
NAMES gmpxx.h
|
||||
HINTS ${PC_GMP_INCLUDEDIR}
|
||||
PATHS ${CMAKE_INSTALL_PREFIX}/include
|
||||
/usr/local/include
|
||||
/usr/include
|
||||
/opt/local/include
|
||||
)
|
||||
|
||||
set(GMP_INCLUDE_DIRS ${GMP_INCLUDE_DIR})
|
||||
set(GMP_PC_ADD_CFLAGS "-I${GMP_INCLUDE_DIR}")
|
||||
|
||||
find_library(
|
||||
GMPXX_LIBRARY
|
||||
NAMES gmpxx
|
||||
HINTS ${PC_GMP_LIBDIR}
|
||||
PATHS ${CMAKE_INSTALL_PREFIX}/lib
|
||||
${CMAKE_INSTALL_PREFIX}/lib64
|
||||
/usr/local/lib
|
||||
/usr/local/lib64
|
||||
/usr/lib
|
||||
/usr/lib64
|
||||
/usr/lib/x86_64-linux-gnu
|
||||
/usr/lib/i386-linux-gnu
|
||||
/usr/lib/arm-linux-gnueabihf
|
||||
/usr/lib/arm-linux-gnueabi
|
||||
/usr/lib/aarch64-linux-gnu
|
||||
/usr/lib/mipsel-linux-gnu
|
||||
/usr/lib/mips-linux-gnu
|
||||
/usr/lib/mips64el-linux-gnuabi64
|
||||
/usr/lib/powerpc-linux-gnu
|
||||
/usr/lib/powerpc64-linux-gnu
|
||||
/usr/lib/powerpc64le-linux-gnu
|
||||
/usr/lib/powerpc-linux-gnuspe
|
||||
/usr/lib/hppa-linux-gnu
|
||||
/usr/lib/s390x-linux-gnu
|
||||
/usr/lib/i386-gnu
|
||||
/usr/lib/hppa-linux-gnu
|
||||
/usr/lib/x86_64-kfreebsd-gnu
|
||||
/usr/lib/i386-kfreebsd-gnu
|
||||
/usr/lib/m68k-linux-gnu
|
||||
/usr/lib/sh4-linux-gnu
|
||||
/usr/lib/sparc64-linux-gnu
|
||||
/usr/lib/x86_64-linux-gnux32
|
||||
/usr/lib/alpha-linux-gnu
|
||||
/usr/lib/riscv64-linux-gnu
|
||||
/usr/lib/loongarch64-linux-gnu
|
||||
/opt/local/lib
|
||||
)
|
||||
|
||||
find_library(
|
||||
GMP_LIBRARY
|
||||
NAMES gmp
|
||||
HINTS ${PC_GMP_LIBDIR}
|
||||
PATHS ${CMAKE_INSTALL_PREFIX}/lib
|
||||
${CMAKE_INSTALL_PREFIX}/lib64
|
||||
/usr/local/lib
|
||||
/usr/local/lib64
|
||||
/usr/lib
|
||||
/usr/lib64
|
||||
/usr/lib/x86_64-linux-gnu
|
||||
/usr/lib/i386-linux-gnu
|
||||
/usr/lib/arm-linux-gnueabihf
|
||||
/usr/lib/arm-linux-gnueabi
|
||||
/usr/lib/aarch64-linux-gnu
|
||||
/usr/lib/mipsel-linux-gnu
|
||||
/usr/lib/mips-linux-gnu
|
||||
/usr/lib/mips64el-linux-gnuabi64
|
||||
/usr/lib/powerpc-linux-gnu
|
||||
/usr/lib/powerpc64-linux-gnu
|
||||
/usr/lib/powerpc64le-linux-gnu
|
||||
/usr/lib/powerpc-linux-gnuspe
|
||||
/usr/lib/hppa-linux-gnu
|
||||
/usr/lib/s390x-linux-gnu
|
||||
/usr/lib/i386-gnu
|
||||
/usr/lib/hppa-linux-gnu
|
||||
/usr/lib/x86_64-kfreebsd-gnu
|
||||
/usr/lib/i386-kfreebsd-gnu
|
||||
/usr/lib/m68k-linux-gnu
|
||||
/usr/lib/sh4-linux-gnu
|
||||
/usr/lib/sparc64-linux-gnu
|
||||
/usr/lib/x86_64-linux-gnux32
|
||||
/usr/lib/alpha-linux-gnu
|
||||
/usr/lib/riscv64-linux-gnu
|
||||
/usr/lib/loongarch64-linux-gnu
|
||||
/opt/local/lib
|
||||
)
|
||||
|
||||
set(GMP_LIBRARIES ${GMPXX_LIBRARY} ${GMP_LIBRARY})
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(GMP DEFAULT_MSG GMPXX_LIBRARY GMP_LIBRARY
|
||||
GMP_INCLUDE_DIR)
|
||||
|
||||
if(GMP_FOUND AND NOT TARGET Gmp::gmp)
|
||||
add_library(Gmp::gmp SHARED IMPORTED)
|
||||
set_target_properties(Gmp::gmp PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||
IMPORTED_LOCATION "${GMPXX_LIBRARY}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${GMP_INCLUDE_DIR}"
|
||||
INTERFACE_LINK_LIBRARIES "${GMP_LIBRARIES}"
|
||||
)
|
||||
endif()
|
||||
|
||||
mark_as_advanced(GMPXX_LIBRARY GMP_LIBRARY GMP_INCLUDE_DIR)
|
||||
@@ -13,6 +13,7 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||
endif()
|
||||
unset(OPENSSL_FOUND CACHE)
|
||||
unset(GnuTLS_FOUND CACHE)
|
||||
unset(GMP_FOUND CACHE)
|
||||
if(NOT ENABLE_GNUTLS)
|
||||
find_package(OpenSSL)
|
||||
endif()
|
||||
@@ -133,6 +134,17 @@ else()
|
||||
if("${gnutls_abstract_file_contents}" MATCHES "gnutls_pubkey_export2")
|
||||
set(GNUTLS_PUBKEY_EXPORT2 TRUE)
|
||||
endif()
|
||||
|
||||
find_package(GMP)
|
||||
set_package_properties(GMP PROPERTIES
|
||||
URL "https://gmplib.org/"
|
||||
PURPOSE "Required to decompress cryptographic keys."
|
||||
DESCRIPTION "The GNU Multiple Precision Arithmetic Library"
|
||||
TYPE REQUIRED
|
||||
)
|
||||
if(NOT GMP_FOUND)
|
||||
message(FATAL_ERROR "GMP is required by gnss-sdr if linking against GnuTLS")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
################################################################################
|
||||
@@ -175,6 +187,8 @@ function(link_to_crypto_dependencies target)
|
||||
PUBLIC
|
||||
${GNUTLS_LIBRARIES}
|
||||
${GNUTLS_OPENSSL_LIBRARY}
|
||||
PRIVATE
|
||||
Gmp::gmp
|
||||
)
|
||||
target_include_directories(${target}
|
||||
PUBLIC
|
||||
|
||||
Reference in New Issue
Block a user