From f89e2294892012c78828fe566557902e8c42a090 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Frauenschl=C3=A4ger?= Date: Mon, 22 Jul 2024 10:46:48 +0200 Subject: [PATCH] WolfSSL Kyber fixes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Make sure wc_kyber implementation is compiled using CMake (also for Zephyr) * Fix compilation issue when Liboqs is also enabled Signed-off-by: Tobias Frauenschläger --- cmake/functions.cmake | 12 ++++++++++++ wolfcrypt/src/ext_kyber.c | 4 ++-- zephyr/CMakeLists.txt | 2 ++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/cmake/functions.cmake b/cmake/functions.cmake index ebba36948b..c32807b92b 100644 --- a/cmake/functions.cmake +++ b/cmake/functions.cmake @@ -198,6 +198,9 @@ function(generate_build_flags) if(WOLFSSL_XCHACHA OR WOLFSSL_USER_SETTINGS) set(BUILD_XCHACHA "yes" PARENT_SCOPE) endif() + if(WOLFSSL_KYBER OR WOLFSSL_USER_SETTINGS) + set(BUILD_WC_KYBER "yes" PARENT_SCOPE) + endif() if(WOLFSSL_OQS OR WOLFSSL_USER_SETTINGS) set(BUILD_FALCON "yes" PARENT_SCOPE) set(BUILD_SPHINCS "yes" PARENT_SCOPE) @@ -794,6 +797,15 @@ function(generate_lib_src_list LIB_SOURCES) list(APPEND LIB_SOURCES wolfcrypt/src/dilithium.c) endif() + if(BUILD_WC_KYBER) + list(APPEND LIB_SOURCES wolfcrypt/src/wc_kyber.c) + list(APPEND LIB_SOURCES wolfcrypt/src/wc_kyber_poly.c) + + if(BUILD_INTEL_ASM) + list(APPEND LIB_SOURCES wolfcrypt/src/wc_kyber_asm.S) + endif() + endif() + if(BUILD_EXT_KYBER) list(APPEND LIB_SOURCES wolfcrypt/src/ext_kyber.c) endif() diff --git a/wolfcrypt/src/ext_kyber.c b/wolfcrypt/src/ext_kyber.c index 30d2260b99..4f1a754df7 100644 --- a/wolfcrypt/src/ext_kyber.c +++ b/wolfcrypt/src/ext_kyber.c @@ -27,7 +27,7 @@ #include #include -#ifdef WOLFSSL_HAVE_KYBER +#if defined(WOLFSSL_HAVE_KYBER) && !defined(WOLFSSL_WC_KYBER) #include #ifdef NO_INLINE @@ -750,4 +750,4 @@ int wc_KyberKey_EncodePublicKey(KyberKey* key, unsigned char* out, word32 len) return ret; } -#endif /* WOLFSSL_HAVE_KYBER */ +#endif /* WOLFSSL_HAVE_KYBER && !WOLFSSL_WC_KYBER */ diff --git a/zephyr/CMakeLists.txt b/zephyr/CMakeLists.txt index ed5900aaec..905f6cf113 100644 --- a/zephyr/CMakeLists.txt +++ b/zephyr/CMakeLists.txt @@ -117,6 +117,8 @@ if(CONFIG_WOLFSSL) zephyr_library_sources(${ZEPHYR_CURRENT_MODULE_DIR}/wolfcrypt/src/tfm.c) zephyr_library_sources(${ZEPHYR_CURRENT_MODULE_DIR}/wolfcrypt/src/wc_dsp.c) zephyr_library_sources(${ZEPHYR_CURRENT_MODULE_DIR}/wolfcrypt/src/wc_encrypt.c) + zephyr_library_sources(${ZEPHYR_CURRENT_MODULE_DIR}/wolfcrypt/src/wc_kyber.c) + zephyr_library_sources(${ZEPHYR_CURRENT_MODULE_DIR}/wolfcrypt/src/wc_kyber_poly.c) zephyr_library_sources(${ZEPHYR_CURRENT_MODULE_DIR}/wolfcrypt/src/wc_pkcs11.c) zephyr_library_sources(${ZEPHYR_CURRENT_MODULE_DIR}/wolfcrypt/src/wc_port.c) zephyr_library_sources(${ZEPHYR_CURRENT_MODULE_DIR}/wolfcrypt/src/wolfevent.c)