Skip to content

Commit

Permalink
WolfSSL Kyber and CMake fixes
Browse files Browse the repository at this point in the history
* Make sure wc_kyber implementation is compiled using CMake (also for
  Zephyr)
* Fix compilation issue when Liboqs is also enabled
* Fix WOLFSSL_INTEL_ASM and WOLFSSL_ARM_ASM CMake options

Signed-off-by: Tobias Frauenschläger
<[email protected]>
  • Loading branch information
Frauschi committed Jul 24, 2024
1 parent a9ff773 commit e2b642d
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 4 deletions.
16 changes: 14 additions & 2 deletions cmake/functions.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,10 @@ function(generate_build_flags)
if(WOLFSSL_AESCCM OR WOLFSSL_USER_SETTINGS)
set(BUILD_AESCCM "yes" PARENT_SCOPE)
endif()
set(BUILD_ARM_ASM ${WOLFSSL_ARM_ASM} PARENT_SCOPE)
set(BUILD_ARMASM ${WOLFSSL_ARM_ASM} PARENT_SCOPE)
set(BUILD_XILINX ${WOLFSSL_XILINX} PARENT_SCOPE)
set(BUILD_AESNI ${WOLFSSL_AESNI} PARENT_SCOPE)
set(BUILD_INTEL_ASM ${WOLFSSL_INTEL_ASM} PARENT_SCOPE)
set(BUILD_INTELASM ${WOLFSSL_INTEL_ASM} PARENT_SCOPE)
set(BUILD_AFALG ${WOLFSSL_AFALG} PARENT_SCOPE)
set(BUILD_DEVCRYPTO ${WOLFSSL_DEVCRYPTO} PARENT_SCOPE)
if(WOLFSSL_CAMELLIA OR WOLFSSL_USER_SETTINGS)
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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_INTELASM)
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()
Expand Down
4 changes: 2 additions & 2 deletions wolfcrypt/src/ext_kyber.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
#include <wolfssl/wolfcrypt/error-crypt.h>
#include <wolfssl/wolfcrypt/logging.h>

#ifdef WOLFSSL_HAVE_KYBER
#if defined(WOLFSSL_HAVE_KYBER) && !defined(WOLFSSL_WC_KYBER)
#include <wolfssl/wolfcrypt/ext_kyber.h>

#ifdef NO_INLINE
Expand Down Expand Up @@ -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 */
2 changes: 2 additions & 0 deletions zephyr/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit e2b642d

Please sign in to comment.