Skip to content

Commit da94ea6

Browse files
committed
Move PQC algos out of experimental in CMake
This has already been done long time in autoconf. User now does not have to enable experimental features to use PQC.
1 parent 156db7d commit da94ea6

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)