From 2acd81bd7a1b364b02831ae5f8e46457d9d07865 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Fri, 21 Sep 2012 15:07:11 +0200 Subject: Nicely encapsulate different crypto algorithm implementations --- CMakeLists.txt | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 5c1c41e..4cdff4a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,14 +16,47 @@ find_package(UECC REQUIRED) find_package(NaCl REQUIRED) +set(WITH_CRYPTO_AES128CTR_NACL TRUE CACHE BOOL "Include the AES128-CTR implementation from the NaCl library") +set(WITH_CRYPTO_AES128CTR_LINUX TRUE CACHE BOOL "Support using the AES128-CTR implementation in the Linux kernel") + +set(WITH_CRYPTO_GHASH_BUILTIN TRUE CACHE BOOL "Include the built-in GHASH implementation") +set(WITH_CRYPTO_GHASH_LINUX TRUE CACHE BOOL "Support using the GHASH implementation in the Linux kernel") + set(WITH_METHOD_XSALSA20_POLY1305 TRUE CACHE BOOL "Include xsalsa20-poly1305 method") set(WITH_METHOD_AES128_GCM TRUE CACHE BOOL "Include aes128-gcm method") set(MAX_CONFIG_DEPTH 10 CACHE STRING "Maximum config include depth") +if(WITH_CRYPTO_AES128CTR_NACL OR WITH_CRYPTO_AES128CTR_LINUX) + set(WITH_CRYPTO_AES128CTR TRUE) +endif(WITH_CRYPTO_AES128CTR_NACL OR WITH_CRYPTO_AES128CTR_LINUX) + +if(WITH_CRYPTO_GHASH_BUILTIN OR WITH_CRYPTO_GHASH_LINUX) + set(WITH_CRYPTO_GHASH TRUE) +endif(WITH_CRYPTO_GHASH_BUILTIN OR WITH_CRYPTO_GHASH_LINUX) + + # Ensure the value is numeric math(EXPR MAX_CONFIG_DEPTH_NUM ${MAX_CONFIG_DEPTH}) +set(USE_CRYPTO_AES128CTR FALSE) +set(USE_CRYPTO_GHASH FALSE) + +if(WITH_METHOD_AES128_GCM) + set(USE_CRYPTO_AES128CTR TRUE) + set(USE_CRYPTO_GHASH TRUE) +endif(WITH_METHOD_AES128_GCM) + + +if(USE_CRYPTO_AES128CTR AND NOT WITH_CRYPTO_AES128CTR) + MESSAGE(FATAL_ERROR "No AES128-CTR implementation was selected, but a selected method needs it.") +endif(USE_CRYPTO_AES128CTR AND NOT WITH_CRYPTO_AES128CTR) + +if(USE_CRYPTO_GHASH AND NOT WITH_CRYPTO_GHASH) + MESSAGE(FATAL_ERROR "No GHASH implementation was selected, but a selected method needs it.") +endif(USE_CRYPTO_GHASH AND NOT WITH_CRYPTO_GHASH) + + configure_file(${FASTD_SOURCE_DIR}/config.h.in ${FASTD_BINARY_DIR}/config.h) add_subdirectory(src) -- cgit v1.2.3