Skip to content

Commit 6cd1d7f

Browse files
committed
Fix building ML-KEM and LMS with cmake
1 parent 3ff4e5e commit 6cd1d7f

2 files changed

Lines changed: 51 additions & 25 deletions

File tree

CMakeLists.txt

Lines changed: 46 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -573,10 +573,15 @@ add_option(WOLFSSL_OQS
573573
"no" "yes;no")
574574

575575
# ML-KEM/Kyber
576-
add_option(WOLFSSL_MMLKEM
576+
add_option(WOLFSSL_MLKEM
577577
"Enable the wolfSSL PQ ML-KEM library (default: disabled)"
578578
"no" "yes;no")
579579

580+
# LMS
581+
add_option(WOLFSSL_LMS
582+
"Enable the PQ LMS Stateful Hash-based Signature Scheme (default: disabled)"
583+
"no" "yes;no")
584+
580585
# Experimental features
581586
add_option(WOLFSSL_EXPERIMENTAL
582587
"Enable experimental features (default: disabled)"
@@ -590,7 +595,7 @@ if (WOLFSSL_EXPERIMENTAL)
590595
# check if any experimental features are also enabled:
591596
set(WOLFSSL_FOUND_EXPERIMENTAL_FEATURE 0)
592597

593-
set_wolfssl_definitions("WOLFSSL_EXPERIMENTAL_SETTINGS" RESUlT)
598+
set_wolfssl_definitions("WOLFSSL_EXPERIMENTAL_SETTINGS" RESULT)
594599

595600
# Checking for experimental feature: OQS
596601
message(STATUS "Looking for WOLFSSL_OQS")
@@ -605,9 +610,9 @@ if (WOLFSSL_EXPERIMENTAL)
605610
list(APPEND WOLFSSL_LINK_LIBS ${OQS_LIBRARY})
606611
list(APPEND WOLFSSL_INCLUDE_DIRS ${OQS_INCLUDE_DIR})
607612

608-
set_wolfssl_definitions("HAVE_LIBOQS" RESUlT)
609-
set_wolfssl_definitions("HAVE_TLS_EXTENSIONS" RESUlT)
610-
set_wolfssl_definitions("OPENSSL_EXTRA" RESUlT)
613+
set_wolfssl_definitions("HAVE_LIBOQS" RESULT)
614+
set_wolfssl_definitions("HAVE_TLS_EXTENSIONS" RESULT)
615+
set_wolfssl_definitions("OPENSSL_EXTRA" RESULT)
611616

612617
else()
613618
message(STATUS "Checking OQS - not found")
@@ -617,20 +622,41 @@ if (WOLFSSL_EXPERIMENTAL)
617622
message(STATUS "Looking for WOLFSSL_OQS - not found")
618623
endif()
619624

620-
# Checking for experimental feature: Kyber
621-
message(STATUS "Looking for WOLFSSL_KYBER")
622-
if (WOLFSSL_KYBER)
625+
# Checking for experimental feature: WOLFSSL_MLKEM
626+
message(STATUS "Looking for WOLFSSL_MLKEM")
627+
if (WOLFSSL_MLKEM)
623628
set(WOLFSSL_FOUND_EXPERIMENTAL_FEATURE 1)
624629

625-
message(STATUS "Automatically set related requirements for Kyber:")
626-
set_wolfssl_definitions("WOLFSSL_HAVE_MLKEM" RESUlT)
627-
set_wolfssl_definitions("WOLFSSL_WC_MLKEM" RESUlT)
628-
set_wolfssl_definitions("WOLFSSL_SHA3" RESUlT)
629-
set_wolfssl_definitions("WOLFSSL_SHAKE128" RESUlT)
630-
set_wolfssl_definitions("WOLFSSL_SHAKE256" RESUlT)
631-
message(STATUS "Looking for WOLFSSL_KYBER - found")
630+
message(STATUS "Automatically set related requirements for ML-KEM:")
631+
add_definitions("-DWOLFSSL_HAVE_MLKEM")
632+
add_definitions("-DWOLFSSL_WC_MLKEM")
633+
add_definitions("-DWOLFSSL_SHA3")
634+
add_definitions("-DWOLFSSL_SHAKE128")
635+
add_definitions("-DWOLFSSL_SHAKE256")
636+
637+
set_wolfssl_definitions("WOLFSSL_HAVE_MLKEM" RESULT)
638+
set_wolfssl_definitions("WOLFSSL_WC_MLKEM" RESULT)
639+
set_wolfssl_definitions("WOLFSSL_SHA3" RESULT)
640+
set_wolfssl_definitions("WOLFSSL_SHAKE128" RESULT)
641+
set_wolfssl_definitions("WOLFSSL_SHAKE256" RESULT)
642+
message(STATUS "Looking for WOLFSSL_MLKEM - found")
643+
else()
644+
message(STATUS "Looking for WOLFSSL_MLKEM - not found")
645+
endif()
646+
647+
# Checking for experimental feature: WOLFSSL_LMS
648+
message(STATUS "Looking for WOLFSSL_LMS")
649+
if (WOLFSSL_LMS)
650+
set(WOLFSSL_FOUND_EXPERIMENTAL_FEATURE 2)
651+
652+
message(STATUS "Automatically set related requirements for LMS")
653+
add_definitions("-DWOLFSSL_HAVE_LMS")
654+
add_definitions("-DWOLFSSL_WC_LMS")
655+
set_wolfssl_definitions("WOLFSSL_HAVE_LMS" RESULT)
656+
set_wolfssl_definitions("WOLFSSL_WC_LMS" RESULT)
657+
message(STATUS "Looking for WOLFSSL_LMS - found")
632658
else()
633-
message(STATUS "Looking for WOLFSSL_KYBER - not found")
659+
message(STATUS "Looking for WOLFSSL_LMS - not found")
634660
endif()
635661

636662
# Other experimental feature detection can be added here...
@@ -643,8 +669,8 @@ if (WOLFSSL_EXPERIMENTAL)
643669
endif()
644670

645671
# Sanity checks
646-
if(WOLFSSL_OQS AND WOLFSSL_KYBER)
647-
message(FATAL_ERROR "Error: cannot enable both WOLFSSL_OQS and WOLFSSL_KYBER at the same time.")
672+
if(WOLFSSL_OQS AND WOLFSSL_MLKEM)
673+
message(FATAL_ERROR "Error: cannot enable both WOLFSSL_OQS and WOLFSSL_MLKEM at the same time.")
648674
endif()
649675

650676
else()
@@ -653,8 +679,8 @@ else()
653679
if (WOLFSSL_OQS)
654680
message(FATAL_ERROR "Error: WOLFSSL_OQS requires WOLFSSL_EXPERIMENTAL at this time.")
655681
endif()
656-
if(WOLFSSL_KYBER)
657-
message(FATAL_ERROR "Error: WOLFSSL_KYBER requires WOLFSSL_EXPERIMENTAL at this time.")
682+
if(WOLFSSL_MLKEM)
683+
message(FATAL_ERROR "Error: WOLFSSL_MLKEM requires WOLFSSL_EXPERIMENTAL at this time.")
658684
endif()
659685
endif()
660686

cmake/functions.cmake

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -198,14 +198,14 @@ function(generate_build_flags)
198198
if(WOLFSSL_XCHACHA OR WOLFSSL_USER_SETTINGS)
199199
set(BUILD_XCHACHA "yes" PARENT_SCOPE)
200200
endif()
201-
if(WOLFSSL_KYBER OR WOLFSSL_USER_SETTINGS)
202-
set(BUILD_WC_KYBER "yes" PARENT_SCOPE)
201+
if(WOLFSSL_MLKEM OR WOLFSSL_USER_SETTINGS)
202+
set(BUILD_WC_MLKEM "yes" PARENT_SCOPE)
203203
endif()
204204
if(WOLFSSL_OQS OR WOLFSSL_USER_SETTINGS)
205205
set(BUILD_FALCON "yes" PARENT_SCOPE)
206206
set(BUILD_SPHINCS "yes" PARENT_SCOPE)
207207
set(BUILD_DILITHIUM "yes" PARENT_SCOPE)
208-
set(BUILD_EXT_KYBER "yes" PARENT_SCOPE)
208+
set(BUILD_EXT_MLKEM "yes" PARENT_SCOPE)
209209
set(BUILD_OQS_HELPER "yes" PARENT_SCOPE)
210210
endif()
211211
if(WOLFSSL_LMS OR WOLFSSL_USER_SETTINGS)
@@ -811,7 +811,7 @@ function(generate_lib_src_list LIB_SOURCES)
811811
list(APPEND LIB_SOURCES wolfcrypt/src/dilithium.c)
812812
endif()
813813

814-
if(BUILD_WC_KYBER)
814+
if(BUILD_WC_MLKEM)
815815
list(APPEND LIB_SOURCES wolfcrypt/src/wc_mlkem.c)
816816
list(APPEND LIB_SOURCES wolfcrypt/src/wc_mlkem_poly.c)
817817

@@ -820,7 +820,7 @@ function(generate_lib_src_list LIB_SOURCES)
820820
endif()
821821
endif()
822822

823-
if(BUILD_EXT_KYBER)
823+
if(BUILD_EXT_MLKEM)
824824
list(APPEND LIB_SOURCES wolfcrypt/src/ext_mlkem.c)
825825
endif()
826826

0 commit comments

Comments
 (0)