Skip to content

Commit 73eb8f9

Browse files
Merge pull request wolfSSL#9967 from Frauschi/pqc_cmake
Move PQC algos out of experimental in CMake
2 parents 156db7d + da94ea6 commit 73eb8f9

File tree

2 files changed

+45
-78
lines changed

2 files changed

+45
-78
lines changed

.github/workflows/cmake.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ jobs:
6969
-DWOLFSSL_TICKET_NONCE_MALLOC:BOOL=yes -DWOLFSSL_TLS13:BOOL=yes -DWOLFSSL_TLSV12:BOOL=yes \
7070
-DWOLFSSL_TLSX:BOOL=yes -DWOLFSSL_TPM:BOOL=yes -DWOLFSSL_CLU:BOOL=yes -DWOLFSSL_USER_SETTINGS:BOOL=no \
7171
-DWOLFSSL_USER_SETTINGS_ASM:BOOL=no -DWOLFSSL_WOLFSSH:BOOL=ON -DWOLFSSL_X86_64_BUILD_ASM:BOOL=yes \
72-
-DWOLFSSL_MLKEM=1 -DWOLFSSL_LMS=1 -DWOLFSSL_LMSSHA256192=1 -DWOLFSSL_EXPERIMENTAL=1 \
72+
-DWOLFSSL_MLKEM:BOOL=yes -DWOLFSSL_LMS:BOOL=yes -DWOLFSSL_LMSSHA256192:BOOL=yes \
7373
-DWOLFSSL_X963KDF:BOOL=yes -DWOLFSSL_DILITHIUM:BOOL=yes -DWOLFSSL_PKCS11:BOOL=yes \
7474
-DWOLFSSL_ECCSI:BOOL=yes -DWOLFSSL_SAKKE:BOOL=yes -DWOLFSSL_SIPHASH:BOOL=yes \
7575
-DWOLFSSL_WC_RSA_DIRECT:BOOL=yes -DWOLFSSL_PUBLIC_MP:BOOL=yes \

CMakeLists.txt

Lines changed: 44 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -612,11 +612,39 @@ add_option(WOLFSSL_MLKEM
612612
"Enable the wolfSSL PQ ML-KEM library (default: disabled)"
613613
"no" "yes;no")
614614

615+
if (WOLFSSL_MLKEM)
616+
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_HAVE_MLKEM")
617+
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_WC_MLKEM")
618+
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_SHA3")
619+
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_SHAKE128")
620+
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_SHAKE256")
621+
622+
set_wolfssl_definitions("WOLFSSL_HAVE_MLKEM" RESULT)
623+
set_wolfssl_definitions("WOLFSSL_WC_MLKEM" RESULT)
624+
set_wolfssl_definitions("WOLFSSL_SHA3" RESULT)
625+
set_wolfssl_definitions("WOLFSSL_SHAKE128" RESULT)
626+
set_wolfssl_definitions("WOLFSSL_SHAKE256" RESULT)
627+
endif()
628+
615629
# Dilithium
616630
add_option(WOLFSSL_DILITHIUM
617631
"Enable the wolfSSL PQ Dilithium (ML-DSA) implementation (default: disabled)"
618632
"no" "yes;no")
619633

634+
if (WOLFSSL_DILITHIUM)
635+
list(APPEND WOLFSSL_DEFINITIONS "-DHAVE_DILITHIUM")
636+
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_WC_DILITHIUM")
637+
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_SHA3")
638+
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_SHAKE128")
639+
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_SHAKE256")
640+
641+
set_wolfssl_definitions("HAVE_DILITHIUM" RESULT)
642+
set_wolfssl_definitions("WOLFSSL_WC_DILITHIUM" RESULT)
643+
set_wolfssl_definitions("WOLFSSL_SHA3" RESULT)
644+
set_wolfssl_definitions("WOLFSSL_SHAKE128" RESULT)
645+
set_wolfssl_definitions("WOLFSSL_SHAKE256" RESULT)
646+
endif()
647+
620648
# LMS
621649
add_option(WOLFSSL_LMS
622650
"Enable the PQ LMS Stateful Hash-based Signature Scheme (default: disabled)"
@@ -626,6 +654,22 @@ add_option(WOLFSSL_LMSSHA256192
626654
"Enable the LMS SHA_256_192 truncated variant (default: disabled)"
627655
"no" "yes;no")
628656

657+
if (WOLFSSL_LMS)
658+
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_HAVE_LMS")
659+
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_WC_LMS")
660+
661+
set_wolfssl_definitions("WOLFSSL_HAVE_LMS" RESULT)
662+
set_wolfssl_definitions("WOLFSSL_WC_LMS" RESULT)
663+
664+
if (WOLFSSL_LMSSHA256192)
665+
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_LMS_SHA256_192")
666+
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_NO_LMS_SHA256_256")
667+
668+
set_wolfssl_definitions("WOLFSSL_LMS_SHA256_192" RESULT)
669+
set_wolfssl_definitions("WOLFSSL_NO_LMS_SHA256_256" RESULT)
670+
endif()
671+
endif()
672+
629673
# Experimental features
630674
add_option(WOLFSSL_EXPERIMENTAL
631675
"Enable experimental features (default: disabled)"
@@ -666,77 +710,6 @@ if (WOLFSSL_EXPERIMENTAL)
666710
message(STATUS "Looking for WOLFSSL_OQS - not found")
667711
endif()
668712

669-
# Checking for experimental feature: WOLFSSL_MLKEM
670-
message(STATUS "Looking for WOLFSSL_MLKEM")
671-
if (WOLFSSL_MLKEM)
672-
set(WOLFSSL_FOUND_EXPERIMENTAL_FEATURE 1)
673-
674-
message(STATUS "Automatically set related requirements for ML-KEM:")
675-
add_definitions("-DWOLFSSL_HAVE_MLKEM")
676-
add_definitions("-DWOLFSSL_WC_MLKEM")
677-
add_definitions("-DWOLFSSL_SHA3")
678-
add_definitions("-DWOLFSSL_SHAKE128")
679-
add_definitions("-DWOLFSSL_SHAKE256")
680-
681-
set_wolfssl_definitions("WOLFSSL_HAVE_MLKEM" RESULT)
682-
set_wolfssl_definitions("WOLFSSL_WC_MLKEM" RESULT)
683-
set_wolfssl_definitions("WOLFSSL_SHA3" RESULT)
684-
set_wolfssl_definitions("WOLFSSL_SHAKE128" RESULT)
685-
set_wolfssl_definitions("WOLFSSL_SHAKE256" RESULT)
686-
message(STATUS "Looking for WOLFSSL_MLKEM - found")
687-
else()
688-
message(STATUS "Looking for WOLFSSL_MLKEM - not found")
689-
endif()
690-
691-
# Checking for experimental feature: WOLFSSL_LMS
692-
message(STATUS "Looking for WOLFSSL_LMS")
693-
if (WOLFSSL_LMS)
694-
set(WOLFSSL_FOUND_EXPERIMENTAL_FEATURE 2)
695-
696-
message(STATUS "Automatically set related requirements for LMS")
697-
add_definitions("-DWOLFSSL_HAVE_LMS")
698-
add_definitions("-DWOLFSSL_WC_LMS")
699-
set_wolfssl_definitions("WOLFSSL_HAVE_LMS" RESULT)
700-
set_wolfssl_definitions("WOLFSSL_WC_LMS" RESULT)
701-
message(STATUS "Looking for WOLFSSL_LMS - found")
702-
# Checking for experimental feature: WOLFSSL_LMSSHA256192
703-
if (WOLFSSL_LMSSHA256192)
704-
message(STATUS "Automatically set related requirements for LMS SHA256-192")
705-
add_definitions("-DWOLFSSL_LMS_SHA256_192")
706-
add_definitions("-DWOLFSSL_NO_LMS_SHA256_256")
707-
set_wolfssl_definitions("WOLFSSL_LMS_SHA256_192" RESULT)
708-
set_wolfssl_definitions("WOLFSSL_NO_LMS_SHA256_256" RESULT)
709-
message(STATUS "Looking for WOLFSSL_LMSSHA256192 - found")
710-
else()
711-
message(STATUS "Looking for WOLFSSL_LMSSHA256192 - not found")
712-
endif()
713-
else()
714-
message(STATUS "Looking for WOLFSSL_LMS - not found")
715-
endif()
716-
717-
# Checking for experimental feature: Dilithium
718-
message(STATUS "Looking for WOLFSSL_DILITHIUM")
719-
if (WOLFSSL_DILITHIUM)
720-
set(WOLFSSL_FOUND_EXPERIMENTAL_FEATURE 1)
721-
722-
message(STATUS "Automatically set related requirements for Dilithium:")
723-
add_definitions("-DHAVE_DILITHIUM")
724-
add_definitions("-DWOLFSSL_WC_DILITHIUM")
725-
add_definitions("-DWOLFSSL_SHA3")
726-
add_definitions("-DWOLFSSL_SHAKE128")
727-
add_definitions("-DWOLFSSL_SHAKE256")
728-
729-
message(STATUS "Automatically set related requirements for Dilithium:")
730-
set_wolfssl_definitions("HAVE_DILITHIUM" RESULT)
731-
set_wolfssl_definitions("WOLFSSL_WC_DILITHIUM" RESULT)
732-
set_wolfssl_definitions("WOLFSSL_SHA3" RESULT)
733-
set_wolfssl_definitions("WOLFSSL_SHAKE128" RESULT)
734-
set_wolfssl_definitions("WOLFSSL_SHAKE256" RESULT)
735-
message(STATUS "Looking for WOLFSSL_DILITHIUM - found")
736-
else()
737-
message(STATUS "Looking for WOLFSSL_DILITHIUM - not found")
738-
endif()
739-
740713
# Other experimental feature detection can be added here...
741714

742715
# Were any experimental features found? Display a message.
@@ -759,12 +732,6 @@ else()
759732
if (WOLFSSL_OQS)
760733
message(FATAL_ERROR "Error: WOLFSSL_OQS requires WOLFSSL_EXPERIMENTAL at this time.")
761734
endif()
762-
if(WOLFSSL_MLKEM)
763-
message(FATAL_ERROR "Error: WOLFSSL_MLKEM requires WOLFSSL_EXPERIMENTAL at this time.")
764-
endif()
765-
if(WOLFSSL_DILITHIUM)
766-
message(FATAL_ERROR "Error: WOLFSSL_DILITHIUM requires WOLFSSL_EXPERIMENTAL at this time.")
767-
endif()
768735
endif()
769736

770737
# LMS

0 commit comments

Comments
 (0)