@@ -573,10 +573,19 @@ 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+
585+ add_option (WOLFSSL_LMSSHA256192
586+ "Enable the LMS SHA_256_192 truncated variant (default: disabled)"
587+ "no" "yes;no" )
588+
580589# Experimental features
581590add_option (WOLFSSL_EXPERIMENTAL
582591 "Enable experimental features (default: disabled)"
@@ -590,7 +599,7 @@ if (WOLFSSL_EXPERIMENTAL)
590599 # check if any experimental features are also enabled:
591600 set (WOLFSSL_FOUND_EXPERIMENTAL_FEATURE 0)
592601
593- set_wolfssl_definitions ("WOLFSSL_EXPERIMENTAL_SETTINGS" RESUlT )
602+ set_wolfssl_definitions ("WOLFSSL_EXPERIMENTAL_SETTINGS" RESULT )
594603
595604 # Checking for experimental feature: OQS
596605 message (STATUS "Looking for WOLFSSL_OQS" )
@@ -605,9 +614,9 @@ if (WOLFSSL_EXPERIMENTAL)
605614 list (APPEND WOLFSSL_LINK_LIBS ${OQS_LIBRARY} )
606615 list (APPEND WOLFSSL_INCLUDE_DIRS ${OQS_INCLUDE_DIR} )
607616
608- set_wolfssl_definitions ("HAVE_LIBOQS" RESUlT )
609- set_wolfssl_definitions ("HAVE_TLS_EXTENSIONS" RESUlT )
610- set_wolfssl_definitions ("OPENSSL_EXTRA" RESUlT )
617+ set_wolfssl_definitions ("HAVE_LIBOQS" RESULT )
618+ set_wolfssl_definitions ("HAVE_TLS_EXTENSIONS" RESULT )
619+ set_wolfssl_definitions ("OPENSSL_EXTRA" RESULT )
611620
612621 else ()
613622 message (STATUS "Checking OQS - not found" )
@@ -617,20 +626,52 @@ if (WOLFSSL_EXPERIMENTAL)
617626 message (STATUS "Looking for WOLFSSL_OQS - not found" )
618627 endif ()
619628
620- # Checking for experimental feature: Kyber
621- message (STATUS "Looking for WOLFSSL_KYBER " )
622- if (WOLFSSL_KYBER )
629+ # Checking for experimental feature: WOLFSSL_MLKEM
630+ message (STATUS "Looking for WOLFSSL_MLKEM " )
631+ if (WOLFSSL_MLKEM )
623632 set (WOLFSSL_FOUND_EXPERIMENTAL_FEATURE 1)
624633
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" )
634+ message (STATUS "Automatically set related requirements for ML-KEM:" )
635+ add_definitions ("-DWOLFSSL_HAVE_MLKEM" )
636+ add_definitions ("-DWOLFSSL_WC_MLKEM" )
637+ add_definitions ("-DWOLFSSL_SHA3" )
638+ add_definitions ("-DWOLFSSL_SHAKE128" )
639+ add_definitions ("-DWOLFSSL_SHAKE256" )
640+
641+ set_wolfssl_definitions ("WOLFSSL_HAVE_MLKEM" RESULT )
642+ set_wolfssl_definitions ("WOLFSSL_WC_MLKEM" RESULT )
643+ set_wolfssl_definitions ("WOLFSSL_SHA3" RESULT )
644+ set_wolfssl_definitions ("WOLFSSL_SHAKE128" RESULT )
645+ set_wolfssl_definitions ("WOLFSSL_SHAKE256" RESULT )
646+ message (STATUS "Looking for WOLFSSL_MLKEM - found" )
647+ else ()
648+ message (STATUS "Looking for WOLFSSL_MLKEM - not found" )
649+ endif ()
650+
651+ # Checking for experimental feature: WOLFSSL_LMS
652+ message (STATUS "Looking for WOLFSSL_LMS" )
653+ if (WOLFSSL_LMS)
654+ set (WOLFSSL_FOUND_EXPERIMENTAL_FEATURE 2)
655+
656+ message (STATUS "Automatically set related requirements for LMS" )
657+ add_definitions ("-DWOLFSSL_HAVE_LMS" )
658+ add_definitions ("-DWOLFSSL_WC_LMS" )
659+ set_wolfssl_definitions ("WOLFSSL_HAVE_LMS" RESULT )
660+ set_wolfssl_definitions ("WOLFSSL_WC_LMS" RESULT )
661+ message (STATUS "Looking for WOLFSSL_LMS - found" )
662+ # Checking for experimental feature: WOLFSSL_LMSSHA256192
663+ if (WOLFSSL_LMSSHA256192)
664+ message (STATUS "Automatically set related requirements for LMS SHA256-192" )
665+ add_definitions ("-DWOLFSSL_LMS_SHA256_192" )
666+ add_definitions ("-DWOLFSSL_NO_LMS_SHA256_256" )
667+ set_wolfssl_definitions ("WOLFSSL_LMS_SHA256_192" RESULT )
668+ set_wolfssl_definitions ("WOLFSSL_NO_LMS_SHA256_256" RESULT )
669+ message (STATUS "Looking for WOLFSSL_LMSSHA256192 - found" )
670+ else ()
671+ message (STATUS "Looking for WOLFSSL_LMSSHA256192 - not found" )
672+ endif ()
632673 else ()
633- message (STATUS "Looking for WOLFSSL_KYBER - not found" )
674+ message (STATUS "Looking for WOLFSSL_LMS - not found" )
634675 endif ()
635676
636677 # Other experimental feature detection can be added here...
@@ -643,8 +684,8 @@ if (WOLFSSL_EXPERIMENTAL)
643684 endif ()
644685
645686 # 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." )
687+ if (WOLFSSL_OQS AND WOLFSSL_MLKEM )
688+ message (FATAL_ERROR "Error: cannot enable both WOLFSSL_OQS and WOLFSSL_MLKEM at the same time." )
648689 endif ()
649690
650691else ()
@@ -653,8 +694,8 @@ else()
653694 if (WOLFSSL_OQS)
654695 message (FATAL_ERROR "Error: WOLFSSL_OQS requires WOLFSSL_EXPERIMENTAL at this time." )
655696 endif ()
656- if (WOLFSSL_KYBER )
657- message (FATAL_ERROR "Error: WOLFSSL_KYBER requires WOLFSSL_EXPERIMENTAL at this time." )
697+ if (WOLFSSL_MLKEM )
698+ message (FATAL_ERROR "Error: WOLFSSL_MLKEM requires WOLFSSL_EXPERIMENTAL at this time." )
658699 endif ()
659700endif ()
660701
0 commit comments