mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-29 18:27:29 +02:00
Merge pull request #3778 from haydenroche5/cmake_curve_ed
Add CMake support for CURVE25519, ED25519, CURVE448, and ED448.
This commit is contained in:
157
CMakeLists.txt
157
CMakeLists.txt
@ -331,6 +331,36 @@ endif()
|
||||
# - RIPEMD
|
||||
# - BLAKE2
|
||||
|
||||
|
||||
# SHA224
|
||||
set(SHA224_DEFAULT "no")
|
||||
if(("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64") OR
|
||||
("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "aarch64"))
|
||||
if(NOT WOLFSSL_AFALG AND NOT WOLFSSL_DEVCRYPTO AND
|
||||
(NOT WOLFSSL_FIPS OR ("${FIPS_VERSION}" STREQUAL "v2")))
|
||||
set(SHA224_DEFAULT "yes")
|
||||
endif()
|
||||
endif()
|
||||
set(WOLFSSL_SHA224_HELP_STRING "Enable wolfSSL SHA-224 support (default: enabled on x86_64/aarch64)")
|
||||
option(WOLFSSL_SHA224 ${WOLFSSL_SHA224_HELP_STRING} ${SHA224_DEFAULT})
|
||||
|
||||
# SHA3
|
||||
set(SHA3_DEFAULT "no")
|
||||
if(("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64") OR
|
||||
("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "aarch64"))
|
||||
if(NOT WOLFSSL_FIPS OR ("${FIPS_VERSION}" STREQUAL "v2"))
|
||||
set(SHA3_DEFAULT "yes")
|
||||
endif()
|
||||
endif()
|
||||
set(WOLFSSL_SHA3_HELP_STRING "Enable wolfSSL SHA-3 support (default: enabled on x86_64/aarch64)")
|
||||
set(WOLFSSL_SHA3 ${SHA3_DEFAULT} CACHE STRING ${WOLFSSL_SHA3_HELP_STRING})
|
||||
set_property(CACHE WOLFSSL_SHA3 PROPERTY STRINGS "yes" "no" "small")
|
||||
|
||||
# SHAKE256
|
||||
set(WOLFSSL_SHAKE256_HELP_STRING "Enable wolfSSL SHAKE256 support (default: enabled on x86_64/aarch64)")
|
||||
set(WOLFSSL_SHAKE256 "no" CACHE STRING ${WOLFSSL_SHAKE256_HELP_STRING})
|
||||
set_property(CACHE WOLFSSL_SHAKE256 PROPERTY STRINGS "yes" "no" "small")
|
||||
|
||||
# SHA512
|
||||
set(WOLFSSL_SHA512_HELP_STRING "Enable wolfSSL SHA-512 support (default: enabled)")
|
||||
option(WOLFSSL_SHA512 ${WOLFSSL_SHA512_HELP_STRING} "yes")
|
||||
@ -441,15 +471,106 @@ endif()
|
||||
|
||||
# TODO: - ECC custom curves
|
||||
# - Compressed key
|
||||
# - CURVE25519
|
||||
# - ED25519
|
||||
# - CURVE448
|
||||
# - ED448
|
||||
# - FP ECC, fixed point cache ECC
|
||||
# - ECC encrypt
|
||||
# - PSK
|
||||
# - Single PSK identity
|
||||
|
||||
# CURVE25519
|
||||
set(WOLFSSL_CURVE25519_SMALL "no")
|
||||
set(WOLFSSL_CURVE25519_HELP_STRING "Enable Curve25519 (default: disabled)")
|
||||
set(WOLFSSL_CURVE25519 "no" CACHE STRING ${WOLFSSL_CURVE25519_HELP_STRING})
|
||||
set_property(CACHE WOLFSSL_CURVE25519 PROPERTY STRINGS "yes" "no" "small" "no128bit")
|
||||
|
||||
if(WOLFSSL_OPENSSH)
|
||||
override_cache(WOLFSSL_CURVE25519 "yes")
|
||||
endif()
|
||||
|
||||
if(WOLFSSL_CURVE25519)
|
||||
if("${WOLFSSL_CURVE25519}" STREQUAL "small" OR WOLFSSL_LOW_RESOURCE)
|
||||
list(APPEND WOLFSSL_DEFINITIONS "-DCURVE25519_SMALL")
|
||||
set(WOLFSSL_CURVE25519_SMALL "yes")
|
||||
endif()
|
||||
|
||||
if("${WOLFSSL_CURVE25519}" STREQUAL "no128bit" OR WOLFSSL_32BIT)
|
||||
list(APPEND WOLFSSL_DEFINITIONS "-DNO_CURVED25519_128BIT")
|
||||
endif()
|
||||
|
||||
list(APPEND WOLFSSL_DEFINITIONS "-DHAVE_CURVE25519")
|
||||
set(WOLFSSL_FEMATH "yes")
|
||||
endif()
|
||||
|
||||
# ED25519
|
||||
set(WOLFSSL_ED25519_SMALL "no")
|
||||
set(WOLFSSL_ED25519_HELP_STRING "Enable ED25519 (default: disabled)")
|
||||
set(WOLFSSL_ED25519 "no" CACHE STRING ${WOLFSSL_ED25519_HELP_STRING})
|
||||
set_property(CACHE WOLFSSL_ED25519 PROPERTY STRINGS "yes" "no" "small")
|
||||
|
||||
if(WOLFSSL_OPENSSH)
|
||||
override_cache(WOLFSSL_ED25519 "yes")
|
||||
endif()
|
||||
|
||||
if(WOLFSSL_ED25519 AND NOT WOLFSSL_32BIT)
|
||||
if("${WOLFSSL_ED25519}" STREQUAL "small" OR WOLFSSL_LOW_RESOURCE)
|
||||
list(APPEND WOLFSSL_DEFINITIONS "-DED25519_SMALL")
|
||||
set(WOLFSSL_ED25519_SMALL "yes")
|
||||
set(WOLFSSL_CURVE25519_SMALL "yes")
|
||||
endif()
|
||||
|
||||
if(NOT WOLFSSL_SHA512)
|
||||
message(FATAL_ERROR "cannot enable ed25519 without enabling sha512.")
|
||||
endif()
|
||||
|
||||
set(WOLFSSL_FEMATH "yes")
|
||||
set(WOLFSSL_GEMATH "yes")
|
||||
list(APPEND WOLFSSL_DEFINITIONS "-DHAVE_ED25519")
|
||||
endif()
|
||||
|
||||
# CURVE448
|
||||
set(WOLFSSL_CURVE448_SMALL "no")
|
||||
set(WOLFSSL_CURVE448_HELP_STRING "Enable Curve448 (default: disabled)")
|
||||
set(WOLFSSL_CURVE448 "no" CACHE STRING ${WOLFSSL_CURVE448_HELP_STRING})
|
||||
set_property(CACHE WOLFSSL_CURVE448 PROPERTY STRINGS "yes" "no" "small")
|
||||
|
||||
if(WOLFSSL_CURVE448)
|
||||
if("${WOLFSSL_CURVE448}" STREQUAL "small" OR WOLFSSL_LOW_RESOURCE)
|
||||
list(APPEND WOLFSSL_DEFINITIONS "-DCURVE448_SMALL")
|
||||
set(WOLFSSL_CURVE448_SMALL "yes")
|
||||
endif()
|
||||
|
||||
if("${WOLFSSL_CURVE448}" STREQUAL "no128bit" OR WOLFSSL_32BIT)
|
||||
list(APPEND WOLFSSL_DEFINITIONS "-DNO_CURVED448_128BIT")
|
||||
endif()
|
||||
|
||||
list(APPEND WOLFSSL_DEFINITIONS "-DHAVE_CURVE448")
|
||||
set(WOLFSSL_FE448 "yes")
|
||||
endif()
|
||||
|
||||
# ED448
|
||||
set(WOLFSSL_ED448_SMALL "no")
|
||||
set(WOLFSSL_ED448_HELP_STRING "Enable ED448 (default: disabled)")
|
||||
set(WOLFSSL_ED448 "no" CACHE STRING ${WOLFSSL_ED448_HELP_STRING})
|
||||
set_property(CACHE WOLFSSL_ED448 PROPERTY STRINGS "yes" "no" "small")
|
||||
|
||||
if(WOLFSSL_ED448 AND NOT WOLFSSL_32BIT)
|
||||
if("${WOLFSSL_ED448}" STREQUAL "small" OR WOLFSSL_LOW_RESOURCE)
|
||||
list(APPEND WOLFSSL_DEFINITIONS "-DED448_SMALL")
|
||||
set(WOLFSSL_ED448_SMALL "yes")
|
||||
set(WOLFSSL_CURVE448_SMALL "yes")
|
||||
endif()
|
||||
|
||||
if(NOT WOLFSSL_SHA512)
|
||||
message(FATAL_ERROR "cannot enable ed448 without enabling sha512.")
|
||||
endif()
|
||||
|
||||
set(WOLFSSL_FE448 "yes")
|
||||
set(WOLFSSL_GE448 "yes")
|
||||
list(APPEND WOLFSSL_DEFINITIONS "-DHAVE_ED448")
|
||||
|
||||
# EdDSA448 requires SHAKE256 which requires SHA-3
|
||||
override_cache(WOLFSSL_SHAKE256 "yes")
|
||||
endif()
|
||||
|
||||
# Error strings
|
||||
set(WOLFSSL_ERROR_STRINGS_HELP_STRING "Enable error strings table (default: enabled)")
|
||||
option(WOLFSSL_ERROR_STRINGS ${WOLFSSL_ERROR_STRINGS_HELP_STRING} "yes")
|
||||
@ -768,35 +889,11 @@ endif()
|
||||
# - Selftest
|
||||
|
||||
# SHA224
|
||||
set(SHA224_DEFAULT "no")
|
||||
if(("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64") OR
|
||||
("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "aarch64"))
|
||||
if(NOT WOLFSSL_AFALG AND NOT WOLFSSL_DEVCRYPTO AND
|
||||
(NOT WOLFSSL_FIPS OR ("${FIPS_VERSION}" STREQUAL "v2")))
|
||||
set(SHA224_DEFAULT "yes")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(WOLFSSL_SHA224_HELP_STRING "Enable wolfSSL SHA-224 support (default: enabled on x86_64/aarch64)")
|
||||
option(WOLFSSL_SHA224 ${WOLFSSL_SHA224_HELP_STRING} ${SHA224_DEFAULT})
|
||||
|
||||
if(WOLFSSL_SHA224)
|
||||
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_SHA224")
|
||||
endif()
|
||||
|
||||
# SHA3
|
||||
set(SHA3_DEFAULT "no")
|
||||
if(("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64") OR
|
||||
("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "aarch64"))
|
||||
if(NOT WOLFSSL_FIPS OR ("${FIPS_VERSION}" STREQUAL "v2"))
|
||||
set(SHA3_DEFAULT "yes")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(WOLFSSL_SHA3_HELP_STRING "Enable wolfSSL SHA-3 support (default: enabled on x86_64/aarch64)")
|
||||
set(WOLFSSL_SHA3 ${SHA3_DEFAULT} CACHE STRING ${WOLFSSL_SHA3_HELP_STRING})
|
||||
set_property(CACHE WOLFSSL_SHA3 PROPERTY STRINGS "yes" "no" "small")
|
||||
|
||||
if("${WOLFSSL_SHA3}" STREQUAL "small")
|
||||
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_SHA3_SMALL")
|
||||
override_cache(WOLFSSL_SHA3 "yes")
|
||||
@ -807,10 +904,6 @@ if(WOLFSSL_SHA3 AND NOT WOLFSSL_32BIT)
|
||||
endif()
|
||||
|
||||
# SHAKE256
|
||||
set(WOLFSSL_SHAKE256_HELP_STRING "Enable wolfSSL SHAKE256 support (default: enabled on x86_64/aarch64)")
|
||||
set(WOLFSSL_SHAKE256 "no" CACHE STRING ${WOLFSSL_SHAKE256_HELP_STRING})
|
||||
set_property(CACHE WOLFSSL_SHAKE256 PROPERTY STRINGS "yes" "no" "small")
|
||||
|
||||
if(NOT WOLFSSL_SHAKE256)
|
||||
override_cache(WOLFSSL_SHAKE256 ${WOLFSSL_SHA3})
|
||||
endif()
|
||||
|
Reference in New Issue
Block a user