Skip to content

FIPS 205, SLH-DSA: implementation#9838

Open
SparkiDev wants to merge 1 commit intowolfSSL:masterfrom
SparkiDev:slhdsa_1
Open

FIPS 205, SLH-DSA: implementation#9838
SparkiDev wants to merge 1 commit intowolfSSL:masterfrom
SparkiDev:slhdsa_1

Conversation

@SparkiDev
Copy link
Contributor

Description

Adding implementation of SLH-DSA.
Some tests added.

Testing

Regression tested SLH-DSA including:
--enable-slhdsa
--enable-slhdsa=yes,verify-only
--enable-slhdsa=yes,small
--enable-intelasm

Checklist

  • added tests
  • updated/added doxygen
  • updated appropriate READMEs
  • Updated manual and documentation

@SparkiDev SparkiDev self-assigned this Feb 27, 2026
@SparkiDev SparkiDev force-pushed the slhdsa_1 branch 5 times, most recently from af2fa59 to 4d541e7 Compare February 27, 2026 03:32
@SparkiDev
Copy link
Contributor Author

retest this please

@SparkiDev SparkiDev assigned wolfSSL-Bot and unassigned SparkiDev Feb 27, 2026
@SparkiDev SparkiDev assigned SparkiDev and unassigned wolfSSL-Bot Mar 2, 2026
@SparkiDev SparkiDev removed the request for review from wolfSSL-Bot March 2, 2026 23:08
@SparkiDev SparkiDev force-pushed the slhdsa_1 branch 2 times, most recently from 0d6a066 to d8ac9da Compare March 3, 2026 03:37
@SparkiDev SparkiDev assigned wolfSSL-Bot and unassigned SparkiDev Mar 3, 2026
@SparkiDev SparkiDev requested a review from wolfSSL-Bot March 3, 2026 04:16
@JacobBarthelmeh JacobBarthelmeh requested a review from Copilot March 3, 2026 23:17
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds initial SLH-DSA (FIPS 205) support to wolfCrypt, wiring it into build systems, benchmarks, and both unit/API tests.

Changes:

  • Introduces the SLH-DSA public API header and integrates SLH-DSA into core build/packaging (autotools/CMake) and CI configs.
  • Adds SLH-DSA coverage to wolfcrypt test runner plus dedicated API unit tests.
  • Adds SLH-DSA benchmark support and extends SHA3 AVX2 assembly gating for SLH-DSA builds.

Reviewed changes

Copilot reviewed 17 out of 22 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
wolfssl/wolfcrypt/wc_slhdsa.h New public SLH-DSA API header, parameter constants, key struct and function prototypes.
wolfssl/wolfcrypt/types.h Adds DYNAMIC_TYPE_SLHDSA for memory tracking.
wolfssl/wolfcrypt/include.am Installs the new wc_slhdsa.h header.
wolfcrypt/test/test.h Declares slhdsa_test() for the wolfcrypt test runner.
wolfcrypt/test/test.c Hooks SLH-DSA into test execution and adds SLH-DSA test vectors / sign-verify tests.
wolfcrypt/src/sha3_asm.S Enables SHA3 AVX2 multi-block symbols when SLH-DSA is enabled.
wolfcrypt/src/poly1305_asm.asm Comment header formatting change.
wolfcrypt/src/chacha_asm.asm Comment header formatting change.
wolfcrypt/src/aes_xts_asm.asm Comment header formatting change.
wolfcrypt/src/aes_gcm_asm.asm Comment header formatting change.
wolfcrypt/benchmark/benchmark.h Adds SLH-DSA benchmark prototype.
wolfcrypt/benchmark/benchmark.c Adds SLH-DSA benchmark flags/CLI options and implements bench_slhdsa().
tests/api/test_slhdsa.h New API test declarations for SLH-DSA.
tests/api/test_slhdsa.c New API unit tests for init, sizing, keygen, sign/verify, hash-signing, import/export, checkkey.
tests/api/include.am Adds SLH-DSA API tests to automake build and dist.
tests/api.c Registers SLH-DSA API tests in the test case list.
src/include.am Adds wolfcrypt/src/wc_slhdsa.c to library sources under BUILD_WC_SLHDSA.
configure.ac Adds --enable-slhdsa handling, flags, and BUILD_WC_SLHDSA conditional.
CMakeLists.txt Adds CMake option for WOLFSSL_HAVE_SLHDSA and includes SLH-DSA API test source.
.wolfssl_known_macro_extras Adds SLH-DSA-related macro names to the known-macro list.
.github/workflows/pq-all.yml Enables SLH-DSA in PQ CI matrix configurations.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@SparkiDev
Copy link
Contributor Author

retest this please

@SparkiDev SparkiDev added the For This Release Release version 5.9.0 label Mar 4, 2026
Copy link
Contributor

@douzzer douzzer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All tests run with --enable-slhdsa added to config:

succeeded: quantum-safe-wolfssl-all-g++-latest-debug quantum-safe-wolfssl-all-clang++-latest quantum-safe-wolfssl-all-cppcheck quantum-safe-wolfssl-all-gcc-latest quantum-safe-wolfssl-all-gcc-latest-MLKEM_CACHE_A quantum-safe-wolfssl-all-gcc-latest-MLKEM_ENCAPSULATE_SMALL_MEM quantum-safe-wolfssl-all-gcc-latest-m32 quantum-safe-wolfssl-all-gcc-latest-c23-debug quantum-safe-wolfssl-all-clang-latest-c23-debug quantum-safe-wolfssl-all-g++-latest quantum-safe-wolfssl-all-fortify-source-asm quantum-safe-wolfssl-all-fortify-source-noasm quantum-safe-wolfssl-all-intelasm-sp-asm-valgrind quantum-safe-wolfssl-all-intelasm-sp-asm-helgrind quantum-safe-wolfssl-all-intelasm-sp-asm-valgrind-Os
failed: quantum-safe-all-crypt-sp-math-vector-register-access quantum-safe-wolfssl-all-clang-tidy quantum-safe-wolfssl-all-noasm-clang-tidy quantum-safe-wolfssl-all-smallstack-clang-tidy quantum-safe-wolfssl-all-fips204-clang-tidy quantum-safe-wolfssl-all-no-asm-clang-tidy quantum-safe-wolfssl-all-linuxkm-defaults-clang-tidy quantum-safe-wolfssl-all-intelasm-sp-asm-sanitizer

representative subset of failing test transcripts:

[quantum-safe-all-crypt-sp-math-vector-register-access] [11 of 60] [60c13c15c8]
    configure...   real 0m6.217s  user 0m3.784s  sys 0m3.152s
    build...   real 0m10.708s  user 2m10.652s  sys 0m6.921s
    check...FAIL: testsuite/testsuite.test
FAIL: scripts/unit.test
   real 0m6.112s  user 0m5.339s  sys 0m3.049s

testsuite/testsuite.log tail:
CURVE25519 test passed!
ED25519  test passed!
CURVE448 test passed!
ED448    test passed!
MLKEM    test passed!
DILITHIUM test passed!
XMSS Vfy test passed!
XMSS     test passed!
wolfcrypt/src/wc_slhdsa.c @ L450 : incr : wc_svr_count 6 (last op wolfcrypt/src/wc_slhdsa.c L4863)
FAIL testsuite/testsuite.test (exit status: 1)

[quantum-safe-wolfssl-all-clang-tidy] [14 of 60] [60c13c15c8]
    configure...   real 0m12.886s  user 0m7.869s  sys 0m6.143s
    build...f96044f32c (<sean@wolfssl.com> 2026-02-27 11:51:05 +1000 12052)     XSNPRINTF(name, sizeof(name), "SLH-DSA-%c", ((param & 1) == 0) ? 'S' : 'F');
/tmp/tmp.4346_28411/wolfssl_test_workdir.40936/wolfssl/wolfcrypt/benchmark/benchmark.c:12052:5: warning: the value returned by this function should not be disregarded; neglecting it may lead to errors [bugprone-unused-return-value]
12052 |     XSNPRINTF(name, sizeof(name), "SLH-DSA-%c", ((param & 1) == 0) ? 'S' : 'F');
|     ^
a22b2085b1 (<hide@wolfssl.com> 2020-09-14 20:02:21 +0900 1111)                 #define XSNPRINTF snprintf
./wolfssl/wolfcrypt/types.h:1111:35: note: expanded from macro 'XSNPRINTF'
1111 |                 #define XSNPRINTF snprintf
|                                   ^
f96044f32c (<sean@wolfssl.com> 2026-02-27 11:51:05 +1000 12052)     XSNPRINTF(name, sizeof(name), "SLH-DSA-%c", ((param & 1) == 0) ? 'S' : 'F');
/tmp/tmp.4346_28411/wolfssl_test_workdir.40936/wolfssl/wolfcrypt/benchmark/benchmark.c:12052:5: note: cast the expression to void to silence this warning
12052 |     XSNPRINTF(name, sizeof(name), "SLH-DSA-%c", ((param & 1) == 0) ? 'S' : 'F');
|     ^
a22b2085b1 (<hide@wolfssl.com> 2020-09-14 20:02:21 +0900 1111)                 #define XSNPRINTF snprintf
./wolfssl/wolfcrypt/types.h:1111:35: note: expanded from macro 'XSNPRINTF'
1111 |                 #define XSNPRINTF snprintf
|                                   ^
Suppressed 49 warnings (18 in non-user code, 31 NOLINT).
f96044f32c (<sean@wolfssl.com> 2026-02-27 11:51:05 +1000 189)     do { (a)[1] = t[0]; (a)[2] = t[1]; (a)[3] = t[2]; } while (0)
/tmp/tmp.4346_28411/wolfssl_test_workdir.40936/wolfssl/wolfcrypt/src/wc_slhdsa.c:189:19: warning: macro argument should be enclosed in parentheses [bugprone-macro-parentheses]
189 |     do { (a)[1] = t[0]; (a)[2] = t[1]; (a)[3] = t[2]; } while (0)
|                   ^
      |                   ()
[and ~100 more]

[quantum-safe-wolfssl-all-intelasm-sp-asm-sanitizer] [20 of 60] [60c13c15c8]
    configure...   real 0m10.826s  user 0m6.970s  sys 0m4.938s
    build...   real 0m50.234s  user 11m0.517s  sys 0m11.179s
    check...   real 0m33.520s  user 0m24.767s  sys 0m11.874s
f96044f32c (<sean@wolfssl.com> 2026-02-27 11:51:05 +1000 1170)                 ((word64*)seed)[i];
testsuite/testsuite.log:wolfcrypt/src/wc_slhdsa.c:1170:32: runtime error: load of misaligned address 0x7b06fd1c007c for type 'word64', which requires 8 byte alignment
f96044f32c (<sean@wolfssl.com> 2026-02-27 11:51:05 +1000 1359)         SHAKE256_SET_SEED_HA_X4_16(fixed, pk_seed, addr);
testsuite/testsuite.log:wolfcrypt/src/wc_slhdsa.c:1359:9: runtime error: load of misaligned address 0x7b06fd1c007c for type 'word64', which requires 8 byte alignment
testsuite/testsuite.log:wolfcrypt/src/wc_slhdsa.c:1359:9: runtime error: load of misaligned address 0x7b06fd1c007c for type 'word64', which requires 8 byte alignment
f96044f32c (<sean@wolfssl.com> 2026-02-27 11:51:05 +1000 1203)             ((word64*)hash)[i];
testsuite/testsuite.log:wolfcrypt/src/wc_slhdsa.c:1203:28: runtime error: load of misaligned address 0x7b06fd1c04ec for type 'word64', which requires 8 byte alignment
f96044f32c (<sean@wolfssl.com> 2026-02-27 11:51:05 +1000 1590)         SHAKE256_SET_SEED_HA_X4_16(fixed, pk_seed, addr);
testsuite/testsuite.log:wolfcrypt/src/wc_slhdsa.c:1590:9: runtime error: load of misaligned address 0x7b06fd1c050c for type 'word64', which requires 8 byte alignment
testsuite/testsuite.log:wolfcrypt/src/wc_slhdsa.c:1590:9: runtime error: load of misaligned address 0x7b06fd1c050c for type 'word64', which requires 8 byte alignment
f96044f32c (<sean@wolfssl.com> 2026-02-27 11:51:05 +1000 1650)         SHAKE256_SET_SEED_HA_X4_24(fixed, pk_seed, addr);
testsuite/testsuite.log:wolfcrypt/src/wc_slhdsa.c:1650:9: runtime error: load of misaligned address 0x7b06fd3d00dc for type 'word64', which requires 8 byte alignment
testsuite/testsuite.log:wolfcrypt/src/wc_slhdsa.c:1650:9: runtime error: load of misaligned address 0x7b06fd3d00dc for type 'word64', which requires 8 byte alignment
testsuite/testsuite.log:wolfcrypt/src/wc_slhdsa.c:1650:9: runtime error: load of misaligned address 0x7b06fd3d00dc for type 'word64', which requires 8 byte alignment
f96044f32c (<sean@wolfssl.com> 2026-02-27 11:51:05 +1000 1420)         SHAKE256_SET_SEED_HA_X4_24(fixed, pk_seed, addr);
testsuite/testsuite.log:wolfcrypt/src/wc_slhdsa.c:1420:9: runtime error: load of misaligned address 0x7b06fd3d00dc for type 'word64', which requires 8 byte alignment
testsuite/testsuite.log:wolfcrypt/src/wc_slhdsa.c:1420:9: runtime error: load of misaligned address 0x7b06fd3d00dc for type 'word64', which requires 8 byte alignment
testsuite/testsuite.log:wolfcrypt/src/wc_slhdsa.c:1420:9: runtime error: load of misaligned address 0x7b06fd3d00dc for type 'word64', which requires 8 byte alignment
f96044f32c (<sean@wolfssl.com> 2026-02-27 11:51:05 +1000 1710)         SHAKE256_SET_SEED_HA_X4_32(fixed, pk_seed, addr);
testsuite/testsuite.log:wolfcrypt/src/wc_slhdsa.c:1710:9: runtime error: load of misaligned address 0x7b06fd2f00ec for type 'word64', which requires 8 byte alignment
testsuite/testsuite.log:wolfcrypt/src/wc_slhdsa.c:1710:9: runtime error: load of misaligned address 0x7b06fd2f00ec for type 'word64', which requires 8 byte alignment
testsuite/testsuite.log:wolfcrypt/src/wc_slhdsa.c:1710:9: runtime error: load of misaligned address 0x7b06fd2f00ec for type 'word64', which requires 8 byte alignment
testsuite/testsuite.log:wolfcrypt/src/wc_slhdsa.c:1710:9: runtime error: load of misaligned address 0x7b06fd2f00ec for type 'word64', which requires 8 byte alignment
f96044f32c (<sean@wolfssl.com> 2026-02-27 11:51:05 +1000 1481)         SHAKE256_SET_SEED_HA_X4_32(fixed, pk_seed, addr);
testsuite/testsuite.log:wolfcrypt/src/wc_slhdsa.c:1481:9: runtime error: load of misaligned address 0x7b06fd2f00ec for type 'word64', which requires 8 byte alignment
testsuite/testsuite.log:wolfcrypt/src/wc_slhdsa.c:1481:9: runtime error: load of misaligned address 0x7b06fd2f00ec for type 'word64', which requires 8 byte alignment
testsuite/testsuite.log:wolfcrypt/src/wc_slhdsa.c:1481:9: runtime error: load of misaligned address 0x7b06fd2f00ec for type 'word64', which requires 8 byte alignment
testsuite/testsuite.log:wolfcrypt/src/wc_slhdsa.c:1481:9: runtime error: load of misaligned address 0x7b06fd2f00ec for type 'word64', which requires 8 byte alignment
f96044f32c (<sean@wolfssl.com> 2026-02-27 11:51:05 +1000 1170)                 ((word64*)seed)[i];
scripts/unit.log:wolfcrypt/src/wc_slhdsa.c:1170:32: runtime error: load of misaligned address 0x7ba8c656407c for type 'word64', which requires 8 byte alignment
f96044f32c (<sean@wolfssl.com> 2026-02-27 11:51:05 +1000 1359)         SHAKE256_SET_SEED_HA_X4_16(fixed, pk_seed, addr);
scripts/unit.log:wolfcrypt/src/wc_slhdsa.c:1359:9: runtime error: load of misaligned address 0x7ba8c656407c for type 'word64', which requires 8 byte alignment
scripts/unit.log:wolfcrypt/src/wc_slhdsa.c:1359:9: runtime error: load of misaligned address 0x7ba8c656407c for type 'word64', which requires 8 byte alignment
f96044f32c (<sean@wolfssl.com> 2026-02-27 11:51:05 +1000 1203)             ((word64*)hash)[i];
scripts/unit.log:wolfcrypt/src/wc_slhdsa.c:1203:28: runtime error: load of misaligned address 0x7ba8c65644ec for type 'word64', which requires 8 byte alignment
f96044f32c (<sean@wolfssl.com> 2026-02-27 11:51:05 +1000 1590)         SHAKE256_SET_SEED_HA_X4_16(fixed, pk_seed, addr);
scripts/unit.log:wolfcrypt/src/wc_slhdsa.c:1590:9: runtime error: load of misaligned address 0x7ba8c656450c for type 'word64', which requires 8 byte alignment
scripts/unit.log:wolfcrypt/src/wc_slhdsa.c:1590:9: runtime error: load of misaligned address 0x7ba8c656450c for type 'word64', which requires 8 byte alignment
f96044f32c (<sean@wolfssl.com> 2026-02-27 11:51:05 +1000 1650)         SHAKE256_SET_SEED_HA_X4_24(fixed, pk_seed, addr);
scripts/unit.log:wolfcrypt/src/wc_slhdsa.c:1650:9: runtime error: load of misaligned address 0x7ba8c67e00dc for type 'word64', which requires 8 byte alignment
scripts/unit.log:wolfcrypt/src/wc_slhdsa.c:1650:9: runtime error: load of misaligned address 0x7ba8c67e00dc for type 'word64', which requires 8 byte alignment
scripts/unit.log:wolfcrypt/src/wc_slhdsa.c:1650:9: runtime error: load of misaligned address 0x7ba8c67e00dc for type 'word64', which requires 8 byte alignment
f96044f32c (<sean@wolfssl.com> 2026-02-27 11:51:05 +1000 1420)         SHAKE256_SET_SEED_HA_X4_24(fixed, pk_seed, addr);
scripts/unit.log:wolfcrypt/src/wc_slhdsa.c:1420:9: runtime error: load of misaligned address 0x7ba8c67e00dc for type 'word64', which requires 8 byte alignment
scripts/unit.log:wolfcrypt/src/wc_slhdsa.c:1420:9: runtime error: load of misaligned address 0x7ba8c67e00dc for type 'word64', which requires 8 byte alignment
scripts/unit.log:wolfcrypt/src/wc_slhdsa.c:1420:9: runtime error: load of misaligned address 0x7ba8c67e00dc for type 'word64', which requires 8 byte alignment
f96044f32c (<sean@wolfssl.com> 2026-02-27 11:51:05 +1000 1710)         SHAKE256_SET_SEED_HA_X4_32(fixed, pk_seed, addr);
scripts/unit.log:wolfcrypt/src/wc_slhdsa.c:1710:9: runtime error: load of misaligned address 0x7ba8c67000ec for type 'word64', which requires 8 byte alignment
scripts/unit.log:wolfcrypt/src/wc_slhdsa.c:1710:9: runtime error: load of misaligned address 0x7ba8c67000ec for type 'word64', which requires 8 byte alignment
scripts/unit.log:wolfcrypt/src/wc_slhdsa.c:1710:9: runtime error: load of misaligned address 0x7ba8c67000ec for type 'word64', which requires 8 byte alignment
scripts/unit.log:wolfcrypt/src/wc_slhdsa.c:1710:9: runtime error: load of misaligned address 0x7ba8c67000ec for type 'word64', which requires 8 byte alignment
f96044f32c (<sean@wolfssl.com> 2026-02-27 11:51:05 +1000 1481)         SHAKE256_SET_SEED_HA_X4_32(fixed, pk_seed, addr);
scripts/unit.log:wolfcrypt/src/wc_slhdsa.c:1481:9: runtime error: load of misaligned address 0x7ba8c67000ec for type 'word64', which requires 8 byte alignment
scripts/unit.log:wolfcrypt/src/wc_slhdsa.c:1481:9: runtime error: load of misaligned address 0x7ba8c67000ec for type 'word64', which requires 8 byte alignment
scripts/unit.log:wolfcrypt/src/wc_slhdsa.c:1481:9: runtime error: load of misaligned address 0x7ba8c67000ec for type 'word64', which requires 8 byte alignment
scripts/unit.log:wolfcrypt/src/wc_slhdsa.c:1481:9: runtime error: load of misaligned address 0x7ba8c67000ec for type 'word64', which requires 8 byte alignment
    scenario started 2026-03-05T17:19:42.101134Z, real elapsed 1m34.823358s
    quantum-safe-wolfssl-all-intelasm-sp-asm-sanitizer fail_analytic_check
    failed config: 'EXTRA_CPPFLAGS=-Werror' '--srcdir' '.' '--disable-jobserver' '--enable-option-checking=fatal' '--enable-all' '--enable-acert' '--enable-dtls13' '--enable-dtls-mtu' '--enable-dtls-frag-ch' '--enable-dtlscid' '--enable-quic' '--with-sys-crypto-policy' '--enable-intelasm' '--enable-sp-asm' '--enable-experimental' '--enable-kyber=yes,original' '--enable-lms' '--enable-xmss' '--enable-dilithium' '--enable-slhdsa' '--enable-dual-alg-certs' '--disable-qt' 'CC=gcc-16' 'LDFLAGS=-g -fno-omit-frame-pointer -fsanitize-recover=all -fsanitize=address,pointer-subtract,leak,undefined,float-cast-overflow,float-divide-by-zero,bounds-strict -fsanitize-recover=all ' 'CFLAGS=-DTEST_ALWAYS_RUN_TO_END -DWC_SIPHASH_NO_ASM -DWC_DEBUG_CIPHER_LIFECYCLE -g -fno-omit-frame-pointer -fsanitize=address,pointer-subtract,leak,undefined,float-cast-overflow,float-divide-by-zero,bounds-strict -fsanitize-recover=all --param=max-vartrack-size=128000000' 'CPPFLAGS=-DNO_WOLFSSL_CIPHER_SUITE_TEST -DWOLFSSL_OLD_PRIME_CHECK -pedantic -Wdeclaration-after-statement -Wnull-dereference -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE'
    BUILD_ENV: 'FAIL_BUILD_CODENAME=fail_analytic_build' 'MAX_FIPS_CODE_SZ=10000000'
    RUN_ENV: 'LD_LIBRARY_PATH=/tmp/tmp.4346_28411/wolfssl_test_workdir.40936/wolfssl/src/.libs:/usr/lib/gcc/x86_64-pc-linux-gnu/16:/usr/lib/gcc/x86_64-pc-linux-gnu/16/32' 'ASAN_OPTIONS=halt_on_error=0 color=always log_path=sanitizer_log.asan ' 'UBSAN_OPTIONS=halt_on_error=0 color=always log_path=sanitizer_log.ubsan ' 'LSAN_OPTIONS=halt_on_error=0 color=always log_path=sanitizer_log.lsan ' 'MSAN_OPTIONS=halt_on_error=0 color=always log_path=sanitizer_log.msan ' 'TSAN_OPTIONS=halt_on_error=0 color=always log_path=sanitizer_log.tsan '

CMakeLists.txt Outdated
"no" "yes;no")

# SLH-DSA
add_option(WOLFSSL_HAVE_SLHDSA
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be WOLFSSL_SLHDSA, not WOLFSSL_HAVE_SLHDSA.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed


if test "$ENABLED_SLHDSA" != "no"
then
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_HAVE_LMS"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Whoops, you removed the setup for -DWOLFSSL_HAVE_LMS. Need to restore this, and the if line that preceded it., and the setup that follows.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

]
)

if test "$ENABLED_LMS" != "no"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Restore this -- see below.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

Comment on lines -2138 to -2140
# Use hash-sigs LMS lib if enabled.
if test "$ENABLED_LIBLMS" = "yes"; then
ENABLED_WC_LMS=no
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

restore

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SLHDSA_PARAM_192F"
else
ENABLED_WC_LMS=yes
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_WC_LMS"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

restore

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

@SparkiDev
Copy link
Contributor Author

Unaligned access only compiled when Intel x64

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 17 out of 22 changed files in this pull request and generated 6 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

JacobBarthelmeh
JacobBarthelmeh previously approved these changes Mar 6, 2026
Copy link
Contributor

@JacobBarthelmeh JacobBarthelmeh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Had a nit. comment about the dates in comments for copyright. Compiled and tested the addition this is the results of benchmarks on my Mac.

bash-3.2$ ./wolfcrypt/benchmark/benchmark -slhdsa-shake256f -slhdsa-shake256s -slhdsa-shake128s -slhdsa-shake128f -slhdsa-shake192s -slhdsa-shake192f
------------------------------------------------------------------------------
 wolfSSL version 5.8.4
------------------------------------------------------------------------------
Math: 	Multi-Precision: Wolf(SP) no-dyn-stack word-size=64 bits=4096 sp_int.c
	Single Precision: ecc 256 384 521 rsa/dh 2048 3072 4096 asm sp_x86_64.c
	Assembly Speedups: INTELASM ALIGN X86_64_BUILD
wolfCrypt Benchmark (block bytes 1048576, min 1.0 sec each)
SLH-DSA-S   128      gen        17 ops took 1.031 sec, avg 60.640 ms,    16.491 ops/sec, 2474040126 cycles 145531772.1 Cycles/op
SLH-DSA-S   128     sign         3 ops took 1.427 sec, avg 475.805 ms,     2.102 ops/sec, 3425702316 cycles 1141900772.0 Cycles/op
SLH-DSA-S   128   verify      1967 ops took 1.000 sec, avg 0.509 ms,  1966.455 ops/sec, 2400599522 cycles  1220437.0 Cycles/op
SLH-DSA-F   128      gen       924 ops took 1.001 sec, avg 1.083 ms,   923.175 ops/sec, 2402081194 cycles  2599655.0 Cycles/op
SLH-DSA-F   128     sign        35 ops took 1.005 sec, avg 28.712 ms,    34.829 ops/sec, 2411744528 cycles 68906986.5 Cycles/op
SLH-DSA-F   128   verify       632 ops took 1.001 sec, avg 1.584 ms,   631.359 ops/sec, 2402369678 cycles  3801217.8 Cycles/op
SLH-DSA-S   192      gen        11 ops took 1.080 sec, avg 98.175 ms,    10.186 ops/sec, 2591753444 cycles 235613949.5 Cycles/op
SLH-DSA-S   192     sign         2 ops took 1.920 sec, avg 959.918 ms,     1.042 ops/sec, 4607478188 cycles 2303739094.0 Cycles/op
SLH-DSA-S   192   verify       971 ops took 1.000 sec, avg 1.030 ms,   970.884 ops/sec, 2400222072 cycles  2471907.4 Cycles/op
SLH-DSA-F   192      gen       513 ops took 1.001 sec, avg 1.950 ms,   512.703 ops/sec, 2401324050 cycles  4680943.6 Cycles/op
SLH-DSA-F   192     sign        18 ops took 1.013 sec, avg 56.291 ms,    17.765 ops/sec, 2431718560 cycles 135095475.6 Cycles/op
SLH-DSA-F   192   verify       306 ops took 1.003 sec, avg 3.277 ms,   305.194 ops/sec, 2406272708 cycles  7863636.3 Cycles/op
SLH-DSA-S   256      gen        14 ops took 1.032 sec, avg 73.684 ms,    13.571 ops/sec, 2475709534 cycles 176836395.3 Cycles/op
SLH-DSA-S   256     sign         2 ops took 1.904 sec, avg 951.945 ms,     1.050 ops/sec, 4569213460 cycles 2284606730.0 Cycles/op
SLH-DSA-S   256   verify       777 ops took 1.000 sec, avg 1.287 ms,   776.756 ops/sec, 2400688410 cycles  3089689.1 Cycles/op
SLH-DSA-F   256      gen       210 ops took 1.004 sec, avg 4.781 ms,   209.165 ops/sec, 2409512442 cycles 11473868.8 Cycles/op
SLH-DSA-F   256     sign        10 ops took 1.009 sec, avg 100.869 ms,     9.914 ops/sec, 2420792050 cycles 242079205.0 Cycles/op
SLH-DSA-F   256   verify       319 ops took 1.002 sec, avg 3.141 ms,   318.355 ops/sec, 2404798402 cycles  7538553.0 Cycles/op
Benchmark complete

@@ -0,0 +1,1174 @@
/* test_slhdsa.c
*
* Copyright (C) 2006-2025 wolfSSL Inc.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit. should be 2026 now.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

Adding implementation of SLH-DSA.
Included optimizations for Intel x64.
Some tests added.
@SparkiDev
Copy link
Contributor Author

retest this please

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

For This Release Release version 5.9.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants