diff options
Diffstat (limited to 'cmake/dependencies/crypt')
| -rw-r--r-- | cmake/dependencies/crypt/libgcrypt.cmake | 55 | ||||
| -rw-r--r-- | cmake/dependencies/crypt/openssl.cmake | 73 |
2 files changed, 128 insertions, 0 deletions
diff --git a/cmake/dependencies/crypt/libgcrypt.cmake b/cmake/dependencies/crypt/libgcrypt.cmake new file mode 100644 index 00000000..4f8a4cfe --- /dev/null +++ b/cmake/dependencies/crypt/libgcrypt.cmake @@ -0,0 +1,55 @@ +# Try pkg-config first, fall back to find_library +if(PkgConfig_FOUND) + pkg_check_modules(LIBGCRYPT QUIET IMPORTED_TARGET libgcrypt>=1.7.0) + if(LIBGCRYPT_FOUND AND NOT TARGET Gcrypt::Gcrypt) + add_library(Gcrypt::Gcrypt ALIAS PkgConfig::LIBGCRYPT) + endif() +endif() + +if(NOT LIBGCRYPT_FOUND) + find_library(LIBGCRYPT_LIBRARIES gcrypt QUIET) + if(LIBGCRYPT_LIBRARIES) + find_path(LIBGCRYPT_INCLUDE_DIR gcrypt.h + HINTS /usr/include /usr/local/include) + if(LIBGCRYPT_INCLUDE_DIR) + file(STRINGS ${LIBGCRYPT_INCLUDE_DIR}/gcrypt.h GCSTR + REGEX "^#define GCRYPT_VERSION ") + string(REGEX REPLACE "^#define GCRYPT_VERSION \"(.*)\".*$" "\\1" + LIBGCRYPT_VERSION "${GCSTR}") + if(NOT LIBGCRYPT_VERSION VERSION_LESS "1.7.0") + set(LIBGCRYPT_FOUND TRUE) + if(NOT TARGET Gcrypt::Gcrypt) + add_library(Gcrypt::Gcrypt UNKNOWN IMPORTED) + set_target_properties(Gcrypt::Gcrypt PROPERTIES + IMPORTED_LOCATION "${LIBGCRYPT_LIBRARIES}" + INTERFACE_INCLUDE_DIRECTORIES "${LIBGCRYPT_INCLUDE_DIR}") + endif() + endif() + endif() + endif() +endif() + +if(LIBGCRYPT_FOUND) + set(DISABLE_LIBGCRYPT FALSE CACHE BOOL "Disable libgcrypt support") + if(NOT DISABLE_LIBGCRYPT) + if(LIBGCRYPT_VERSION) + message(STATUS "libgcrypt support enabled (version ${LIBGCRYPT_VERSION})") + else() + message(STATUS "libgcrypt support enabled") + endif() + set(HAVE_LIBGCRYPT TRUE CACHE INTERNAL "libgcrypt cryptography support available") + else() + message(STATUS "libgcrypt support disabled by user") + unset(HAVE_LIBGCRYPT CACHE) + endif() +else() + message(STATUS "Install libgcrypt >= 1.7.0 to enable libgcrypt support") + unset(HAVE_LIBGCRYPT CACHE) +endif() + +if(NOT HAVE_LIBGCRYPT) + set(LIBGCRYPT_LIBRARIES "") + set(LIBGCRYPT_INCLUDE_DIR "") +endif() + +mark_as_advanced(LIBGCRYPT_LIBRARIES LIBGCRYPT_INCLUDE_DIR) diff --git a/cmake/dependencies/crypt/openssl.cmake b/cmake/dependencies/crypt/openssl.cmake new file mode 100644 index 00000000..38eb826f --- /dev/null +++ b/cmake/dependencies/crypt/openssl.cmake @@ -0,0 +1,73 @@ +find_package(OpenSSL QUIET) +if(NOT OPENSSL_FOUND) + message(STATUS "Install OpenSSL version >= 3.0.0 to enable OpenSSL support") + unset(HAVE_OPENSSL_RNG) + unset(HAVE_OPENSSL CACHE) + return() +endif() + +set(HAVE_OPENSSL_RNG TRUE) + +if(OPENSSL_VERSION VERSION_LESS "3.0.0") + message(STATUS "Install version >= 3.0.0 to enable OpenSSL support " + "(found version \"${OPENSSL_VERSION}\")") + return() +endif() + +set(DISABLE_OPENSSL FALSE CACHE BOOL "Disable OpenSSL support") +if(DISABLE_OPENSSL) + message(STATUS "OpenSSL support disabled") + unset(HAVE_OPENSSL CACHE) + return() +endif() + +message(STATUS "OpenSSL support enabled, found version ${OPENSSL_VERSION}") +set(HAVE_OPENSSL TRUE CACHE INTERNAL + "OpenSSL cryptography support available") + +if(OPENSSL_VERSION VERSION_GREATER_EQUAL "3.4.0") + set(DISABLE_ML_KEM FALSE CACHE BOOL + "Disable ML-KEM support") + set(DISABLE_ML_DSA FALSE CACHE BOOL + "Disable ML-DSA support") + if(NOT DISABLE_ML_KEM) + set(HAVE_OPENSSL_ML_KEM TRUE CACHE INTERNAL + "OpenSSL ML-KEM available") + message(STATUS "OpenSSL ML-KEM support enabled") + else() + message(STATUS "OpenSSL ML-KEM support disabled") + unset(HAVE_OPENSSL_ML_KEM CACHE) + endif() + if(NOT DISABLE_ML_DSA) + set(HAVE_OPENSSL_ML_DSA TRUE CACHE INTERNAL + "OpenSSL ML-DSA available") + message(STATUS "OpenSSL ML-DSA support enabled") + else() + message(STATUS "OpenSSL ML-DSA support disabled") + unset(HAVE_OPENSSL_ML_DSA CACHE) + endif() +else() + message(STATUS + "Install OpenSSL >= 3.4.0 for ML-KEM/ML-DSA") + unset(HAVE_OPENSSL_ML_KEM CACHE) + unset(HAVE_OPENSSL_ML_DSA CACHE) +endif() + +if(OPENSSL_VERSION VERSION_GREATER_EQUAL "3.5.0") + set(DISABLE_SLH_DSA FALSE CACHE BOOL + "Disable SLH-DSA support") + if(NOT DISABLE_SLH_DSA) + set(HAVE_OPENSSL_SLH_DSA TRUE CACHE INTERNAL + "OpenSSL SLH-DSA available") + message(STATUS "OpenSSL SLH-DSA support enabled") + else() + message(STATUS "OpenSSL SLH-DSA support disabled") + unset(HAVE_OPENSSL_SLH_DSA CACHE) + endif() +else() + message(STATUS + "Install OpenSSL >= 3.5.0 for SLH-DSA") + unset(HAVE_OPENSSL_SLH_DSA CACHE) +endif() + +# Secure memory options are in cmake/config/global.cmake |
