Skip to content

Commit 65092ab

Browse files
authored
Merge pull request #9838 from SparkiDev/slhdsa_1
FIPS 205, SLH-DSA: implementation
2 parents b02ddde + 2ad5afa commit 65092ab

25 files changed

Lines changed: 10588 additions & 18 deletions

.github/workflows/pq-all.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,14 @@ jobs:
1919
config: [
2020
# Add new configs here
2121
'--enable-intelasm --enable-sp-asm --enable-mlkem=yes,kyber,ml-kem CPPFLAGS="-DWOLFSSL_ML_KEM_USE_OLD_IDS"',
22-
'--enable-intelasm --enable-sp-asm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-mlkem=yes,kyber,ml-kem --enable-lms --enable-xmss --enable-dilithium --enable-dual-alg-certs --disable-qt CPPFLAGS="-pedantic -Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE"',
23-
'--enable-smallstack --enable-smallstackcache --enable-intelasm --enable-sp-asm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-mlkem=yes,kyber,ml-kem --enable-lms --enable-xmss --enable-dilithium --enable-dual-alg-certs --disable-qt CPPFLAGS="-pedantic -Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE"',
24-
'--enable-intelasm --enable-sp-asm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-mlkem=yes,kyber,ml-kem --enable-lms --enable-xmss --enable-dilithium --enable-dual-alg-certs --disable-qt CPPFLAGS="-Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE" CC=c++',
25-
'--enable-intelasm --enable-sp-asm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-mlkem=yes,kyber,ml-kem --enable-lms --enable-xmss --enable-dilithium --disable-qt CPPFLAGS="-pedantic -Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE -DWOLFSSL_BLIND_PRIVATE_KEY"',
26-
'--enable-intelasm --enable-sp-asm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-mlkem=yes,kyber,ml-kem --enable-lms --enable-xmss --enable-dilithium --enable-dual-alg-certs --disable-qt CPPFLAGS="-pedantic -Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE -DWOLFSSL_BLIND_PRIVATE_KEY"',
27-
'--enable-intelasm --enable-sp-asm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-mlkem=yes,kyber,ml-kem --enable-lms --enable-xmss --enable-dilithium --enable-dual-alg-certs --disable-qt CPPFLAGS="-pedantic -Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE -DWOLFSSL_TLSX_PQC_MLKEM_STORE_OBJ"',
28-
'--disable-intelasm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-mlkem=yes,kyber,ml-kem,small --enable-lms=yes,small --enable-xmss=yes,small --enable-dilithium=yes,small --enable-dual-alg-certs --disable-qt CPPFLAGS="-pedantic -Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE -DWOLFSSL_MLKEM_MAKEKEY_SMALL_MEM -DWOLFSSL_MLKEM_ENCAPSULATE_SMALL_MEM -DWOLFSSL_MLKEM_NO_LARGE_CODE -DWOLFSSL_DILITHIUM_SIGN_SMALL_MEM -DWOLFSSL_DILITHIUM_VERIFY_SMALL_MEM -DWOLFSSL_DILITHIUM_MAKE_KEY_SMALL_MEM -DWOLFSSL_DILITHIUM_NO_LARGE_CODE"',
29-
'--disable-intelasm --enable-smallstack --enable-smallstackcache --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-mlkem=yes,kyber,ml-kem,small --enable-lms=yes,small --enable-xmss=yes,small --enable-dilithium=yes,small --enable-dual-alg-certs --disable-qt CPPFLAGS="-pedantic -Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE -DWOLFSSL_MLKEM_MAKEKEY_SMALL_MEM -DWOLFSSL_MLKEM_ENCAPSULATE_SMALL_MEM -DWOLFSSL_MLKEM_NO_LARGE_CODE -DWOLFSSL_DILITHIUM_SIGN_SMALL_MEM -DWOLFSSL_DILITHIUM_VERIFY_SMALL_MEM -DWOLFSSL_DILITHIUM_MAKE_KEY_SMALL_MEM -DWOLFSSL_DILITHIUM_NO_LARGE_CODE"',
22+
'--enable-intelasm --enable-sp-asm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-mlkem=yes,kyber,ml-kem --enable-lms --enable-xmss --enable-slhdsa --enable-dilithium --enable-dual-alg-certs --disable-qt CPPFLAGS="-pedantic -Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE"',
23+
'--enable-smallstack --enable-smallstackcache --enable-intelasm --enable-sp-asm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-mlkem=yes,kyber,ml-kem --enable-lms --enable-xmss --enable-slhdsa --enable-dilithium --enable-dual-alg-certs --disable-qt CPPFLAGS="-pedantic -Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE"',
24+
'--enable-intelasm --enable-sp-asm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-mlkem=yes,kyber,ml-kem --enable-lms --enable-xmss --enable-slhdsa --enable-dilithium --enable-dual-alg-certs --disable-qt CPPFLAGS="-Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE" CC=c++',
25+
'--enable-intelasm --enable-sp-asm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-mlkem=yes,kyber,ml-kem --enable-lms --enable-xmss --enable-slhdsa --enable-dilithium --disable-qt CPPFLAGS="-pedantic -Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE -DWOLFSSL_BLIND_PRIVATE_KEY"',
26+
'--enable-intelasm --enable-sp-asm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-mlkem=yes,kyber,ml-kem --enable-lms --enable-xmss --enable-slhdsa --enable-dilithium --enable-dual-alg-certs --disable-qt CPPFLAGS="-pedantic -Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE -DWOLFSSL_BLIND_PRIVATE_KEY"',
27+
'--enable-intelasm --enable-sp-asm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-mlkem=yes,kyber,ml-kem --enable-lms --enable-xmss --enable-slhdsa --enable-dilithium --enable-dual-alg-certs --disable-qt CPPFLAGS="-pedantic -Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE -DWOLFSSL_TLSX_PQC_MLKEM_STORE_OBJ"',
28+
'--disable-intelasm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-mlkem=yes,kyber,ml-kem,small --enable-lms=yes,small --enable-xmss=yes,small --enable-slhdsa=yes,small --enable-dilithium=yes,small --enable-dual-alg-certs --disable-qt CPPFLAGS="-pedantic -Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE -DWOLFSSL_MLKEM_MAKEKEY_SMALL_MEM -DWOLFSSL_MLKEM_ENCAPSULATE_SMALL_MEM -DWOLFSSL_MLKEM_NO_LARGE_CODE -DWOLFSSL_DILITHIUM_SIGN_SMALL_MEM -DWOLFSSL_DILITHIUM_VERIFY_SMALL_MEM -DWOLFSSL_DILITHIUM_MAKE_KEY_SMALL_MEM -DWOLFSSL_DILITHIUM_NO_LARGE_CODE"',
29+
'--disable-intelasm --enable-smallstack --enable-smallstackcache --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy --enable-experimental --enable-mlkem=yes,kyber,ml-kem,small --enable-lms=yes,small --enable-xmss=yes,small --enable-slhdsa=yes,small --enable-dilithium=yes,small --enable-dual-alg-certs --disable-qt CPPFLAGS="-pedantic -Wdeclaration-after-statement -DWOLFCRYPT_TEST_LINT -DNO_WOLFSSL_CIPHER_SUITE_TEST -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE -DWOLFSSL_MLKEM_MAKEKEY_SMALL_MEM -DWOLFSSL_MLKEM_ENCAPSULATE_SMALL_MEM -DWOLFSSL_MLKEM_NO_LARGE_CODE -DWOLFSSL_DILITHIUM_SIGN_SMALL_MEM -DWOLFSSL_DILITHIUM_VERIFY_SMALL_MEM -DWOLFSSL_DILITHIUM_MAKE_KEY_SMALL_MEM -DWOLFSSL_DILITHIUM_NO_LARGE_CODE"',
3030
]
3131
name: make check
3232
if: github.repository_owner == 'wolfssl'

.wolfssl_known_macro_extras

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -880,6 +880,7 @@ WOLFSSL_RSA_DECRYPT_TO_0_LEN
880880
WOLFSSL_RW_THREADED
881881
WOLFSSL_SAKKE_SMALL
882882
WOLFSSL_SAKKE_SMALL_MODEXP
883+
WOLFSSL_SLHDSA_FULL_HASH
883884
WOLFSSL_SE050_AUTO_ERASE
884885
WOLFSSL_SE050_CRYPT
885886
WOLFSSL_SE050_HASH
@@ -936,6 +937,7 @@ WOLFSSL_USE_FORCE_ZERO
936937
WOLFSSL_USE_OPTIONS_H
937938
WOLFSSL_VALIDATE_DH_KEYGEN
938939
WOLFSSL_WC_LMS_SERIALIZE_STATE
940+
WOLFSSL_WC_SLHDSA_RECURSIVE
939941
WOLFSSL_WC_XMSS_NO_SHA256
940942
WOLFSSL_WC_XMSS_NO_SHAKE256
941943
WOLFSSL_WICED_PSEUDO_UNIX_EPOCH_TIME

CMakeLists.txt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -777,6 +777,23 @@ add_option(WOLFSSL_XMSS
777777
"Enable the wolfSSL XMSS implementation (default: disabled)"
778778
"no" "yes;no")
779779

780+
# SLH-DSA
781+
add_option(WOLFSSL_SLHDSA
782+
"Enable the wolfSSL SLH-DSA implementation (default: disabled)"
783+
"no" "yes;no")
784+
785+
if (WOLFSSL_SLHDSA)
786+
message(STATUS "Automatically set related requirements for SLH-DSA")
787+
add_definitions("-DWOLFSSL_HAVE_SLHDSA")
788+
add_definitions("-DWOLFSSL_WC_SLHDSA")
789+
add_definitions("-DWOLFSSL_SHAKE256")
790+
791+
set_wolfssl_definitions("WOLFSSL_HAVE_SLHDSA" RESULT)
792+
set_wolfssl_definitions("WOLFSSL_WC_SLHDSA" RESULT)
793+
set_wolfssl_definitions("WOLFSSL_SHAKE256" RESULT)
794+
message(STATUS "Looking for WOLFSSL_SLHDSA - found")
795+
endif()
796+
780797
# TODO: - Lean PSK
781798
# - Lean TLS
782799
# - Low resource
@@ -2816,6 +2833,7 @@ if(WOLFSSL_EXAMPLES)
28162833
tests/api/test_ed448.c
28172834
tests/api/test_mlkem.c
28182835
tests/api/test_mldsa.c
2836+
tests/api/test_slhdsa.c
28192837
tests/api/test_signature.c
28202838
tests/api/test_dtls.c
28212839
tests/api/test_ocsp.c

cmake/functions.cmake

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,9 @@ function(generate_build_flags)
226226
if(WOLFSSL_XMSS OR WOLFSSL_USER_SETTINGS)
227227
set(BUILD_WC_XMSS "yes" PARENT_SCOPE)
228228
endif()
229+
if(WOLFSSL_SLHDSA OR WOLFSSL_USER_SETTINGS)
230+
set(BUILD_WC_SLHDSA "yes" PARENT_SCOPE)
231+
endif()
229232
if(WOLFSSL_ARIA OR WOLFSSL_USER_SETTINGS)
230233
message(STATUS "ARIA functions.cmake found WOLFSSL_ARIA")
231234
# we cannot actually build, as we only have pre-compiled bin
@@ -1078,6 +1081,10 @@ function(generate_lib_src_list LIB_SOURCES)
10781081
list(APPEND LIB_SOURCES wolfcrypt/src/wc_xmss_impl.c)
10791082
endif()
10801083

1084+
if(BUILD_WC_SLHDSA)
1085+
list(APPEND LIB_SOURCES wolfcrypt/src/wc_slhdsa.c)
1086+
endif()
1087+
10811088
if(BUILD_LIBZ)
10821089
list(APPEND LIB_SOURCES wolfcrypt/src/compress.c)
10831090
endif()

cmake/options.h.in

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,10 @@ extern "C" {
410410
#cmakedefine HAVE_SECRET_CALLBACK
411411
#undef WC_RSA_DIRECT
412412
#cmakedefine WC_RSA_DIRECT
413+
#undef WOLFSSL_HAVE_SLHDSA
414+
#cmakedefine WOLFSSL_HAVE_SLHDSA
415+
#undef WOLFSSL_WC_SLHDSA
416+
#cmakedefine WOLFSSL_WC_SLHDSA
413417

414418
#ifdef __cplusplus
415419
}

configure.ac

Lines changed: 112 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
# configure.ac
22
#
3-
# Copyright (C) 2006-2025 wolfSSL Inc.
3+
# Copyright (C) 2006-2026 wolfSSL Inc.
44
#
55
# This file is part of wolfSSL. (formerly known as CyaSSL)
66
#
77
#
8-
AC_COPYRIGHT([Copyright (C) 2006-2025 wolfSSL Inc.])
8+
AC_COPYRIGHT([Copyright (C) 2006-2026 wolfSSL Inc.])
99
AC_PREREQ([2.69])
1010
AC_INIT([wolfssl],[5.8.4],[https://github.com/wolfssl/wolfssl/issues],[wolfssl],[https://www.wolfssl.com])
1111
AC_CONFIG_AUX_DIR([build-aux])
@@ -2144,6 +2144,113 @@ then
21442144
fi
21452145
fi
21462146

2147+
# SLH-DSA
2148+
ENABLED_SLHDSA=yes
2149+
AC_ARG_ENABLE([slhdsa],
2150+
[AS_HELP_STRING([--enable-slhdsa],[Enable SLH-DSA signatures (default: disabled)])],
2151+
[ ENABLED_SLHDSA=$enableval ],
2152+
[ ENABLED_SLHDSA=no ]
2153+
)
2154+
2155+
for v in `echo $ENABLED_SLHDSA | tr "," " "`
2156+
do
2157+
case $v in
2158+
yes)
2159+
SLHDSA_PARAM_128S=yes
2160+
SLHDSA_PARAM_128F=yes
2161+
SLHDSA_PARAM_192S=yes
2162+
SLHDSA_PARAM_192F=yes
2163+
SLHDSA_PARAM_256S=yes
2164+
SLHDSA_PARAM_256F=yes
2165+
;;
2166+
no)
2167+
;;
2168+
verify-only)
2169+
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SLHDSA_VERIFY_ONLY"
2170+
;;
2171+
small)
2172+
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_WC_SLHDSA_SMALL"
2173+
;;
2174+
small-mem)
2175+
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_WC_SLHDSA_SMALL_MEM"
2176+
;;
2177+
128s)
2178+
SLHDSA_PARAM_128S=yes
2179+
;;
2180+
128f)
2181+
SLHDSA_PARAM_128F=yes
2182+
;;
2183+
192s)
2184+
SLHDSA_PARAM_192S=yes
2185+
;;
2186+
192f)
2187+
SLHDSA_PARAM_192F=yes
2188+
;;
2189+
256s)
2190+
SLHDSA_PARAM_256S=yes
2191+
;;
2192+
256f)
2193+
SLHDSA_PARAM_256F=yes
2194+
;;
2195+
no-s)
2196+
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SLHDSA_PARAM_NO_SMALL"
2197+
;;
2198+
no-f)
2199+
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SLHDSA_PARAM_NO_FAST"
2200+
;;
2201+
*)
2202+
AC_MSG_ERROR([Invalid choice for SLH-DSA []: $ENABLED_SLHDSA.])
2203+
break;;
2204+
esac
2205+
done
2206+
2207+
if test "$ENABLED_SLHDSA" != "no"
2208+
then
2209+
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_HAVE_SLHDSA"
2210+
AM_CCASFLAGS="$AM_CCASFLAGS -DWOLFSSL_HAVE_SLHDSA"
2211+
2212+
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_WC_SLHDSA"
2213+
2214+
if test "$SLHDSA_PARAM_128S" = "yes"
2215+
then
2216+
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SLHDSA_PARAM_128S"
2217+
else
2218+
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SLHDSA_PARAM_NO_128S"
2219+
fi
2220+
if test "$SLHDSA_PARAM_128F" = "yes"
2221+
then
2222+
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SLHDSA_PARAM_128F"
2223+
else
2224+
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SLHDSA_PARAM_NO_128F"
2225+
fi
2226+
if test "$SLHDSA_PARAM_192S" = "yes"
2227+
then
2228+
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SLHDSA_PARAM_192S"
2229+
else
2230+
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SLHDSA_PARAM_NO_192S"
2231+
fi
2232+
if test "$SLHDSA_PARAM_192F" = "yes"
2233+
then
2234+
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SLHDSA_PARAM_192F"
2235+
else
2236+
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SLHDSA_PARAM_NO_192F"
2237+
fi
2238+
if test "$SLHDSA_PARAM_256S" = "yes"
2239+
then
2240+
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SLHDSA_PARAM_256S"
2241+
else
2242+
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SLHDSA_PARAM_NO_256S"
2243+
fi
2244+
if test "$SLHDSA_PARAM_256F" = "yes"
2245+
then
2246+
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SLHDSA_PARAM_256F"
2247+
else
2248+
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SLHDSA_PARAM_NO_256F"
2249+
fi
2250+
2251+
enable_shake256=yes
2252+
fi
2253+
21472254
# SINGLE THREADED
21482255
AC_ARG_ENABLE([singlethreaded],
21492256
[AS_HELP_STRING([--enable-singlethreaded],[Enable wolfSSL single threaded (default: disabled)])],
@@ -11232,6 +11339,7 @@ AM_CONDITIONAL([BUILD_CURVE448],[test "x$ENABLED_CURVE448" = "xyes" || test "x$E
1123211339
AM_CONDITIONAL([BUILD_CURVE448_SMALL],[test "x$ENABLED_CURVE448_SMALL" = "xyes" || test "x$ENABLED_USERSETTINGS" = "xyes"])
1123311340
AM_CONDITIONAL([BUILD_WC_LMS],[test "x$ENABLED_WC_LMS" != "xno" || test "x$ENABLED_USERSETTINGS" = "xyes"])
1123411341
AM_CONDITIONAL([BUILD_WC_XMSS],[test "x$ENABLED_WC_XMSS" != "xno" || test "x$ENABLED_USERSETTINGS" = "xyes"])
11342+
AM_CONDITIONAL([BUILD_WC_SLHDSA],[test "x$ENABLED_SLHDSA" != "xno" || test "x$ENABLED_USERSETTINGS" = "xyes"])
1123511343
AM_CONDITIONAL([BUILD_WC_MLKEM],[test "x$ENABLED_WC_MLKEM" != "xno" || test "x$ENABLED_USERSETTINGS" = "xyes"])
1123611344
AM_CONDITIONAL([BUILD_DILITHIUM],[test "x$ENABLED_DILITHIUM" != "xno" || test "x$ENABLED_USERSETTINGS" = "xyes"])
1123711345
AM_CONDITIONAL([BUILD_ECCSI],[test "x$ENABLED_ECCSI" = "xyes" || test "x$ENABLED_USERSETTINGS" = "xyes"])
@@ -11485,7 +11593,7 @@ rm -f $OPTION_FILE
1148511593
echo "/* wolfssl options.h" > $OPTION_FILE
1148611594
echo " * generated from configure options" >> $OPTION_FILE
1148711595
echo " *" >> $OPTION_FILE
11488-
echo " * Copyright (C) 2006-2025 wolfSSL Inc." >> $OPTION_FILE
11596+
echo " * Copyright (C) 2006-2026 wolfSSL Inc." >> $OPTION_FILE
1148911597
echo " *" >> $OPTION_FILE
1149011598
echo " * This file is part of wolfSSL. (formerly known as CyaSSL)" >> $OPTION_FILE
1149111599
echo " *" >> $OPTION_FILE
@@ -11782,6 +11890,7 @@ echo " * XMSS wolfSSL impl: $ENABLED_WC_XMSS"
1178211890
if test "$ENABLED_LIBXMSS" = "yes"; then
1178311891
echo " * XMSS_ROOT: $XMSS_ROOT"
1178411892
fi
11893+
echo " * SLH-DSA $ENABLED_SLHDSA"
1178511894
echo " * MLKEM: $ENABLED_MLKEM"
1178611895
echo " * MLKEM wolfSSL impl: $ENABLED_WC_MLKEM"
1178711896
echo " * DILITHIUM: $ENABLED_DILITHIUM"

linuxkm/module_exports.c.template

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,9 @@
176176
#ifdef HAVE_DILITHIUM
177177
#include <wolfssl/wolfcrypt/dilithium.h>
178178
#endif
179+
#ifdef WOLFSSL_HAVE_SLHDSA
180+
#include <wolfssl/wolfcrypt/wc_slhdsa.h>
181+
#endif
179182

180183
#ifdef OPENSSL_EXTRA
181184
#ifndef WOLFCRYPT_ONLY

src/include.am

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1418,6 +1418,10 @@ src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/wc_xmss.c
14181418
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/wc_xmss_impl.c
14191419
endif
14201420

1421+
if BUILD_WC_SLHDSA
1422+
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/wc_slhdsa.c
1423+
endif
1424+
14211425
if !BUILD_FIPS_V6_PLUS
14221426
if BUILD_CURVE25519
14231427
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/curve25519.c

tests/api.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@
207207
#include <tests/api/test_ed448.h>
208208
#include <tests/api/test_mlkem.h>
209209
#include <tests/api/test_mldsa.h>
210+
#include <tests/api/test_slhdsa.h>
210211
#include <tests/api/test_signature.h>
211212
#include <tests/api/test_dtls.h>
212213
#include <tests/api/test_ocsp.h>
@@ -32969,6 +32970,8 @@ TEST_CASE testCases[] = {
3296932970
TEST_MLKEM_DECLS,
3297032971
/* Dilithium */
3297132972
TEST_MLDSA_DECLS,
32973+
/* SLH-DSA */
32974+
TEST_SLHDSA_DECLS,
3297232975
/* Signature API */
3297332976
TEST_SIGNATURE_DECLS,
3297432977

tests/api/include.am

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ tests_unit_test_SOURCES += tests/api/test_curve448.c
4646
tests_unit_test_SOURCES += tests/api/test_ed448.c
4747
tests_unit_test_SOURCES += tests/api/test_mlkem.c
4848
tests_unit_test_SOURCES += tests/api/test_mldsa.c
49+
tests_unit_test_SOURCES += tests/api/test_slhdsa.c
4950
tests_unit_test_SOURCES += tests/api/test_signature.c
5051
# TLS Protocol
5152
tests_unit_test_SOURCES += tests/api/test_dtls.c
@@ -148,6 +149,7 @@ EXTRA_DIST += tests/api/test_curve448.h
148149
EXTRA_DIST += tests/api/test_ed448.h
149150
EXTRA_DIST += tests/api/test_mlkem.h
150151
EXTRA_DIST += tests/api/test_mldsa.h
152+
EXTRA_DIST += tests/api/test_slhdsa.h
151153
EXTRA_DIST += tests/api/test_signature.h
152154
EXTRA_DIST += tests/api/test_dtls.h
153155
EXTRA_DIST += tests/api/test_ocsp.h

0 commit comments

Comments
 (0)