From 4e3520bfd70f56bf1e8d9e81dcebbc297fc6abd7 Mon Sep 17 00:00:00 2001 From: JaLooooNz Date: Mon, 10 Jun 2024 11:22:11 +0800 Subject: [PATCH 1/3] Add CMakeLists file for CMake build -Add CMakeLists file for CMake build for libraries and applications -Various options are disabled instead of enable -ECDH functionality will break self-test application --- CMakeLists.txt | 410 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 410 insertions(+) create mode 100644 CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..a5988992 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,410 @@ +project(libecc) + +include_directories(include) + +# Define options +option(PLATFORM_WORD_SIZE "Platform word size (16, 32 or 64)" "32") +option(PLATFORM_INCLUDE_STDLIB "Platform provides STDLIB" ON) +option(OPTION_SPECIFY_CONFIG "Customise libecc configuration" OFF) +option(OPTION_BUILD_SELF_TEST "Build libecc ec-self-tests" OFF) +option(OPTION_BUILD_UTILITY "Build libecc ec-utils" OFF) +# Supported curves +option(OPTION_SUPPORT_CURVE_BIGN256V1 "Support EC Curve BIGN256V1" OFF) +option(OPTION_SUPPORT_CURVE_BIGN384V1 "Support EC Curve BIGN384V1" OFF) +option(OPTION_SUPPORT_CURVE_BIGN512V1 "Support EC Curve BIGN512V1" OFF) +option(OPTION_SUPPORT_CURVE_BRAINPOOLP192R1 "Support EC Curve BRAINPOOLP192R1" OFF) +option(OPTION_SUPPORT_CURVE_BRAINPOOLP224R1 "Support EC Curve BRAINPOOLP224R1" OFF) +option(OPTION_SUPPORT_CURVE_BRAINPOOLP256R1 "Support EC Curve BRAINPOOLP256R1" OFF) +option(OPTION_SUPPORT_CURVE_BRAINPOOLP320R1 "Support EC Curve BRAINPOOLP320R1" OFF) +option(OPTION_SUPPORT_CURVE_BRAINPOOLP384R1 "Support EC Curve BRAINPOOLP384R1" OFF) +option(OPTION_SUPPORT_CURVE_BRAINPOOLP521R1 "Support EC Curve BRAINPOOLP521R1" OFF) +option(OPTION_SUPPORT_CURVE_BRAINPOOLP192T1 "Support EC Curve BRAINPOOLP192T1" OFF) +option(OPTION_SUPPORT_CURVE_BRAINPOOLP224T1 "Support EC Curve BRAINPOOLP224T1" OFF) +option(OPTION_SUPPORT_CURVE_BRAINPOOLP256T1 "Support EC Curve BRAINPOOLP256T1" OFF) +option(OPTION_SUPPORT_CURVE_BRAINPOOLP320T1 "Support EC Curve BRAINPOOLP320T1" OFF) +option(OPTION_SUPPORT_CURVE_BRAINPOOLP384T1 "Support EC Curve BRAINPOOLP384T1" OFF) +option(OPTION_SUPPORT_CURVE_BRAINPOOLP521T1 "Support EC Curve BRAINPOOLP521T1" OFF) +option(OPTION_SUPPORT_CURVE_FRP256V1 "Support EC Curve FRP256V1" OFF) +option(OPTION_SUPPORT_CURVE_GOST256 "Support EC Curve GOST256" OFF) +option(OPTION_SUPPORT_CURVE_GOST512 "Support EC Curve GOST512" OFF) +option(OPTION_SUPPORT_CURVE_SECP192R1 "Support EC Curve SECP192R1" OFF) +option(OPTION_SUPPORT_CURVE_SECP224R1 "Support EC Curve SECP224R1" OFF) +option(OPTION_SUPPORT_CURVE_SECP256R1 "Support EC Curve SECP256R1" ON) +option(OPTION_SUPPORT_CURVE_SECP384R1 "Support EC Curve SECP384R1" OFF) +option(OPTION_SUPPORT_CURVE_SECP521R1 "Support EC Curve SECP521R1" ON) +option(OPTION_SUPPORT_CURVE_SECP192K1 "Support EC Curve SECP192K1" OFF) +option(OPTION_SUPPORT_CURVE_SECP224K1 "Support EC Curve SECP224K1" OFF) +option(OPTION_SUPPORT_CURVE_SECP256K1 "Support EC Curve SECP256K1" OFF) +option(OPTION_SUPPORT_CURVE_SM2P256TEST "Support EC Curve SM2P256TEST" OFF) +option(OPTION_SUPPORT_CURVE_SM2P256V1 "Support EC Curve SM2P256V1" OFF) +option(OPTION_SUPPORT_CURVE_WEI25519 "Support EC Curve WEI25519" OFF) +option(OPTION_SUPPORT_CURVE_WEI448 "Support EC Curve WEI448" OFF) +# Supported hash algorithms +option(OPTION_SUPPORT_HASH_SHA224 "Support Hash SHA224" ON) +option(OPTION_SUPPORT_HASH_SHA256 "Support Hash SHA256" ON) +option(OPTION_SUPPORT_HASH_SHA384 "Support Hash SHA384" ON) +option(OPTION_SUPPORT_HASH_SHA512 "Support Hash SHA512" ON) +option(OPTION_SUPPORT_HASH_SHA512_224 "Support Hash SHA512_224" ON) +option(OPTION_SUPPORT_HASH_SHA512_256 "Support Hash SHA512_256" ON) +option(OPTION_SUPPORT_HASH_SHA3_224 "Support Hash SHA3_224" ON) +option(OPTION_SUPPORT_HASH_SHA3_256 "Support Hash SHA3_256" ON) +option(OPTION_SUPPORT_HASH_SHA3_384 "Support Hash SHA3_384" ON) +option(OPTION_SUPPORT_HASH_SHA3_512 "Support Hash SHA3_512" ON) +option(OPTION_SUPPORT_HASH_SM3 "Support Hash SM3" OFF) +option(OPTION_SUPPORT_HASH_SHAKE256 "Support Hash SHAKE256" OFF) +option(OPTION_SUPPORT_HASH_STREEBOG256 "Support Hash STREEBOG256" OFF) +option(OPTION_SUPPORT_HASH_STREEBOG512 "Support Hash STREEBOG512" OFF) +option(OPTION_SUPPORT_HASH_RIPEMD160 "Support Hash RIPEMD160" OFF) +option(OPTION_SUPPORT_HASH_BELT_HASH "Support Hash BELT_HASH" OFF) +option(OPTION_SUPPORT_HASH_BASH224 "Support Hash BASH224" OFF) +option(OPTION_SUPPORT_HASH_BASH256 "Support Hash BASH256" OFF) +option(OPTION_SUPPORT_HASH_BASH384 "Support Hash BASH384" OFF) +option(OPTION_SUPPORT_HASH_BASH512 "Support Hash BASH512" OFF) +option(OPTION_SUPPORT_HASH_HMAC "Support Hash HMAC" OFF) +# Supported sig/verif schemes +option(OPTION_SUPPORT_SIG_ECDSA "Support signature/verification scheme ECDSA" ON) +option(OPTION_SUPPORT_SIG_ECKCDSA "Support signature/verification scheme ECKDSA" OFF) +option(OPTION_SUPPORT_SIG_ECSDSA "Support signature/verification scheme ECSDSA" ON) +option(OPTION_SUPPORT_SIG_ECOSDSA "Support signature/verification scheme ECOSDSA" OFF) +option(OPTION_SUPPORT_SIG_ECFSDSA "Support signature/verification scheme ECFSDSA" OFF) +option(OPTION_SUPPORT_SIG_ECGDSA "Support signature/verification scheme ECGDSA" OFF) +option(OPTION_SUPPORT_SIG_ECRDSA "Support signature/verification scheme ECRDSA" OFF) +option(OPTION_SUPPORT_SIG_ECSM2 "Support signature/verification scheme SM2" OFF) +option(OPTION_SUPPORT_SIG_EDDSA25519 "Support signature/verification scheme EDDSA25519" OFF) +option(OPTION_SUPPORT_SIG_EDDSA448 "Support signature/verification scheme EDDSA448" OFF) +option(OPTION_SUPPORT_SIG_DECDSA "Support signature/verification scheme DECDSA" OFF) +option(OPTION_SUPPORT_SIG_BIGN "Support signature/verification scheme BIGN" OFF) +option(OPTION_SUPPORT_SIG_DBIGN "Support signature/verification scheme DBIGN" OFF) +option(OPTION_SUPPORT_SIG_BIP0340 "Support signature/verification scheme BIP0340" OFF) +# Supported ECDH schemes +option(OPTION_SUPPORT_ECDH_ECCCDH "Support ECDH scheme ECCCDH" OFF) +option(OPTION_SUPPORT_ECDH_X25519 "Support ECDH scheme X25519" OFF) +option(OPTION_SUPPORT_ECDH_X448 "Support ECDH scheme X448" OFF) + +if (OPTION_SPECIFY_CONFIG) + add_definitions(-DWITH_LIBECC_CONFIG_OVERRIDE) + # Supported curves + if (OPTION_SUPPORT_CURVE_BIGN256V1) + add_definitions(-DWITH_CURVE_BIGN256V1) + endif(OPTION_SUPPORT_CURVE_BIGN256V1) + if (OPTION_SUPPORT_CURVE_BIGN384V1) + add_definitions(-DWITH_CURVE_BIGN384V1) + endif(OPTION_SUPPORT_CURVE_BIGN384V1) + if (OPTION_SUPPORT_CURVE_BIGN512V1) + add_definitions(-DWITH_CURVE_BIGN512V1) + endif(OPTION_SUPPORT_CURVE_BIGN512V1) + if (OPTION_SUPPORT_CURVE_BRAINPOOLP192R1) + add_definitions(-DWITH_CURVE_BRAINPOOLP192R1) + endif(OPTION_SUPPORT_CURVE_BRAINPOOLP192R1) + if (OPTION_SUPPORT_CURVE_BRAINPOOLP224R1) + add_definitions(-DWITH_CURVE_BRAINPOOLP224R1) + endif(OPTION_SUPPORT_CURVE_BRAINPOOLP224R1) + if (OPTION_SUPPORT_CURVE_BRAINPOOLP256R1) + add_definitions(-DWITH_CURVE_BRAINPOOLP256R1) + endif(OPTION_SUPPORT_CURVE_BRAINPOOLP256R1) + if (OPTION_SUPPORT_CURVE_BRAINPOOLP320R1) + add_definitions(-DWITH_CURVE_BRAINPOOLP320R1) + endif(OPTION_SUPPORT_CURVE_BRAINPOOLP320R1) + if (OPTION_SUPPORT_CURVE_BRAINPOOLP384R1) + add_definitions(-DWITH_CURVE_BRAINPOOLP384R1) + endif(OPTION_SUPPORT_CURVE_BRAINPOOLP384R1) + if (OPTION_SUPPORT_CURVE_BRAINPOOLP521R1) + add_definitions(-DWITH_CURVE_BRAINPOOLP521R1) + endif(OPTION_SUPPORT_CURVE_BRAINPOOLP521R1) + if (OPTION_SUPPORT_CURVE_BRAINPOOLP192T1) + add_definitions(-DWITH_CURVE_BRAINPOOLP192T1) + endif(OPTION_SUPPORT_CURVE_BRAINPOOLP192T1) + if (OPTION_SUPPORT_CURVE_BRAINPOOLP224T1) + add_definitions(-DWITH_CURVE_BRAINPOOLP224T1) + endif(OPTION_SUPPORT_CURVE_BRAINPOOLP224T1) + if (OPTION_SUPPORT_CURVE_BRAINPOOLP256T1) + add_definitions(-DWITH_CURVE_BRAINPOOLP256T1) + endif(OPTION_SUPPORT_CURVE_BRAINPOOLP256T1) + if (OPTION_SUPPORT_CURVE_BRAINPOOLP320T1) + add_definitions(-DWITH_CURVE_BRAINPOOLP320T1) + endif(OPTION_SUPPORT_CURVE_BRAINPOOLP320T1) + if (OPTION_SUPPORT_CURVE_BRAINPOOLP384T1) + add_definitions(-DWITH_CURVE_BRAINPOOLP384T1) + endif(OPTION_SUPPORT_CURVE_BRAINPOOLP384T1) + if (OPTION_SUPPORT_CURVE_BRAINPOOLP521T1) + add_definitions(-DWITH_CURVE_BRAINPOOLP521T1) + endif(OPTION_SUPPORT_CURVE_BRAINPOOLP521T1) + if (OPTION_SUPPORT_CURVE_FRP256V1) + add_definitions(-DWITH_CURVE_FRP256V1) + endif(OPTION_SUPPORT_CURVE_FRP256V1) + if (OPTION_SUPPORT_CURVE_GOST256) + add_definitions(-DWITH_CURVE_GOST256) + endif(OPTION_SUPPORT_CURVE_GOST256) + if (OPTION_SUPPORT_CURVE_GOST512) + add_definitions(-DWITH_CURVE_GOST512) + endif(OPTION_SUPPORT_CURVE_GOST512) + if (OPTION_SUPPORT_CURVE_SECP192K1) + add_definitions(-DWITH_CURVE_SECP192K1) + endif(OPTION_SUPPORT_CURVE_SECP192K1) + if (OPTION_SUPPORT_CURVE_SECP224K1) + add_definitions(-DWITH_CURVE_SECP224K1) + endif(OPTION_SUPPORT_CURVE_SECP224K1) + if (OPTION_SUPPORT_CURVE_SECP256K1) + add_definitions(-DWITH_CURVE_SECP256K1) + endif(OPTION_SUPPORT_CURVE_SECP256K1) + if (OPTION_SUPPORT_CURVE_SECP192R1) + add_definitions(-DWITH_CURVE_SECP192R1) + endif(OPTION_SUPPORT_CURVE_SECP192R1) + if (OPTION_SUPPORT_CURVE_SECP224R1) + add_definitions(-DWITH_CURVE_SECP224R1) + endif(OPTION_SUPPORT_CURVE_SECP224R1) + if (OPTION_SUPPORT_CURVE_SECP256R1) + add_definitions(-DWITH_CURVE_SECP256R1) + endif(OPTION_SUPPORT_CURVE_SECP256R1) + if (OPTION_SUPPORT_CURVE_SECP384R1) + add_definitions(-DWITH_CURVE_SECP384R1) + endif(OPTION_SUPPORT_CURVE_SECP384R1) + if (OPTION_SUPPORT_CURVE_SECP521R1) + add_definitions(-DWITH_CURVE_SECP521R1) + endif(OPTION_SUPPORT_CURVE_SECP521R1) + if (OPTION_SUPPORT_CURVE_SM2P256TEST) + add_definitions(-DWITH_CURVE_SM2P256TEST) + endif(OPTION_SUPPORT_CURVE_SM2P256TEST) + if (OPTION_SUPPORT_CURVE_SM2P256V1) + add_definitions(-DWITH_CURVE_SM2P256V1) + endif(OPTION_SUPPORT_CURVE_SM2P256V1) + if (OPTION_SUPPORT_CURVE_WEI25519) + add_definitions(-DWITH_CURVE_WEI25519) + endif(OPTION_SUPPORT_CURVE_WEI25519) + if (OPTION_SUPPORT_CURVE_WEI448) + add_definitions(-DWITH_CURVE_WEI448) + endif(OPTION_SUPPORT_CURVE_WEI448) + # Supported hash algorithms + if (OPTION_SUPPORT_HASH_SHA224) + add_definitions(-DWITH_HASH_SHA224) + endif(OPTION_SUPPORT_HASH_SHA224) + if (OPTION_SUPPORT_HASH_SHA256) + add_definitions(-DWITH_HASH_SHA256) + endif(OPTION_SUPPORT_HASH_SHA256) + if (OPTION_SUPPORT_HASH_SHA384) + add_definitions(-DWITH_HASH_SHA384) + endif(OPTION_SUPPORT_HASH_SHA384) + if (OPTION_SUPPORT_HASH_SHA512) + add_definitions(-DWITH_HASH_SHA512) + endif(OPTION_SUPPORT_HASH_SHA512) + if (OPTION_SUPPORT_HASH_SHA512_224) + add_definitions(-DWITH_HASH_SHA512_224) + endif(OPTION_SUPPORT_HASH_SHA512_224) + if (OPTION_SUPPORT_HASH_SHA512_256) + add_definitions(-DWITH_HASH_SHA512_256) + endif(OPTION_SUPPORT_HASH_SHA512_256) + if (OPTION_SUPPORT_HASH_SHA3_224) + add_definitions(-DWITH_HASH_SHA3_224) + endif(OPTION_SUPPORT_HASH_SHA3_224) + if (OPTION_SUPPORT_HASH_SHA3_256) + add_definitions(-DWITH_HASH_SHA3_256) + endif(OPTION_SUPPORT_HASH_SHA3_256) + if (OPTION_SUPPORT_HASH_SHA3_384) + add_definitions(-DWITH_HASH_SHA3_384) + endif(OPTION_SUPPORT_HASH_SHA3_384) + if (OPTION_SUPPORT_HASH_SHA3_512) + add_definitions(-DWITH_HASH_SHA3_512) + endif(OPTION_SUPPORT_HASH_SHA3_512) + if (OPTION_SUPPORT_HASH_SM3) + add_definitions(-DWITH_HASH_SM3) + endif(OPTION_SUPPORT_HASH_SM3) + if (OPTION_SUPPORT_HASH_SHAKE256) + add_definitions(-DWITH_HASH_SHAKE256) + endif(OPTION_SUPPORT_HASH_SHAKE256) + if (OPTION_SUPPORT_HASH_STREEBOG256) + add_definitions(-DWITH_HASH_STREEBOG256) + endif(OPTION_SUPPORT_HASH_STREEBOG256) + if (OPTION_SUPPORT_HASH_STREEBOG512) + add_definitions(-DWITH_HASH_STREEBOG512) + endif(OPTION_SUPPORT_HASH_STREEBOG512) + if (OPTION_SUPPORT_HASH_RIPEMD160) + add_definitions(-DWITH_HASH_RIPEMD160) + endif(OPTION_SUPPORT_HASH_RIPEMD160) + if (OPTION_SUPPORT_HASH_BELT_HASH) + add_definitions(-DWITH_HASH_BELT_HASH) + endif(OPTION_SUPPORT_HASH_BELT_HASH) + if (OPTION_SUPPORT_HASH_BASH224) + add_definitions(-DWITH_HASH_BASH224) + endif(OPTION_SUPPORT_HASH_BASH224) + if (OPTION_SUPPORT_HASH_BASH256) + add_definitions(-DWITH_HASH_BASH256) + endif(OPTION_SUPPORT_HASH_BASH256) + if (OPTION_SUPPORT_HASH_BASH384) + add_definitions(-DWITH_HASH_BASH384) + endif(OPTION_SUPPORT_HASH_BASH384) + if (OPTION_SUPPORT_HASH_BASH512) + add_definitions(-DWITH_HASH_BASH512) + endif(OPTION_SUPPORT_HASH_BASH512) + if (OPTION_SUPPORT_HASH_HMAC) + add_definitions(-DWITH_HMAC) + endif(OPTION_SUPPORT_HASH_HMAC) + # Supported sig/verif schemes + if (OPTION_SUPPORT_SIG_ECDSA) + add_definitions(-DWITH_SIG_ECDSA) + endif(OPTION_SUPPORT_SIG_ECDSA) + if (OPTION_SUPPORT_SIG_ECKCDSA) + add_definitions(-DWITH_SIG_ECKCDSA) + endif(OPTION_SUPPORT_SIG_ECKCDSA) + if (OPTION_SUPPORT_SIG_ECSDSA) + add_definitions(-DWITH_SIG_ECSDSA) + endif(OPTION_SUPPORT_SIG_ECSDSA) + if (OPTION_SUPPORT_SIG_ECOSDSA) + add_definitions(-DWITH_SIG_ECOSDSA) + endif(OPTION_SUPPORT_SIG_ECOSDSA) + if (OPTION_SUPPORT_SIG_ECFSDSA) + add_definitions(-DWITH_SIG_ECFSDSA) + endif(OPTION_SUPPORT_SIG_ECFSDSA) + if (OPTION_SUPPORT_SIG_ECGDSA) + add_definitions(-DWITH_SIG_ECGDSA) + endif(OPTION_SUPPORT_SIG_ECGDSA) + if (OPTION_SUPPORT_SIG_ECRDSA) + add_definitions(-DWITH_SIG_ECRDSA) + endif(OPTION_SUPPORT_SIG_ECRDSA) + if (OPTION_SUPPORT_SIG_SM2) + add_definitions(-DWITH_SIG_SM2) + endif(OPTION_SUPPORT_SIG_SM2) + if (OPTION_SUPPORT_SIG_EDDSA25519) + add_definitions(-DWITH_SIG_EDDSA25519) + endif(OPTION_SUPPORT_SIG_EDDSA25519) + if (OPTION_SUPPORT_SIG_EDDSA448) + add_definitions(-DWITH_SIG_EDDSA448) + endif(OPTION_SUPPORT_SIG_EDDSA448) + if (OPTION_SUPPORT_SIG_DECDSA) + add_definitions(-DWITH_SIG_DECDSA) + endif(OPTION_SUPPORT_SIG_DECDSA) + if (OPTION_SUPPORT_SIG_BIGN) + add_definitions(-DWITH_SIG_BIGN) + endif(OPTION_SUPPORT_SIG_BIGN) + if (OPTION_SUPPORT_SIG_DBIGN) + add_definitions(-DWITH_SIG_DBIGN) + endif(OPTION_SUPPORT_SIG_DBIGN) + if (OPTION_SUPPORT_SIG_BIP0340) + add_definitions(-DWITH_SIG_BIP0340) + endif(OPTION_SUPPORT_SIG_BIP0340) + # Supported ECDH schemes + if (OPTION_SUPPORT_ECDH_ECCCDH) + add_definitions(-DWITH_ECCCDH) + endif(OPTION_SUPPORT_ECDH_ECCCDH) + if (OPTION_SUPPORT_ECDH_X25519) + add_definitions(-DWITH_X25519) + endif(OPTION_SUPPORT_ECDH_X25519) + if (OPTION_SUPPORT_ECDH_X448) + add_definitions(-DWITH_X448) + endif(OPTION_SUPPORT_ECDH_X448) +endif(OPTION_SPECIFY_CONFIG) + +if (NOT (PLATFORM_WORD_SIZE STREQUAL "16" OR PLATFORM_WORD_SIZE STREQUAL "32" OR PLATFORM_WORD_SIZE STREQUAL "64")) + set(PLATFORM_WORD_SIZE "32") +endif() +add_definitions(-DWORDSIZE=${PLATFORM_WORD_SIZE}) +if (PLATFORM_INCLUDE_STDLIB) + add_definitions(-DWITH_STDLIB) +endif() + +# Set platform variables +if (CMAKE_SYSTEM_NAME STREQUAL "Windows") + add_definitions(-D__WIN32__) +endif() + +# external dependencies +file(GLOB EXT_DEPS_SRC src/external_deps/*.c) + +# utils module (for the ARITH layer, we only need +# NN and FP - and not curves - related stuff. Same goes +# for EC and SIGN. Hence the distinction between three +# sets of utils objects. +file(GLOB UTILS_ARITH_SRC src/utils/utils.c + src/utils/utils_rand.c + src/utils/*_nn.c + src/utils/*_fp.c + src/utils/*_buf.c) +file(GLOB UTILS_EC_SRC src/utils/*_curves.c) +file(GLOB UTILS_SIGN_SRC src/utils/*_keys.c) + +# nn module +file(GLOB NN_SRC src/nn/n*.c) + +# fp module +file(GLOB FP_SRC src/fp/fp*.c) + +# curve module +file(GLOB CURVES_SRC src/curves/*.c) + +# Hash module +file(GLOB HASH_SRC src/hash/sha*.c + src/hash/bash*.c + src/hash/hash_algs.c + src/hash/sm3.c + src/hash/streebog.c + src/hash/ripemd160.c + src/hash/belt-hash.c + src/hash/hmac.c) + +# Key/Signature/Verification/ECDH module +file(GLOB SIG_SRC src/sig/*dsa.c + src/sig/ecdsa_common.c + src/sig/ecsdsa_common.c + src/sig/sig_algs.c + src/sig/sm2.c + src/sig/bign_common.c + src/sig/bign.c + src/sig/dbign.c + src/sig/bip0340.c) +file(GLOB ECDH_SRC src/ecdh/*.c) +file(GLOB KEY_SRC src/sig/ec_key.c) + +# Test elements +file(GLOB TESTS_OBJECTS_CORE_SRC src/tests/ec_self_tests_core.c) +file(GLOB TESTS_OBJECTS_SELF_SRC src/tests/ec_self_tests.c) +file(GLOB TESTS_OBJECTS_UTILS_SRC src/tests/ec_utils.c) + +set(LIBARITH_SRC ${FP_SRC} ${NN_SRC} ${UTILS_ARITH_SRC}) +set(LIBEC_SRC ${LIBARITH_SRC} ${CURVES_SRC} ${UTILS_EC_SRC}) +set(LIBSIGN_SRC ${LIBEC_SRC} ${HASH_SRC} ${SIG_SRC} ${KEY_SRC} ${UTILS_SIGN_SRC} ${SIG_SRC}) + +set(EC_SELF_TESTS_SRC ${TESTS_OBJECTS_CORE_SRC} ${TESTS_OBJECTS_SELF_SRC} ${EXT_DEPS_SRC}) +set(EC_UTILS_SRC ${TESTS_OBJECTS_CORE_SRC} ${TESTS_OBJECTS_UTILS_SRC} ${EXT_DEPS_SRC}) + +# --- Static Libraries --- +if (NOT BUILD_SHARED_LIBS) + add_library(arith STATIC ${LIBARITH_SRC}) + add_library(ec STATIC ${LIBEC_SRC}) + add_library(sign STATIC ${LIBSIGN_SRC}) +endif(NOT BUILD_SHARED_LIBS) + +# --- Dynamic Libraries --- +if (BUILD_SHARED_LIBS) + add_library(arith_dyn SHARED ${LIBARITH_SRC}) + add_library(ec_dyn SHARED ${LIBEC_SRC}) + add_library(sign_dyn SHARED ${LIBSIGN_SRC}) +endif(BUILD_SHARED_LIBS) + +# --- Executables (Static linkage with libsign object files) --- +if (NOT BUILD_SHARED_LIBS) + if (OPTION_BUILD_SELF_TEST) + add_executable(ec_self_tests ${EC_SELF_TESTS_SRC}) + target_link_libraries(ec_self_tests sign) + endif (OPTION_BUILD_SELF_TEST) + if (OPTION_BUILD_UTILITY) + add_executable(ec_utils ${EC_UTILS_SRC}) + target_link_libraries(ec_utils sign) + endif (OPTION_BUILD_UTILITY) +endif(NOT BUILD_SHARED_LIBS) + +# --- Excutables (Dynamic linkage with libsign shared library) --- +if (BUILD_SHARED_LIBS) + if (OPTION_BUILD_SELF_TEST) + add_executable(ec_self_tests_dyn ${EC_SELF_TESTS_SRC}) + target_link_libraries(ec_self_tests_dyn sign_dyn) + endif (OPTION_BUILD_SELF_TEST) + if (OPTION_BUILD_UTILITY) + add_executable(ec_utils_dyn ${EC_UTILS_SRC}) + target_link_libraries(ec_utils_dyn sign_dyn) + endif (OPTION_BUILD_UTILITY) +endif(BUILD_SHARED_LIBS) + +# All source files, used to construct general rules +set(SRC ${EXT_DEPS_SRC} ${UTILS_ARITH_SRC} ${UTILS_EC_SRC} ${UTILS_SIGN_SRC} + ${NN_SRC} ${FP_SRC} ${CURVES_SRC} ${HASH_SRC} ${SIG_SRC} ${ECDH_SRC} + ${KEY_SRC} ${TESTS_OBJECTS_CORE_SRC} ${TESTS_OBJECTS_SELF_SRC} + ${TESTS_OBJECTS_UTILS_SRC}) From df8079804825ff5ea42113598985f4fe6b3dfa43 Mon Sep 17 00:00:00 2001 From: JaLooooNz Date: Fri, 14 Jun 2024 23:21:22 +0800 Subject: [PATCH 2/3] -Default enable all algorithms (except some GOST ciphers) -DEfault build ec-self-tests and ec-utils --- CMakeLists.txt | 696 ++++++++++++++++++++++++------------------------- 1 file changed, 348 insertions(+), 348 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a5988992..2e742735 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,408 +3,408 @@ project(libecc) include_directories(include) # Define options -option(PLATFORM_WORD_SIZE "Platform word size (16, 32 or 64)" "32") -option(PLATFORM_INCLUDE_STDLIB "Platform provides STDLIB" ON) -option(OPTION_SPECIFY_CONFIG "Customise libecc configuration" OFF) -option(OPTION_BUILD_SELF_TEST "Build libecc ec-self-tests" OFF) -option(OPTION_BUILD_UTILITY "Build libecc ec-utils" OFF) +option(PLATFORM_WORD_SIZE "Platform word size (16, 32 or 64)" "32") +option(PLATFORM_INCLUDE_STDLIB "Platform provides STDLIB" ON) +option(OPTION_SPECIFY_CONFIG "Customise libecc configuration" ON) +option(OPTION_BUILD_SELF_TEST "Build libecc ec-self-tests" ON) +option(OPTION_BUILD_UTILITY "Build libecc ec-utils" ON) # Supported curves -option(OPTION_SUPPORT_CURVE_BIGN256V1 "Support EC Curve BIGN256V1" OFF) -option(OPTION_SUPPORT_CURVE_BIGN384V1 "Support EC Curve BIGN384V1" OFF) -option(OPTION_SUPPORT_CURVE_BIGN512V1 "Support EC Curve BIGN512V1" OFF) -option(OPTION_SUPPORT_CURVE_BRAINPOOLP192R1 "Support EC Curve BRAINPOOLP192R1" OFF) -option(OPTION_SUPPORT_CURVE_BRAINPOOLP224R1 "Support EC Curve BRAINPOOLP224R1" OFF) -option(OPTION_SUPPORT_CURVE_BRAINPOOLP256R1 "Support EC Curve BRAINPOOLP256R1" OFF) -option(OPTION_SUPPORT_CURVE_BRAINPOOLP320R1 "Support EC Curve BRAINPOOLP320R1" OFF) -option(OPTION_SUPPORT_CURVE_BRAINPOOLP384R1 "Support EC Curve BRAINPOOLP384R1" OFF) -option(OPTION_SUPPORT_CURVE_BRAINPOOLP521R1 "Support EC Curve BRAINPOOLP521R1" OFF) -option(OPTION_SUPPORT_CURVE_BRAINPOOLP192T1 "Support EC Curve BRAINPOOLP192T1" OFF) -option(OPTION_SUPPORT_CURVE_BRAINPOOLP224T1 "Support EC Curve BRAINPOOLP224T1" OFF) -option(OPTION_SUPPORT_CURVE_BRAINPOOLP256T1 "Support EC Curve BRAINPOOLP256T1" OFF) -option(OPTION_SUPPORT_CURVE_BRAINPOOLP320T1 "Support EC Curve BRAINPOOLP320T1" OFF) -option(OPTION_SUPPORT_CURVE_BRAINPOOLP384T1 "Support EC Curve BRAINPOOLP384T1" OFF) -option(OPTION_SUPPORT_CURVE_BRAINPOOLP521T1 "Support EC Curve BRAINPOOLP521T1" OFF) -option(OPTION_SUPPORT_CURVE_FRP256V1 "Support EC Curve FRP256V1" OFF) -option(OPTION_SUPPORT_CURVE_GOST256 "Support EC Curve GOST256" OFF) -option(OPTION_SUPPORT_CURVE_GOST512 "Support EC Curve GOST512" OFF) -option(OPTION_SUPPORT_CURVE_SECP192R1 "Support EC Curve SECP192R1" OFF) -option(OPTION_SUPPORT_CURVE_SECP224R1 "Support EC Curve SECP224R1" OFF) -option(OPTION_SUPPORT_CURVE_SECP256R1 "Support EC Curve SECP256R1" ON) -option(OPTION_SUPPORT_CURVE_SECP384R1 "Support EC Curve SECP384R1" OFF) -option(OPTION_SUPPORT_CURVE_SECP521R1 "Support EC Curve SECP521R1" ON) -option(OPTION_SUPPORT_CURVE_SECP192K1 "Support EC Curve SECP192K1" OFF) -option(OPTION_SUPPORT_CURVE_SECP224K1 "Support EC Curve SECP224K1" OFF) -option(OPTION_SUPPORT_CURVE_SECP256K1 "Support EC Curve SECP256K1" OFF) -option(OPTION_SUPPORT_CURVE_SM2P256TEST "Support EC Curve SM2P256TEST" OFF) -option(OPTION_SUPPORT_CURVE_SM2P256V1 "Support EC Curve SM2P256V1" OFF) -option(OPTION_SUPPORT_CURVE_WEI25519 "Support EC Curve WEI25519" OFF) -option(OPTION_SUPPORT_CURVE_WEI448 "Support EC Curve WEI448" OFF) +option(OPTION_SUPPORT_CURVE_BIGN256V1 "Support EC Curve BIGN256V1" ON) +option(OPTION_SUPPORT_CURVE_BIGN384V1 "Support EC Curve BIGN384V1" ON) +option(OPTION_SUPPORT_CURVE_BIGN512V1 "Support EC Curve BIGN512V1" ON) +option(OPTION_SUPPORT_CURVE_BRAINPOOLP192R1 "Support EC Curve BRAINPOOLP192R1" ON) +option(OPTION_SUPPORT_CURVE_BRAINPOOLP224R1 "Support EC Curve BRAINPOOLP224R1" ON) +option(OPTION_SUPPORT_CURVE_BRAINPOOLP256R1 "Support EC Curve BRAINPOOLP256R1" ON) +option(OPTION_SUPPORT_CURVE_BRAINPOOLP320R1 "Support EC Curve BRAINPOOLP320R1" ON) +option(OPTION_SUPPORT_CURVE_BRAINPOOLP384R1 "Support EC Curve BRAINPOOLP384R1" ON) +option(OPTION_SUPPORT_CURVE_BRAINPOOLP521R1 "Support EC Curve BRAINPOOLP521R1" ON) +option(OPTION_SUPPORT_CURVE_BRAINPOOLP192T1 "Support EC Curve BRAINPOOLP192T1" ON) +option(OPTION_SUPPORT_CURVE_BRAINPOOLP224T1 "Support EC Curve BRAINPOOLP224T1" ON) +option(OPTION_SUPPORT_CURVE_BRAINPOOLP256T1 "Support EC Curve BRAINPOOLP256T1" ON) +option(OPTION_SUPPORT_CURVE_BRAINPOOLP320T1 "Support EC Curve BRAINPOOLP320T1" ON) +option(OPTION_SUPPORT_CURVE_BRAINPOOLP384T1 "Support EC Curve BRAINPOOLP384T1" ON) +option(OPTION_SUPPORT_CURVE_BRAINPOOLP521T1 "Support EC Curve BRAINPOOLP521T1" ON) +option(OPTION_SUPPORT_CURVE_FRP256V1 "Support EC Curve FRP256V1" ON) +option(OPTION_SUPPORT_CURVE_GOST256 "Support EC Curve GOST256" ON) +option(OPTION_SUPPORT_CURVE_GOST512 "Support EC Curve GOST512" ON) +option(OPTION_SUPPORT_CURVE_SECP192R1 "Support EC Curve SECP192R1" ON) +option(OPTION_SUPPORT_CURVE_SECP224R1 "Support EC Curve SECP224R1" ON) +option(OPTION_SUPPORT_CURVE_SECP256R1 "Support EC Curve SECP256R1" ON) +option(OPTION_SUPPORT_CURVE_SECP384R1 "Support EC Curve SECP384R1" ON) +option(OPTION_SUPPORT_CURVE_SECP521R1 "Support EC Curve SECP521R1" ON) +option(OPTION_SUPPORT_CURVE_SECP192K1 "Support EC Curve SECP192K1" ON) +option(OPTION_SUPPORT_CURVE_SECP224K1 "Support EC Curve SECP224K1" ON) +option(OPTION_SUPPORT_CURVE_SECP256K1 "Support EC Curve SECP256K1" ON) +option(OPTION_SUPPORT_CURVE_SM2P256TEST "Support EC Curve SM2P256TEST" ON) +option(OPTION_SUPPORT_CURVE_SM2P256V1 "Support EC Curve SM2P256V1" ON) +option(OPTION_SUPPORT_CURVE_WEI25519 "Support EC Curve WEI25519" ON) +option(OPTION_SUPPORT_CURVE_WEI448 "Support EC Curve WEI448" ON) # Supported hash algorithms -option(OPTION_SUPPORT_HASH_SHA224 "Support Hash SHA224" ON) -option(OPTION_SUPPORT_HASH_SHA256 "Support Hash SHA256" ON) -option(OPTION_SUPPORT_HASH_SHA384 "Support Hash SHA384" ON) -option(OPTION_SUPPORT_HASH_SHA512 "Support Hash SHA512" ON) -option(OPTION_SUPPORT_HASH_SHA512_224 "Support Hash SHA512_224" ON) -option(OPTION_SUPPORT_HASH_SHA512_256 "Support Hash SHA512_256" ON) -option(OPTION_SUPPORT_HASH_SHA3_224 "Support Hash SHA3_224" ON) -option(OPTION_SUPPORT_HASH_SHA3_256 "Support Hash SHA3_256" ON) -option(OPTION_SUPPORT_HASH_SHA3_384 "Support Hash SHA3_384" ON) -option(OPTION_SUPPORT_HASH_SHA3_512 "Support Hash SHA3_512" ON) -option(OPTION_SUPPORT_HASH_SM3 "Support Hash SM3" OFF) -option(OPTION_SUPPORT_HASH_SHAKE256 "Support Hash SHAKE256" OFF) -option(OPTION_SUPPORT_HASH_STREEBOG256 "Support Hash STREEBOG256" OFF) -option(OPTION_SUPPORT_HASH_STREEBOG512 "Support Hash STREEBOG512" OFF) -option(OPTION_SUPPORT_HASH_RIPEMD160 "Support Hash RIPEMD160" OFF) -option(OPTION_SUPPORT_HASH_BELT_HASH "Support Hash BELT_HASH" OFF) -option(OPTION_SUPPORT_HASH_BASH224 "Support Hash BASH224" OFF) -option(OPTION_SUPPORT_HASH_BASH256 "Support Hash BASH256" OFF) -option(OPTION_SUPPORT_HASH_BASH384 "Support Hash BASH384" OFF) -option(OPTION_SUPPORT_HASH_BASH512 "Support Hash BASH512" OFF) -option(OPTION_SUPPORT_HASH_HMAC "Support Hash HMAC" OFF) +option(OPTION_SUPPORT_HASH_SHA224 "Support Hash SHA224" ON) +option(OPTION_SUPPORT_HASH_SHA256 "Support Hash SHA256" ON) +option(OPTION_SUPPORT_HASH_SHA384 "Support Hash SHA384" ON) +option(OPTION_SUPPORT_HASH_SHA512 "Support Hash SHA512" ON) +option(OPTION_SUPPORT_HASH_SHA512_224 "Support Hash SHA512_224" ON) +option(OPTION_SUPPORT_HASH_SHA512_256 "Support Hash SHA512_256" ON) +option(OPTION_SUPPORT_HASH_SHA3_224 "Support Hash SHA3_224" ON) +option(OPTION_SUPPORT_HASH_SHA3_256 "Support Hash SHA3_256" ON) +option(OPTION_SUPPORT_HASH_SHA3_384 "Support Hash SHA3_384" ON) +option(OPTION_SUPPORT_HASH_SHA3_512 "Support Hash SHA3_512" ON) +option(OPTION_SUPPORT_HASH_SM3 "Support Hash SM3" ON) +option(OPTION_SUPPORT_HASH_SHAKE256 "Support Hash SHAKE256" ON) +option(OPTION_SUPPORT_HASH_STREEBOG256 "Support Hash STREEBOG256" ON) +option(OPTION_SUPPORT_HASH_STREEBOG512 "Support Hash STREEBOG512" ON) +option(OPTION_SUPPORT_HASH_RIPEMD160 "Support Hash RIPEMD160" ON) +option(OPTION_SUPPORT_HASH_BELT_HASH "Support Hash BELT_HASH" ON) +option(OPTION_SUPPORT_HASH_BASH224 "Support Hash BASH224" ON) +option(OPTION_SUPPORT_HASH_BASH256 "Support Hash BASH256" ON) +option(OPTION_SUPPORT_HASH_BASH384 "Support Hash BASH384" ON) +option(OPTION_SUPPORT_HASH_BASH512 "Support Hash BASH512" ON) +option(OPTION_SUPPORT_HASH_HMAC "Support Hash HMAC" ON) # Supported sig/verif schemes -option(OPTION_SUPPORT_SIG_ECDSA "Support signature/verification scheme ECDSA" ON) -option(OPTION_SUPPORT_SIG_ECKCDSA "Support signature/verification scheme ECKDSA" OFF) -option(OPTION_SUPPORT_SIG_ECSDSA "Support signature/verification scheme ECSDSA" ON) -option(OPTION_SUPPORT_SIG_ECOSDSA "Support signature/verification scheme ECOSDSA" OFF) -option(OPTION_SUPPORT_SIG_ECFSDSA "Support signature/verification scheme ECFSDSA" OFF) -option(OPTION_SUPPORT_SIG_ECGDSA "Support signature/verification scheme ECGDSA" OFF) -option(OPTION_SUPPORT_SIG_ECRDSA "Support signature/verification scheme ECRDSA" OFF) -option(OPTION_SUPPORT_SIG_ECSM2 "Support signature/verification scheme SM2" OFF) -option(OPTION_SUPPORT_SIG_EDDSA25519 "Support signature/verification scheme EDDSA25519" OFF) -option(OPTION_SUPPORT_SIG_EDDSA448 "Support signature/verification scheme EDDSA448" OFF) -option(OPTION_SUPPORT_SIG_DECDSA "Support signature/verification scheme DECDSA" OFF) -option(OPTION_SUPPORT_SIG_BIGN "Support signature/verification scheme BIGN" OFF) -option(OPTION_SUPPORT_SIG_DBIGN "Support signature/verification scheme DBIGN" OFF) -option(OPTION_SUPPORT_SIG_BIP0340 "Support signature/verification scheme BIP0340" OFF) +option(OPTION_SUPPORT_SIG_ECDSA "Support signature/verification scheme ECDSA" ON) +option(OPTION_SUPPORT_SIG_ECKCDSA "Support signature/verification scheme ECKDSA" ON) +option(OPTION_SUPPORT_SIG_ECSDSA "Support signature/verification scheme ECSDSA" ON) +option(OPTION_SUPPORT_SIG_ECOSDSA "Support signature/verification scheme ECOSDSA" ON) +option(OPTION_SUPPORT_SIG_ECFSDSA "Support signature/verification scheme ECFSDSA" ON) +option(OPTION_SUPPORT_SIG_ECGDSA "Support signature/verification scheme ECGDSA" ON) +option(OPTION_SUPPORT_SIG_ECRDSA "Support signature/verification scheme ECRDSA" ON) +option(OPTION_SUPPORT_SIG_ECSM2 "Support signature/verification scheme SM2" ON) +option(OPTION_SUPPORT_SIG_EDDSA25519 "Support signature/verification scheme EDDSA25519" ON) +option(OPTION_SUPPORT_SIG_EDDSA448 "Support signature/verification scheme EDDSA448" ON) +option(OPTION_SUPPORT_SIG_DECDSA "Support signature/verification scheme DECDSA" ON) +option(OPTION_SUPPORT_SIG_BIGN "Support signature/verification scheme BIGN" ON) +option(OPTION_SUPPORT_SIG_DBIGN "Support signature/verification scheme DBIGN" ON) +option(OPTION_SUPPORT_SIG_BIP0340 "Support signature/verification scheme BIP0340" ON) # Supported ECDH schemes -option(OPTION_SUPPORT_ECDH_ECCCDH "Support ECDH scheme ECCCDH" OFF) -option(OPTION_SUPPORT_ECDH_X25519 "Support ECDH scheme X25519" OFF) -option(OPTION_SUPPORT_ECDH_X448 "Support ECDH scheme X448" OFF) +option(OPTION_SUPPORT_ECDH_ECCCDH "Support ECDH scheme ECCCDH" ON) +option(OPTION_SUPPORT_ECDH_X25519 "Support ECDH scheme X25519" ON) +option(OPTION_SUPPORT_ECDH_X448 "Support ECDH scheme X448" ON) if (OPTION_SPECIFY_CONFIG) - add_definitions(-DWITH_LIBECC_CONFIG_OVERRIDE) - # Supported curves - if (OPTION_SUPPORT_CURVE_BIGN256V1) - add_definitions(-DWITH_CURVE_BIGN256V1) - endif(OPTION_SUPPORT_CURVE_BIGN256V1) - if (OPTION_SUPPORT_CURVE_BIGN384V1) - add_definitions(-DWITH_CURVE_BIGN384V1) - endif(OPTION_SUPPORT_CURVE_BIGN384V1) - if (OPTION_SUPPORT_CURVE_BIGN512V1) - add_definitions(-DWITH_CURVE_BIGN512V1) - endif(OPTION_SUPPORT_CURVE_BIGN512V1) - if (OPTION_SUPPORT_CURVE_BRAINPOOLP192R1) - add_definitions(-DWITH_CURVE_BRAINPOOLP192R1) - endif(OPTION_SUPPORT_CURVE_BRAINPOOLP192R1) - if (OPTION_SUPPORT_CURVE_BRAINPOOLP224R1) - add_definitions(-DWITH_CURVE_BRAINPOOLP224R1) - endif(OPTION_SUPPORT_CURVE_BRAINPOOLP224R1) - if (OPTION_SUPPORT_CURVE_BRAINPOOLP256R1) - add_definitions(-DWITH_CURVE_BRAINPOOLP256R1) - endif(OPTION_SUPPORT_CURVE_BRAINPOOLP256R1) - if (OPTION_SUPPORT_CURVE_BRAINPOOLP320R1) - add_definitions(-DWITH_CURVE_BRAINPOOLP320R1) - endif(OPTION_SUPPORT_CURVE_BRAINPOOLP320R1) - if (OPTION_SUPPORT_CURVE_BRAINPOOLP384R1) - add_definitions(-DWITH_CURVE_BRAINPOOLP384R1) - endif(OPTION_SUPPORT_CURVE_BRAINPOOLP384R1) - if (OPTION_SUPPORT_CURVE_BRAINPOOLP521R1) - add_definitions(-DWITH_CURVE_BRAINPOOLP521R1) - endif(OPTION_SUPPORT_CURVE_BRAINPOOLP521R1) - if (OPTION_SUPPORT_CURVE_BRAINPOOLP192T1) - add_definitions(-DWITH_CURVE_BRAINPOOLP192T1) - endif(OPTION_SUPPORT_CURVE_BRAINPOOLP192T1) - if (OPTION_SUPPORT_CURVE_BRAINPOOLP224T1) - add_definitions(-DWITH_CURVE_BRAINPOOLP224T1) - endif(OPTION_SUPPORT_CURVE_BRAINPOOLP224T1) - if (OPTION_SUPPORT_CURVE_BRAINPOOLP256T1) - add_definitions(-DWITH_CURVE_BRAINPOOLP256T1) - endif(OPTION_SUPPORT_CURVE_BRAINPOOLP256T1) - if (OPTION_SUPPORT_CURVE_BRAINPOOLP320T1) - add_definitions(-DWITH_CURVE_BRAINPOOLP320T1) - endif(OPTION_SUPPORT_CURVE_BRAINPOOLP320T1) - if (OPTION_SUPPORT_CURVE_BRAINPOOLP384T1) - add_definitions(-DWITH_CURVE_BRAINPOOLP384T1) - endif(OPTION_SUPPORT_CURVE_BRAINPOOLP384T1) - if (OPTION_SUPPORT_CURVE_BRAINPOOLP521T1) - add_definitions(-DWITH_CURVE_BRAINPOOLP521T1) - endif(OPTION_SUPPORT_CURVE_BRAINPOOLP521T1) - if (OPTION_SUPPORT_CURVE_FRP256V1) - add_definitions(-DWITH_CURVE_FRP256V1) - endif(OPTION_SUPPORT_CURVE_FRP256V1) - if (OPTION_SUPPORT_CURVE_GOST256) - add_definitions(-DWITH_CURVE_GOST256) - endif(OPTION_SUPPORT_CURVE_GOST256) - if (OPTION_SUPPORT_CURVE_GOST512) - add_definitions(-DWITH_CURVE_GOST512) - endif(OPTION_SUPPORT_CURVE_GOST512) - if (OPTION_SUPPORT_CURVE_SECP192K1) - add_definitions(-DWITH_CURVE_SECP192K1) - endif(OPTION_SUPPORT_CURVE_SECP192K1) - if (OPTION_SUPPORT_CURVE_SECP224K1) - add_definitions(-DWITH_CURVE_SECP224K1) - endif(OPTION_SUPPORT_CURVE_SECP224K1) - if (OPTION_SUPPORT_CURVE_SECP256K1) - add_definitions(-DWITH_CURVE_SECP256K1) - endif(OPTION_SUPPORT_CURVE_SECP256K1) - if (OPTION_SUPPORT_CURVE_SECP192R1) - add_definitions(-DWITH_CURVE_SECP192R1) - endif(OPTION_SUPPORT_CURVE_SECP192R1) - if (OPTION_SUPPORT_CURVE_SECP224R1) - add_definitions(-DWITH_CURVE_SECP224R1) - endif(OPTION_SUPPORT_CURVE_SECP224R1) - if (OPTION_SUPPORT_CURVE_SECP256R1) - add_definitions(-DWITH_CURVE_SECP256R1) - endif(OPTION_SUPPORT_CURVE_SECP256R1) - if (OPTION_SUPPORT_CURVE_SECP384R1) - add_definitions(-DWITH_CURVE_SECP384R1) - endif(OPTION_SUPPORT_CURVE_SECP384R1) - if (OPTION_SUPPORT_CURVE_SECP521R1) - add_definitions(-DWITH_CURVE_SECP521R1) - endif(OPTION_SUPPORT_CURVE_SECP521R1) - if (OPTION_SUPPORT_CURVE_SM2P256TEST) - add_definitions(-DWITH_CURVE_SM2P256TEST) - endif(OPTION_SUPPORT_CURVE_SM2P256TEST) - if (OPTION_SUPPORT_CURVE_SM2P256V1) - add_definitions(-DWITH_CURVE_SM2P256V1) - endif(OPTION_SUPPORT_CURVE_SM2P256V1) - if (OPTION_SUPPORT_CURVE_WEI25519) - add_definitions(-DWITH_CURVE_WEI25519) - endif(OPTION_SUPPORT_CURVE_WEI25519) - if (OPTION_SUPPORT_CURVE_WEI448) - add_definitions(-DWITH_CURVE_WEI448) - endif(OPTION_SUPPORT_CURVE_WEI448) - # Supported hash algorithms - if (OPTION_SUPPORT_HASH_SHA224) - add_definitions(-DWITH_HASH_SHA224) - endif(OPTION_SUPPORT_HASH_SHA224) - if (OPTION_SUPPORT_HASH_SHA256) - add_definitions(-DWITH_HASH_SHA256) - endif(OPTION_SUPPORT_HASH_SHA256) - if (OPTION_SUPPORT_HASH_SHA384) - add_definitions(-DWITH_HASH_SHA384) - endif(OPTION_SUPPORT_HASH_SHA384) - if (OPTION_SUPPORT_HASH_SHA512) - add_definitions(-DWITH_HASH_SHA512) - endif(OPTION_SUPPORT_HASH_SHA512) - if (OPTION_SUPPORT_HASH_SHA512_224) - add_definitions(-DWITH_HASH_SHA512_224) - endif(OPTION_SUPPORT_HASH_SHA512_224) - if (OPTION_SUPPORT_HASH_SHA512_256) - add_definitions(-DWITH_HASH_SHA512_256) - endif(OPTION_SUPPORT_HASH_SHA512_256) - if (OPTION_SUPPORT_HASH_SHA3_224) - add_definitions(-DWITH_HASH_SHA3_224) - endif(OPTION_SUPPORT_HASH_SHA3_224) - if (OPTION_SUPPORT_HASH_SHA3_256) - add_definitions(-DWITH_HASH_SHA3_256) - endif(OPTION_SUPPORT_HASH_SHA3_256) - if (OPTION_SUPPORT_HASH_SHA3_384) - add_definitions(-DWITH_HASH_SHA3_384) - endif(OPTION_SUPPORT_HASH_SHA3_384) - if (OPTION_SUPPORT_HASH_SHA3_512) - add_definitions(-DWITH_HASH_SHA3_512) - endif(OPTION_SUPPORT_HASH_SHA3_512) - if (OPTION_SUPPORT_HASH_SM3) - add_definitions(-DWITH_HASH_SM3) - endif(OPTION_SUPPORT_HASH_SM3) - if (OPTION_SUPPORT_HASH_SHAKE256) - add_definitions(-DWITH_HASH_SHAKE256) - endif(OPTION_SUPPORT_HASH_SHAKE256) - if (OPTION_SUPPORT_HASH_STREEBOG256) - add_definitions(-DWITH_HASH_STREEBOG256) - endif(OPTION_SUPPORT_HASH_STREEBOG256) - if (OPTION_SUPPORT_HASH_STREEBOG512) - add_definitions(-DWITH_HASH_STREEBOG512) - endif(OPTION_SUPPORT_HASH_STREEBOG512) - if (OPTION_SUPPORT_HASH_RIPEMD160) - add_definitions(-DWITH_HASH_RIPEMD160) - endif(OPTION_SUPPORT_HASH_RIPEMD160) - if (OPTION_SUPPORT_HASH_BELT_HASH) - add_definitions(-DWITH_HASH_BELT_HASH) - endif(OPTION_SUPPORT_HASH_BELT_HASH) - if (OPTION_SUPPORT_HASH_BASH224) - add_definitions(-DWITH_HASH_BASH224) - endif(OPTION_SUPPORT_HASH_BASH224) - if (OPTION_SUPPORT_HASH_BASH256) - add_definitions(-DWITH_HASH_BASH256) - endif(OPTION_SUPPORT_HASH_BASH256) - if (OPTION_SUPPORT_HASH_BASH384) - add_definitions(-DWITH_HASH_BASH384) - endif(OPTION_SUPPORT_HASH_BASH384) - if (OPTION_SUPPORT_HASH_BASH512) - add_definitions(-DWITH_HASH_BASH512) - endif(OPTION_SUPPORT_HASH_BASH512) - if (OPTION_SUPPORT_HASH_HMAC) - add_definitions(-DWITH_HMAC) - endif(OPTION_SUPPORT_HASH_HMAC) - # Supported sig/verif schemes - if (OPTION_SUPPORT_SIG_ECDSA) - add_definitions(-DWITH_SIG_ECDSA) - endif(OPTION_SUPPORT_SIG_ECDSA) - if (OPTION_SUPPORT_SIG_ECKCDSA) - add_definitions(-DWITH_SIG_ECKCDSA) - endif(OPTION_SUPPORT_SIG_ECKCDSA) - if (OPTION_SUPPORT_SIG_ECSDSA) - add_definitions(-DWITH_SIG_ECSDSA) - endif(OPTION_SUPPORT_SIG_ECSDSA) - if (OPTION_SUPPORT_SIG_ECOSDSA) - add_definitions(-DWITH_SIG_ECOSDSA) - endif(OPTION_SUPPORT_SIG_ECOSDSA) - if (OPTION_SUPPORT_SIG_ECFSDSA) - add_definitions(-DWITH_SIG_ECFSDSA) - endif(OPTION_SUPPORT_SIG_ECFSDSA) - if (OPTION_SUPPORT_SIG_ECGDSA) - add_definitions(-DWITH_SIG_ECGDSA) - endif(OPTION_SUPPORT_SIG_ECGDSA) - if (OPTION_SUPPORT_SIG_ECRDSA) - add_definitions(-DWITH_SIG_ECRDSA) - endif(OPTION_SUPPORT_SIG_ECRDSA) - if (OPTION_SUPPORT_SIG_SM2) - add_definitions(-DWITH_SIG_SM2) - endif(OPTION_SUPPORT_SIG_SM2) - if (OPTION_SUPPORT_SIG_EDDSA25519) - add_definitions(-DWITH_SIG_EDDSA25519) - endif(OPTION_SUPPORT_SIG_EDDSA25519) - if (OPTION_SUPPORT_SIG_EDDSA448) - add_definitions(-DWITH_SIG_EDDSA448) - endif(OPTION_SUPPORT_SIG_EDDSA448) - if (OPTION_SUPPORT_SIG_DECDSA) - add_definitions(-DWITH_SIG_DECDSA) - endif(OPTION_SUPPORT_SIG_DECDSA) - if (OPTION_SUPPORT_SIG_BIGN) - add_definitions(-DWITH_SIG_BIGN) - endif(OPTION_SUPPORT_SIG_BIGN) - if (OPTION_SUPPORT_SIG_DBIGN) - add_definitions(-DWITH_SIG_DBIGN) - endif(OPTION_SUPPORT_SIG_DBIGN) - if (OPTION_SUPPORT_SIG_BIP0340) - add_definitions(-DWITH_SIG_BIP0340) - endif(OPTION_SUPPORT_SIG_BIP0340) - # Supported ECDH schemes - if (OPTION_SUPPORT_ECDH_ECCCDH) - add_definitions(-DWITH_ECCCDH) - endif(OPTION_SUPPORT_ECDH_ECCCDH) - if (OPTION_SUPPORT_ECDH_X25519) - add_definitions(-DWITH_X25519) - endif(OPTION_SUPPORT_ECDH_X25519) - if (OPTION_SUPPORT_ECDH_X448) - add_definitions(-DWITH_X448) - endif(OPTION_SUPPORT_ECDH_X448) + add_definitions(-DWITH_LIBECC_CONFIG_OVERRIDE) + # Supported curves + if (OPTION_SUPPORT_CURVE_BIGN256V1) + add_definitions(-DWITH_CURVE_BIGN256V1) + endif(OPTION_SUPPORT_CURVE_BIGN256V1) + if (OPTION_SUPPORT_CURVE_BIGN384V1) + add_definitions(-DWITH_CURVE_BIGN384V1) + endif(OPTION_SUPPORT_CURVE_BIGN384V1) + if (OPTION_SUPPORT_CURVE_BIGN512V1) + add_definitions(-DWITH_CURVE_BIGN512V1) + endif(OPTION_SUPPORT_CURVE_BIGN512V1) + if (OPTION_SUPPORT_CURVE_BRAINPOOLP192R1) + add_definitions(-DWITH_CURVE_BRAINPOOLP192R1) + endif(OPTION_SUPPORT_CURVE_BRAINPOOLP192R1) + if (OPTION_SUPPORT_CURVE_BRAINPOOLP224R1) + add_definitions(-DWITH_CURVE_BRAINPOOLP224R1) + endif(OPTION_SUPPORT_CURVE_BRAINPOOLP224R1) + if (OPTION_SUPPORT_CURVE_BRAINPOOLP256R1) + add_definitions(-DWITH_CURVE_BRAINPOOLP256R1) + endif(OPTION_SUPPORT_CURVE_BRAINPOOLP256R1) + if (OPTION_SUPPORT_CURVE_BRAINPOOLP320R1) + add_definitions(-DWITH_CURVE_BRAINPOOLP320R1) + endif(OPTION_SUPPORT_CURVE_BRAINPOOLP320R1) + if (OPTION_SUPPORT_CURVE_BRAINPOOLP384R1) + add_definitions(-DWITH_CURVE_BRAINPOOLP384R1) + endif(OPTION_SUPPORT_CURVE_BRAINPOOLP384R1) + if (OPTION_SUPPORT_CURVE_BRAINPOOLP521R1) + add_definitions(-DWITH_CURVE_BRAINPOOLP521R1) + endif(OPTION_SUPPORT_CURVE_BRAINPOOLP521R1) + if (OPTION_SUPPORT_CURVE_BRAINPOOLP192T1) + add_definitions(-DWITH_CURVE_BRAINPOOLP192T1) + endif(OPTION_SUPPORT_CURVE_BRAINPOOLP192T1) + if (OPTION_SUPPORT_CURVE_BRAINPOOLP224T1) + add_definitions(-DWITH_CURVE_BRAINPOOLP224T1) + endif(OPTION_SUPPORT_CURVE_BRAINPOOLP224T1) + if (OPTION_SUPPORT_CURVE_BRAINPOOLP256T1) + add_definitions(-DWITH_CURVE_BRAINPOOLP256T1) + endif(OPTION_SUPPORT_CURVE_BRAINPOOLP256T1) + if (OPTION_SUPPORT_CURVE_BRAINPOOLP320T1) + add_definitions(-DWITH_CURVE_BRAINPOOLP320T1) + endif(OPTION_SUPPORT_CURVE_BRAINPOOLP320T1) + if (OPTION_SUPPORT_CURVE_BRAINPOOLP384T1) + add_definitions(-DWITH_CURVE_BRAINPOOLP384T1) + endif(OPTION_SUPPORT_CURVE_BRAINPOOLP384T1) + if (OPTION_SUPPORT_CURVE_BRAINPOOLP521T1) + add_definitions(-DWITH_CURVE_BRAINPOOLP521T1) + endif(OPTION_SUPPORT_CURVE_BRAINPOOLP521T1) + if (OPTION_SUPPORT_CURVE_FRP256V1) + add_definitions(-DWITH_CURVE_FRP256V1) + endif(OPTION_SUPPORT_CURVE_FRP256V1) + if (OPTION_SUPPORT_CURVE_GOST256) + add_definitions(-DWITH_CURVE_GOST256) + endif(OPTION_SUPPORT_CURVE_GOST256) + if (OPTION_SUPPORT_CURVE_GOST512) + add_definitions(-DWITH_CURVE_GOST512) + endif(OPTION_SUPPORT_CURVE_GOST512) + if (OPTION_SUPPORT_CURVE_SECP192K1) + add_definitions(-DWITH_CURVE_SECP192K1) + endif(OPTION_SUPPORT_CURVE_SECP192K1) + if (OPTION_SUPPORT_CURVE_SECP224K1) + add_definitions(-DWITH_CURVE_SECP224K1) + endif(OPTION_SUPPORT_CURVE_SECP224K1) + if (OPTION_SUPPORT_CURVE_SECP256K1) + add_definitions(-DWITH_CURVE_SECP256K1) + endif(OPTION_SUPPORT_CURVE_SECP256K1) + if (OPTION_SUPPORT_CURVE_SECP192R1) + add_definitions(-DWITH_CURVE_SECP192R1) + endif(OPTION_SUPPORT_CURVE_SECP192R1) + if (OPTION_SUPPORT_CURVE_SECP224R1) + add_definitions(-DWITH_CURVE_SECP224R1) + endif(OPTION_SUPPORT_CURVE_SECP224R1) + if (OPTION_SUPPORT_CURVE_SECP256R1) + add_definitions(-DWITH_CURVE_SECP256R1) + endif(OPTION_SUPPORT_CURVE_SECP256R1) + if (OPTION_SUPPORT_CURVE_SECP384R1) + add_definitions(-DWITH_CURVE_SECP384R1) + endif(OPTION_SUPPORT_CURVE_SECP384R1) + if (OPTION_SUPPORT_CURVE_SECP521R1) + add_definitions(-DWITH_CURVE_SECP521R1) + endif(OPTION_SUPPORT_CURVE_SECP521R1) + if (OPTION_SUPPORT_CURVE_SM2P256TEST) + add_definitions(-DWITH_CURVE_SM2P256TEST) + endif(OPTION_SUPPORT_CURVE_SM2P256TEST) + if (OPTION_SUPPORT_CURVE_SM2P256V1) + add_definitions(-DWITH_CURVE_SM2P256V1) + endif(OPTION_SUPPORT_CURVE_SM2P256V1) + if (OPTION_SUPPORT_CURVE_WEI25519) + add_definitions(-DWITH_CURVE_WEI25519) + endif(OPTION_SUPPORT_CURVE_WEI25519) + if (OPTION_SUPPORT_CURVE_WEI448) + add_definitions(-DWITH_CURVE_WEI448) + endif(OPTION_SUPPORT_CURVE_WEI448) + # Supported hash algorithms + if (OPTION_SUPPORT_HASH_SHA224) + add_definitions(-DWITH_HASH_SHA224) + endif(OPTION_SUPPORT_HASH_SHA224) + if (OPTION_SUPPORT_HASH_SHA256) + add_definitions(-DWITH_HASH_SHA256) + endif(OPTION_SUPPORT_HASH_SHA256) + if (OPTION_SUPPORT_HASH_SHA384) + add_definitions(-DWITH_HASH_SHA384) + endif(OPTION_SUPPORT_HASH_SHA384) + if (OPTION_SUPPORT_HASH_SHA512) + add_definitions(-DWITH_HASH_SHA512) + endif(OPTION_SUPPORT_HASH_SHA512) + if (OPTION_SUPPORT_HASH_SHA512_224) + add_definitions(-DWITH_HASH_SHA512_224) + endif(OPTION_SUPPORT_HASH_SHA512_224) + if (OPTION_SUPPORT_HASH_SHA512_256) + add_definitions(-DWITH_HASH_SHA512_256) + endif(OPTION_SUPPORT_HASH_SHA512_256) + if (OPTION_SUPPORT_HASH_SHA3_224) + add_definitions(-DWITH_HASH_SHA3_224) + endif(OPTION_SUPPORT_HASH_SHA3_224) + if (OPTION_SUPPORT_HASH_SHA3_256) + add_definitions(-DWITH_HASH_SHA3_256) + endif(OPTION_SUPPORT_HASH_SHA3_256) + if (OPTION_SUPPORT_HASH_SHA3_384) + add_definitions(-DWITH_HASH_SHA3_384) + endif(OPTION_SUPPORT_HASH_SHA3_384) + if (OPTION_SUPPORT_HASH_SHA3_512) + add_definitions(-DWITH_HASH_SHA3_512) + endif(OPTION_SUPPORT_HASH_SHA3_512) + if (OPTION_SUPPORT_HASH_SM3) + add_definitions(-DWITH_HASH_SM3) + endif(OPTION_SUPPORT_HASH_SM3) + if (OPTION_SUPPORT_HASH_SHAKE256) + add_definitions(-DWITH_HASH_SHAKE256) + endif(OPTION_SUPPORT_HASH_SHAKE256) + if (OPTION_SUPPORT_HASH_STREEBOG256) + add_definitions(-DWITH_HASH_STREEBOG256) + endif(OPTION_SUPPORT_HASH_STREEBOG256) + if (OPTION_SUPPORT_HASH_STREEBOG512) + add_definitions(-DWITH_HASH_STREEBOG512) + endif(OPTION_SUPPORT_HASH_STREEBOG512) + if (OPTION_SUPPORT_HASH_RIPEMD160) + add_definitions(-DWITH_HASH_RIPEMD160) + endif(OPTION_SUPPORT_HASH_RIPEMD160) + if (OPTION_SUPPORT_HASH_BELT_HASH) + add_definitions(-DWITH_HASH_BELT_HASH) + endif(OPTION_SUPPORT_HASH_BELT_HASH) + if (OPTION_SUPPORT_HASH_BASH224) + add_definitions(-DWITH_HASH_BASH224) + endif(OPTION_SUPPORT_HASH_BASH224) + if (OPTION_SUPPORT_HASH_BASH256) + add_definitions(-DWITH_HASH_BASH256) + endif(OPTION_SUPPORT_HASH_BASH256) + if (OPTION_SUPPORT_HASH_BASH384) + add_definitions(-DWITH_HASH_BASH384) + endif(OPTION_SUPPORT_HASH_BASH384) + if (OPTION_SUPPORT_HASH_BASH512) + add_definitions(-DWITH_HASH_BASH512) + endif(OPTION_SUPPORT_HASH_BASH512) + if (OPTION_SUPPORT_HASH_HMAC) + add_definitions(-DWITH_HMAC) + endif(OPTION_SUPPORT_HASH_HMAC) + # Supported sig/verif schemes + if (OPTION_SUPPORT_SIG_ECDSA) + add_definitions(-DWITH_SIG_ECDSA) + endif(OPTION_SUPPORT_SIG_ECDSA) + if (OPTION_SUPPORT_SIG_ECKCDSA) + add_definitions(-DWITH_SIG_ECKCDSA) + endif(OPTION_SUPPORT_SIG_ECKCDSA) + if (OPTION_SUPPORT_SIG_ECSDSA) + add_definitions(-DWITH_SIG_ECSDSA) + endif(OPTION_SUPPORT_SIG_ECSDSA) + if (OPTION_SUPPORT_SIG_ECOSDSA) + add_definitions(-DWITH_SIG_ECOSDSA) + endif(OPTION_SUPPORT_SIG_ECOSDSA) + if (OPTION_SUPPORT_SIG_ECFSDSA) + add_definitions(-DWITH_SIG_ECFSDSA) + endif(OPTION_SUPPORT_SIG_ECFSDSA) + if (OPTION_SUPPORT_SIG_ECGDSA) + add_definitions(-DWITH_SIG_ECGDSA) + endif(OPTION_SUPPORT_SIG_ECGDSA) + if (OPTION_SUPPORT_SIG_ECRDSA) + add_definitions(-DWITH_SIG_ECRDSA) + endif(OPTION_SUPPORT_SIG_ECRDSA) + if (OPTION_SUPPORT_SIG_SM2) + add_definitions(-DWITH_SIG_SM2) + endif(OPTION_SUPPORT_SIG_SM2) + if (OPTION_SUPPORT_SIG_EDDSA25519) + add_definitions(-DWITH_SIG_EDDSA25519) + endif(OPTION_SUPPORT_SIG_EDDSA25519) + if (OPTION_SUPPORT_SIG_EDDSA448) + add_definitions(-DWITH_SIG_EDDSA448) + endif(OPTION_SUPPORT_SIG_EDDSA448) + if (OPTION_SUPPORT_SIG_DECDSA) + add_definitions(-DWITH_SIG_DECDSA) + endif(OPTION_SUPPORT_SIG_DECDSA) + if (OPTION_SUPPORT_SIG_BIGN) + add_definitions(-DWITH_SIG_BIGN) + endif(OPTION_SUPPORT_SIG_BIGN) + if (OPTION_SUPPORT_SIG_DBIGN) + add_definitions(-DWITH_SIG_DBIGN) + endif(OPTION_SUPPORT_SIG_DBIGN) + if (OPTION_SUPPORT_SIG_BIP0340) + add_definitions(-DWITH_SIG_BIP0340) + endif(OPTION_SUPPORT_SIG_BIP0340) + # Supported ECDH schemes + if (OPTION_SUPPORT_ECDH_ECCCDH) + add_definitions(-DWITH_ECCCDH) + endif(OPTION_SUPPORT_ECDH_ECCCDH) + if (OPTION_SUPPORT_ECDH_X25519) + add_definitions(-DWITH_X25519) + endif(OPTION_SUPPORT_ECDH_X25519) + if (OPTION_SUPPORT_ECDH_X448) + add_definitions(-DWITH_X448) + endif(OPTION_SUPPORT_ECDH_X448) endif(OPTION_SPECIFY_CONFIG) if (NOT (PLATFORM_WORD_SIZE STREQUAL "16" OR PLATFORM_WORD_SIZE STREQUAL "32" OR PLATFORM_WORD_SIZE STREQUAL "64")) - set(PLATFORM_WORD_SIZE "32") + set(PLATFORM_WORD_SIZE "32") endif() add_definitions(-DWORDSIZE=${PLATFORM_WORD_SIZE}) if (PLATFORM_INCLUDE_STDLIB) - add_definitions(-DWITH_STDLIB) + add_definitions(-DWITH_STDLIB) endif() # Set platform variables if (CMAKE_SYSTEM_NAME STREQUAL "Windows") - add_definitions(-D__WIN32__) + add_definitions(-D__WIN32__) endif() # external dependencies -file(GLOB EXT_DEPS_SRC src/external_deps/*.c) +file(GLOB EXT_DEPS_SRC src/external_deps/*.c) # utils module (for the ARITH layer, we only need # NN and FP - and not curves - related stuff. Same goes # for EC and SIGN. Hence the distinction between three # sets of utils objects. -file(GLOB UTILS_ARITH_SRC src/utils/utils.c - src/utils/utils_rand.c - src/utils/*_nn.c - src/utils/*_fp.c - src/utils/*_buf.c) -file(GLOB UTILS_EC_SRC src/utils/*_curves.c) -file(GLOB UTILS_SIGN_SRC src/utils/*_keys.c) +file(GLOB UTILS_ARITH_SRC src/utils/utils.c + src/utils/utils_rand.c + src/utils/*_nn.c + src/utils/*_fp.c + src/utils/*_buf.c) +file(GLOB UTILS_EC_SRC src/utils/*_curves.c) +file(GLOB UTILS_SIGN_SRC src/utils/*_keys.c) # nn module -file(GLOB NN_SRC src/nn/n*.c) +file(GLOB NN_SRC src/nn/n*.c) # fp module -file(GLOB FP_SRC src/fp/fp*.c) +file(GLOB FP_SRC src/fp/fp*.c) # curve module -file(GLOB CURVES_SRC src/curves/*.c) +file(GLOB CURVES_SRC src/curves/*.c) # Hash module -file(GLOB HASH_SRC src/hash/sha*.c - src/hash/bash*.c - src/hash/hash_algs.c - src/hash/sm3.c - src/hash/streebog.c - src/hash/ripemd160.c - src/hash/belt-hash.c - src/hash/hmac.c) +file(GLOB HASH_SRC src/hash/sha*.c + src/hash/bash*.c + src/hash/hash_algs.c + src/hash/sm3.c + src/hash/streebog.c + src/hash/ripemd160.c + src/hash/belt-hash.c + src/hash/hmac.c) # Key/Signature/Verification/ECDH module -file(GLOB SIG_SRC src/sig/*dsa.c - src/sig/ecdsa_common.c - src/sig/ecsdsa_common.c - src/sig/sig_algs.c - src/sig/sm2.c - src/sig/bign_common.c - src/sig/bign.c - src/sig/dbign.c - src/sig/bip0340.c) -file(GLOB ECDH_SRC src/ecdh/*.c) -file(GLOB KEY_SRC src/sig/ec_key.c) +file(GLOB SIG_SRC src/sig/*dsa.c + src/sig/ecdsa_common.c + src/sig/ecsdsa_common.c + src/sig/sig_algs.c + src/sig/sm2.c + src/sig/bign_common.c + src/sig/bign.c + src/sig/dbign.c + src/sig/bip0340.c) +file(GLOB ECDH_SRC src/ecdh/*.c) +file(GLOB KEY_SRC src/sig/ec_key.c) # Test elements -file(GLOB TESTS_OBJECTS_CORE_SRC src/tests/ec_self_tests_core.c) -file(GLOB TESTS_OBJECTS_SELF_SRC src/tests/ec_self_tests.c) -file(GLOB TESTS_OBJECTS_UTILS_SRC src/tests/ec_utils.c) +file(GLOB TESTS_OBJECTS_CORE_SRC src/tests/ec_self_tests_core.c) +file(GLOB TESTS_OBJECTS_SELF_SRC src/tests/ec_self_tests.c) +file(GLOB TESTS_OBJECTS_UTILS_SRC src/tests/ec_utils.c) -set(LIBARITH_SRC ${FP_SRC} ${NN_SRC} ${UTILS_ARITH_SRC}) -set(LIBEC_SRC ${LIBARITH_SRC} ${CURVES_SRC} ${UTILS_EC_SRC}) -set(LIBSIGN_SRC ${LIBEC_SRC} ${HASH_SRC} ${SIG_SRC} ${KEY_SRC} ${UTILS_SIGN_SRC} ${SIG_SRC}) +set(LIBARITH_SRC ${FP_SRC} ${NN_SRC} ${UTILS_ARITH_SRC}) +set(LIBEC_SRC ${LIBARITH_SRC} ${CURVES_SRC} ${UTILS_EC_SRC}) +set(LIBSIGN_SRC ${LIBEC_SRC} ${HASH_SRC} ${SIG_SRC} ${KEY_SRC} ${UTILS_SIGN_SRC} ${ECDH_SRC}) -set(EC_SELF_TESTS_SRC ${TESTS_OBJECTS_CORE_SRC} ${TESTS_OBJECTS_SELF_SRC} ${EXT_DEPS_SRC}) -set(EC_UTILS_SRC ${TESTS_OBJECTS_CORE_SRC} ${TESTS_OBJECTS_UTILS_SRC} ${EXT_DEPS_SRC}) +set(EC_SELF_TESTS_SRC ${TESTS_OBJECTS_CORE_SRC} ${TESTS_OBJECTS_SELF_SRC} ${EXT_DEPS_SRC}) +set(EC_UTILS_SRC ${TESTS_OBJECTS_CORE_SRC} ${TESTS_OBJECTS_UTILS_SRC} ${EXT_DEPS_SRC}) # --- Static Libraries --- if (NOT BUILD_SHARED_LIBS) - add_library(arith STATIC ${LIBARITH_SRC}) - add_library(ec STATIC ${LIBEC_SRC}) - add_library(sign STATIC ${LIBSIGN_SRC}) + add_library(arith STATIC ${LIBARITH_SRC}) + add_library(ec STATIC ${LIBEC_SRC}) + add_library(sign STATIC ${LIBSIGN_SRC}) endif(NOT BUILD_SHARED_LIBS) # --- Dynamic Libraries --- if (BUILD_SHARED_LIBS) - add_library(arith_dyn SHARED ${LIBARITH_SRC}) - add_library(ec_dyn SHARED ${LIBEC_SRC}) - add_library(sign_dyn SHARED ${LIBSIGN_SRC}) + add_library(arith_dyn SHARED ${LIBARITH_SRC}) + add_library(ec_dyn SHARED ${LIBEC_SRC}) + add_library(sign_dyn SHARED ${LIBSIGN_SRC}) endif(BUILD_SHARED_LIBS) # --- Executables (Static linkage with libsign object files) --- if (NOT BUILD_SHARED_LIBS) - if (OPTION_BUILD_SELF_TEST) - add_executable(ec_self_tests ${EC_SELF_TESTS_SRC}) - target_link_libraries(ec_self_tests sign) - endif (OPTION_BUILD_SELF_TEST) - if (OPTION_BUILD_UTILITY) - add_executable(ec_utils ${EC_UTILS_SRC}) - target_link_libraries(ec_utils sign) - endif (OPTION_BUILD_UTILITY) + if (OPTION_BUILD_SELF_TEST) + add_executable(ec_self_tests ${EC_SELF_TESTS_SRC}) + target_link_libraries(ec_self_tests sign) + endif (OPTION_BUILD_SELF_TEST) + if (OPTION_BUILD_UTILITY) + add_executable(ec_utils ${EC_UTILS_SRC}) + target_link_libraries(ec_utils sign) + endif (OPTION_BUILD_UTILITY) endif(NOT BUILD_SHARED_LIBS) # --- Excutables (Dynamic linkage with libsign shared library) --- if (BUILD_SHARED_LIBS) - if (OPTION_BUILD_SELF_TEST) - add_executable(ec_self_tests_dyn ${EC_SELF_TESTS_SRC}) - target_link_libraries(ec_self_tests_dyn sign_dyn) - endif (OPTION_BUILD_SELF_TEST) - if (OPTION_BUILD_UTILITY) - add_executable(ec_utils_dyn ${EC_UTILS_SRC}) - target_link_libraries(ec_utils_dyn sign_dyn) - endif (OPTION_BUILD_UTILITY) + if (OPTION_BUILD_SELF_TEST) + add_executable(ec_self_tests_dyn ${EC_SELF_TESTS_SRC}) + target_link_libraries(ec_self_tests_dyn sign_dyn) + endif (OPTION_BUILD_SELF_TEST) + if (OPTION_BUILD_UTILITY) + add_executable(ec_utils_dyn ${EC_UTILS_SRC}) + target_link_libraries(ec_utils_dyn sign_dyn) + endif (OPTION_BUILD_UTILITY) endif(BUILD_SHARED_LIBS) # All source files, used to construct general rules set(SRC ${EXT_DEPS_SRC} ${UTILS_ARITH_SRC} ${UTILS_EC_SRC} ${UTILS_SIGN_SRC} - ${NN_SRC} ${FP_SRC} ${CURVES_SRC} ${HASH_SRC} ${SIG_SRC} ${ECDH_SRC} - ${KEY_SRC} ${TESTS_OBJECTS_CORE_SRC} ${TESTS_OBJECTS_SELF_SRC} - ${TESTS_OBJECTS_UTILS_SRC}) + ${NN_SRC} ${FP_SRC} ${CURVES_SRC} ${HASH_SRC} ${SIG_SRC} ${ECDH_SRC} + ${KEY_SRC} ${TESTS_OBJECTS_CORE_SRC} ${TESTS_OBJECTS_SELF_SRC} + ${TESTS_OBJECTS_UTILS_SRC}) From f749eedebc5c224902379dad71742c85693ae44f Mon Sep 17 00:00:00 2001 From: JaLooooNz Date: Fri, 14 Jun 2024 23:34:17 +0800 Subject: [PATCH 3/3] -Remove PLATFORM_WORD_SIZE configuration -Add detection for CMAKE_GENERATOR and CMAKE_CL_64 (working for x86 and x86_64 windows builds using Visual Studio) --- CMakeLists.txt | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2e742735..d6c92dba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,6 @@ project(libecc) include_directories(include) # Define options -option(PLATFORM_WORD_SIZE "Platform word size (16, 32 or 64)" "32") option(PLATFORM_INCLUDE_STDLIB "Platform provides STDLIB" ON) option(OPTION_SPECIFY_CONFIG "Customise libecc configuration" ON) option(OPTION_BUILD_SELF_TEST "Build libecc ec-self-tests" ON) @@ -292,11 +291,16 @@ if (OPTION_SPECIFY_CONFIG) add_definitions(-DWITH_X448) endif(OPTION_SUPPORT_ECDH_X448) endif(OPTION_SPECIFY_CONFIG) +include(CheckCXXSourceCompiles) -if (NOT (PLATFORM_WORD_SIZE STREQUAL "16" OR PLATFORM_WORD_SIZE STREQUAL "32" OR PLATFORM_WORD_SIZE STREQUAL "64")) - set(PLATFORM_WORD_SIZE "32") +if (CMAKE_GENERATOR MATCHES "Visual Studio") + if(CMAKE_CL_64) + add_definitions(-D__x86_64__) + else() + add_definitions(-D__i386__) + endif() endif() -add_definitions(-DWORDSIZE=${PLATFORM_WORD_SIZE}) + if (PLATFORM_INCLUDE_STDLIB) add_definitions(-DWITH_STDLIB) endif()