Skip to content

Commit 733b017

Browse files
committed
Retire redundant WOLFSSL_WC_LMS and WOLFSSL_WC_XMSS macros
With external liblms/libxmss support removed, WOLFSSL_WC_LMS and WOLFSSL_WC_XMSS no longer distinguish between backends - they are tautologically equal to WOLFSSL_HAVE_LMS / WOLFSSL_HAVE_XMSS. Retire them to avoid leaving dead vocabulary in the codebase. - configure.ac: drop ENABLED_WC_LMS / ENABLED_WC_XMSS, stop defining -DWOLFSSL_WC_LMS / -DWOLFSSL_WC_XMSS, rename BUILD_WC_LMS / BUILD_WC_XMSS to BUILD_LMS / BUILD_XMSS, and remove the redundant "LMS/XMSS wolfSSL impl" summary echo lines - CMakeLists.txt: drop -DWOLFSSL_WC_LMS definition alongside HAVE_LMS - src/include.am: rename guard conditionals to BUILD_LMS / BUILD_XMSS - Collapse "#if defined(HAVE_LMS) && defined(WC_LMS)" guards in wc_lms.c / wc_lms_impl.c / wc_lms.h and tests/api.c to just HAVE_LMS - Drop the "#if !defined(WOLFSSL_WC_XMSS) #error" guard from wc_xmss.h - settings.h: swap WC_LMS/WC_XMSS for HAVE_LMS/HAVE_XMSS in W64_WRAPPER and int encode/decode feature triggers - test.c/test.h: drop redundant WOLFSSL_WC_LMS clause from the lms_test_verify_only gate - benchmark.c: simplify "!defined(WOLFSSL_WC_LMS) || X" parameter-set gates (keep just X) and remove an XMSS pub-len check that only ran on the external backend - user_settings_pq.h / user_settings_wolfboot_keytools.h: drop WOLFSSL_WC_LMS / WOLFSSL_WC_XMSS defines - ChangeLog: document the macro removal https://claude.ai/code/session_01CEeSVaiiJ6ziyya3CCz5RK
1 parent 9aad6dc commit 733b017

15 files changed

Lines changed: 40 additions & 71 deletions

File tree

CMakeLists.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -700,10 +700,8 @@ add_option(WOLFSSL_LMSSHA256192
700700

701701
if (WOLFSSL_LMS)
702702
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_HAVE_LMS")
703-
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_WC_LMS")
704703

705704
set_wolfssl_definitions("WOLFSSL_HAVE_LMS" RESULT)
706-
set_wolfssl_definitions("WOLFSSL_WC_LMS" RESULT)
707705

708706
if (WOLFSSL_LMSSHA256192)
709707
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_LMS_SHA256_192")

ChangeLog.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@
88
recognized. wolfSSL's own wolfCrypt implementations (`wc_lms` / `wc_xmss`)
99
are now the only supported LMS/HSS and XMSS/XMSS^MT backends and are
1010
selected automatically by `--enable-lms` and `--enable-xmss`.
11+
* The `WOLFSSL_WC_LMS` and `WOLFSSL_WC_XMSS` macros, which previously selected
12+
the wolfCrypt backend over the external libraries, are also retired.
13+
Consumers that defined these in their `user_settings.h` should remove the
14+
`#define` lines; `WOLFSSL_HAVE_LMS` / `WOLFSSL_HAVE_XMSS` are now the only
15+
macros needed to enable the features.
1116

1217
# wolfSSL Release 5.9.1 (Apr. 8, 2026)
1318

configure.ac

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1862,7 +1862,6 @@ then
18621862
fi
18631863

18641864
# XMSS
1865-
ENABLED_WC_XMSS=no
18661865
AC_ARG_ENABLE([xmss],
18671866
[AS_HELP_STRING([--enable-xmss],[Enable stateful XMSS/XMSS^MT signatures (default: disabled)])],
18681867
[ ENABLED_XMSS=$enableval ],
@@ -1890,12 +1889,10 @@ done
18901889

18911890
if test "$ENABLED_XMSS" != "no"
18921891
then
1893-
ENABLED_WC_XMSS=yes
1894-
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_HAVE_XMSS -DWOLFSSL_WC_XMSS"
1892+
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_HAVE_XMSS"
18951893
fi
18961894

18971895
# LMS
1898-
ENABLED_WC_LMS=no
18991896
AC_ARG_ENABLE([lms],
19001897
[AS_HELP_STRING([--enable-lms],[Enable stateful LMS/HSS signatures (default: disabled)])],
19011898
[ ENABLED_LMS=$enableval ],
@@ -1929,8 +1926,7 @@ done
19291926

19301927
if test "$ENABLED_LMS" != "no"
19311928
then
1932-
ENABLED_WC_LMS=yes
1933-
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_HAVE_LMS -DWOLFSSL_WC_LMS"
1929+
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_HAVE_LMS"
19341930
fi
19351931

19361932
# SLH-DSA
@@ -11437,8 +11433,8 @@ AM_CONDITIONAL([BUILD_FE448], [test "x$ENABLED_FE448" = "xyes" || test "x$ENABLE
1143711433
AM_CONDITIONAL([BUILD_GE448], [test "x$ENABLED_GE448" = "xyes" || test "x$ENABLED_USERSETTINGS" = "xyes"])
1143811434
AM_CONDITIONAL([BUILD_CURVE448],[test "x$ENABLED_CURVE448" = "xyes" || test "x$ENABLED_USERSETTINGS" = "xyes"])
1143911435
AM_CONDITIONAL([BUILD_CURVE448_SMALL],[test "x$ENABLED_CURVE448_SMALL" = "xyes" || test "x$ENABLED_USERSETTINGS" = "xyes"])
11440-
AM_CONDITIONAL([BUILD_WC_LMS],[test "x$ENABLED_WC_LMS" != "xno" || test "x$ENABLED_USERSETTINGS" = "xyes"])
11441-
AM_CONDITIONAL([BUILD_WC_XMSS],[test "x$ENABLED_WC_XMSS" != "xno" || test "x$ENABLED_USERSETTINGS" = "xyes"])
11436+
AM_CONDITIONAL([BUILD_LMS],[test "x$ENABLED_LMS" != "xno" || test "x$ENABLED_USERSETTINGS" = "xyes"])
11437+
AM_CONDITIONAL([BUILD_XMSS],[test "x$ENABLED_XMSS" != "xno" || test "x$ENABLED_USERSETTINGS" = "xyes"])
1144211438
AM_CONDITIONAL([BUILD_WC_SLHDSA],[test "x$ENABLED_SLHDSA" != "xno" || test "x$ENABLED_USERSETTINGS" = "xyes"])
1144311439
AM_CONDITIONAL([BUILD_WC_MLKEM],[test "x$ENABLED_WC_MLKEM" != "xno" || test "x$ENABLED_USERSETTINGS" = "xyes"])
1144411440
AM_CONDITIONAL([BUILD_DILITHIUM],[test "x$ENABLED_DILITHIUM" != "xno" || test "x$ENABLED_USERSETTINGS" = "xyes"])
@@ -11985,9 +11981,7 @@ echo " * CURVE448: $ENABLED_CURVE448"
1198511981
echo " * ED448: $ENABLED_ED448"
1198611982
echo " * ED448 streaming: $ENABLED_ED448_STREAM"
1198711983
echo " * LMS: $ENABLED_LMS"
11988-
echo " * LMS wolfSSL impl: $ENABLED_WC_LMS"
1198911984
echo " * XMSS: $ENABLED_XMSS"
11990-
echo " * XMSS wolfSSL impl: $ENABLED_WC_XMSS"
1199111985
echo " * SLH-DSA $ENABLED_SLHDSA"
1199211986
echo " * MLKEM: $ENABLED_MLKEM"
1199311987
echo " * MLKEM wolfSSL impl: $ENABLED_WC_MLKEM"

examples/configs/user_settings_pq.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,6 @@ extern "C" {
105105
/* ------------------------------------------------- */
106106
#if 0 /* LMS signatures */
107107
#define WOLFSSL_HAVE_LMS
108-
#define WOLFSSL_WC_LMS
109108
#ifndef LMS_LEVELS
110109
#define LMS_LEVELS 2
111110
#endif
@@ -122,7 +121,6 @@ extern "C" {
122121
/* ------------------------------------------------- */
123122
#if 0 /* XMSS signatures */
124123
#define WOLFSSL_HAVE_XMSS
125-
#define WOLFSSL_WC_XMSS
126124
#ifndef WOLFSSL_XMSS_MAX_HEIGHT
127125
#define WOLFSSL_XMSS_MAX_HEIGHT 20
128126
#endif

examples/configs/user_settings_wolfboot_keytools.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,6 @@ extern "C" {
131131

132132
#if 1 /* LMS */
133133
#define WOLFSSL_HAVE_LMS
134-
#define WOLFSSL_WC_LMS
135134
#ifndef LMS_LEVELS
136135
#define LMS_LEVELS 1
137136
#endif
@@ -145,7 +144,6 @@ extern "C" {
145144

146145
#if 1 /* XMSS */
147146
#define WOLFSSL_HAVE_XMSS
148-
#define WOLFSSL_WC_XMSS
149147
#ifndef WOLFSSL_XMSS_MAX_HEIGHT
150148
#define WOLFSSL_XMSS_MAX_HEIGHT 32
151149
#endif

src/include.am

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1438,12 +1438,12 @@ endif BUILD_INTELASM
14381438
endif !BUILD_X86_ASM
14391439
endif
14401440

1441-
if BUILD_WC_LMS
1441+
if BUILD_LMS
14421442
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/wc_lms.c
14431443
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/wc_lms_impl.c
14441444
endif
14451445

1446-
if BUILD_WC_XMSS
1446+
if BUILD_XMSS
14471447
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/wc_xmss.c
14481448
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/wc_xmss_impl.c
14491449
endif

tests/api.c

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35037,8 +35037,7 @@ int stopOnFail = 0;
3503735037
int test_wc_LmsKey_sign_verify(void);
3503835038
int test_wc_LmsKey_reload_cache(void);
3503935039

35040-
#if defined(WOLFSSL_HAVE_LMS) && defined(WOLFSSL_WC_LMS) && \
35041-
!defined(WOLFSSL_LMS_VERIFY_ONLY)
35040+
#if defined(WOLFSSL_HAVE_LMS) && !defined(WOLFSSL_LMS_VERIFY_ONLY)
3504235041

3504335042
#include <wolfssl/wolfcrypt/wc_lms.h>
3504435043
#include <wolfssl/wolfcrypt/lms.h>
@@ -35094,7 +35093,7 @@ static int test_lms_init_key(LmsKey* key, WC_RNG* rng)
3509435093
return 0;
3509535094
}
3509635095

35097-
#endif /* WOLFSSL_HAVE_LMS && WOLFSSL_WC_LMS && !WOLFSSL_LMS_VERIFY_ONLY */
35096+
#endif /* WOLFSSL_HAVE_LMS && !WOLFSSL_LMS_VERIFY_ONLY */
3509835097

3509935098
/*
3510035099
* Test basic LMS sign/verify with multiple signings.
@@ -35103,8 +35102,7 @@ static int test_lms_init_key(LmsKey* key, WC_RNG* rng)
3510335102
int test_wc_LmsKey_sign_verify(void)
3510435103
{
3510535104
EXPECT_DECLS;
35106-
#if defined(WOLFSSL_HAVE_LMS) && defined(WOLFSSL_WC_LMS) && \
35107-
!defined(WOLFSSL_LMS_VERIFY_ONLY)
35105+
#if defined(WOLFSSL_HAVE_LMS) && !defined(WOLFSSL_LMS_VERIFY_ONLY)
3510835106
LmsKey key;
3510935107
WC_RNG rng;
3511035108
byte msg[] = "test message for LMS signing";
@@ -35153,8 +35151,7 @@ int test_wc_LmsKey_sign_verify(void)
3515335151
int test_wc_LmsKey_reload_cache(void)
3515435152
{
3515535153
EXPECT_DECLS;
35156-
#if defined(WOLFSSL_HAVE_LMS) && defined(WOLFSSL_WC_LMS) && \
35157-
!defined(WOLFSSL_LMS_VERIFY_ONLY)
35154+
#if defined(WOLFSSL_HAVE_LMS) && !defined(WOLFSSL_LMS_VERIFY_ONLY)
3515835155
LmsKey key;
3515935156
LmsKey vkey;
3516035157
WC_RNG rng;

wolfcrypt/benchmark/benchmark.c

Lines changed: 12 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -11411,10 +11411,8 @@ static void bench_lms_sign_verify(enum wc_LmsParm parm, byte* pub)
1141111411

1141211412
#ifndef WOLFSSL_WC_LMS_SMALL
1141311413
do {
11414-
#ifdef WOLFSSL_WC_LMS
1141511414
key.priv.inited = 0;
1141611415
key.state = WC_LMS_STATE_PARMSET;
11417-
#endif
1141811416
ret = wc_LmsKey_Reload(&key);
1141911417
if (ret) {
1142011418
printf("wc_LmsKey_Reload failed: %d\n", ret);
@@ -11553,7 +11551,7 @@ void bench_lms(void)
1155311551

1155411552
#ifndef WOLFSSL_NO_LMS_SHA256_256
1155511553
#ifdef BENCH_LMS_SLOW_KEYGEN
11556-
#if !defined(WOLFSSL_WC_LMS) || (LMS_MAX_HEIGHT >= 15)
11554+
#if (LMS_MAX_HEIGHT >= 15)
1155711555
bench_lms_keygen(WC_LMS_PARM_L1_H15_W2, pub);
1155811556
bench_lms_sign_verify(WC_LMS_PARM_L1_H15_W2, pub);
1155911557
bench_lms_keygen(WC_LMS_PARM_L1_H15_W4, pub);
@@ -11562,8 +11560,7 @@ void bench_lms(void)
1156211560
#define LMS_PARAMS_BENCHED
1156311561
#endif
1156411562
#endif
11565-
#if !defined(WOLFSSL_WC_LMS) || ((LMS_MAX_LEVELS >= 2) && \
11566-
(LMS_MAX_HEIGHT >= 10))
11563+
#if (LMS_MAX_LEVELS >= 2) && (LMS_MAX_HEIGHT >= 10)
1156711564
bench_lms_keygen(WC_LMS_PARM_L2_H10_W2, pub);
1156811565
bench_lms_sign_verify(WC_LMS_PARM_L2_H10_W2, pub);
1156911566
bench_lms_keygen(WC_LMS_PARM_L2_H10_W4, pub);
@@ -11575,33 +11572,32 @@ void bench_lms(void)
1157511572
bench_lms_sign_verify(WC_LMS_PARM_L2_H10_W8, pub);
1157611573
#endif
1157711574
#endif
11578-
#if !defined(WOLFSSL_WC_LMS) || (LMS_MAX_LEVELS >= 3)
11575+
#if (LMS_MAX_LEVELS >= 3)
1157911576
bench_lms_keygen(WC_LMS_PARM_L3_H5_W4, pub);
1158011577
bench_lms_sign_verify(WC_LMS_PARM_L3_H5_W4, pub);
1158111578
bench_lms_keygen(WC_LMS_PARM_L3_H5_W8, pub);
1158211579
bench_lms_sign_verify(WC_LMS_PARM_L3_H5_W8, pub);
1158311580
#undef LMS_PARAMS_BENCHED
1158411581
#define LMS_PARAMS_BENCHED
1158511582
#endif
11586-
#if !defined(WOLFSSL_WC_LMS) || ((LMS_MAX_LEVELS >= 3) && \
11587-
(LMS_MAX_HEIGHT >= 10))
11583+
#if (LMS_MAX_LEVELS >= 3) && (LMS_MAX_HEIGHT >= 10)
1158811584
bench_lms_keygen(WC_LMS_PARM_L3_H10_W4, pub);
1158911585
bench_lms_sign_verify(WC_LMS_PARM_L3_H10_W4, pub);
1159011586
#endif
11591-
#if !defined(WOLFSSL_WC_LMS) || (LMS_MAX_LEVELS >= 4)
11587+
#if (LMS_MAX_LEVELS >= 4)
1159211588
bench_lms_keygen(WC_LMS_PARM_L4_H5_W8, pub);
1159311589
bench_lms_sign_verify(WC_LMS_PARM_L4_H5_W8, pub);
1159411590
#endif
1159511591

11596-
#if defined(WOLFSSL_WC_LMS) && !defined(LMS_PARAMS_BENCHED)
11592+
#ifndef LMS_PARAMS_BENCHED
1159711593
bench_lms_keygen(WC_LMS_PARM_L1_H5_W1, pub);
1159811594
bench_lms_sign_verify(WC_LMS_PARM_L1_H5_W1, pub);
1159911595
#endif
1160011596
#endif /* !WOLFSSL_NO_LMS_SHA256_256 */
1160111597

1160211598
#ifdef WOLFSSL_LMS_SHA256_192
1160311599
#ifdef BENCH_LMS_SLOW_KEYGEN
11604-
#if !defined(WOLFSSL_WC_LMS) || (LMS_MAX_HEIGHT >= 15)
11600+
#if (LMS_MAX_HEIGHT >= 15)
1160511601
bench_lms_keygen(WC_LMS_PARM_SHA256_192_L1_H15_W2, pub);
1160611602
bench_lms_sign_verify(WC_LMS_PARM_SHA256_192_L1_H15_W2, pub);
1160711603
bench_lms_keygen(WC_LMS_PARM_SHA256_192_L1_H15_W4, pub);
@@ -11610,8 +11606,7 @@ void bench_lms(void)
1161011606
#define LMS_PARAMS_BENCHED
1161111607
#endif
1161211608
#endif
11613-
#if !defined(WOLFSSL_WC_LMS) || ((LMS_MAX_LEVELS >= 2) && \
11614-
(LMS_MAX_HEIGHT >= 10))
11609+
#if (LMS_MAX_LEVELS >= 2) && (LMS_MAX_HEIGHT >= 10)
1161511610
bench_lms_keygen(WC_LMS_PARM_SHA256_192_L2_H10_W2, pub);
1161611611
bench_lms_sign_verify(WC_LMS_PARM_SHA256_192_L2_H10_W2, pub);
1161711612
bench_lms_keygen(WC_LMS_PARM_SHA256_192_L2_H10_W4, pub);
@@ -11623,25 +11618,24 @@ void bench_lms(void)
1162311618
bench_lms_sign_verify(WC_LMS_PARM_SHA256_192_L2_H10_W8, pub);
1162411619
#endif
1162511620
#endif
11626-
#if !defined(WOLFSSL_WC_LMS) || (LMS_MAX_LEVELS >= 3)
11621+
#if (LMS_MAX_LEVELS >= 3)
1162711622
bench_lms_keygen(WC_LMS_PARM_SHA256_192_L3_H5_W4, pub);
1162811623
bench_lms_sign_verify(WC_LMS_PARM_SHA256_192_L3_H5_W4, pub);
1162911624
bench_lms_keygen(WC_LMS_PARM_SHA256_192_L3_H5_W8, pub);
1163011625
bench_lms_sign_verify(WC_LMS_PARM_SHA256_192_L3_H5_W8, pub);
1163111626
#undef LMS_PARAMS_BENCHED
1163211627
#define LMS_PARAMS_BENCHED
1163311628
#endif
11634-
#if !defined(WOLFSSL_WC_LMS) || ((LMS_MAX_LEVELS >= 3) && \
11635-
(LMS_MAX_HEIGHT >= 10))
11629+
#if (LMS_MAX_LEVELS >= 3) && (LMS_MAX_HEIGHT >= 10)
1163611630
bench_lms_keygen(WC_LMS_PARM_SHA256_192_L3_H10_W4, pub);
1163711631
bench_lms_sign_verify(WC_LMS_PARM_SHA256_192_L3_H10_W4, pub);
1163811632
#endif
11639-
#if !defined(WOLFSSL_WC_LMS) || (LMS_MAX_LEVELS >= 4)
11633+
#if (LMS_MAX_LEVELS >= 4)
1164011634
bench_lms_keygen(WC_LMS_PARM_SHA256_192_L4_H5_W8, pub);
1164111635
bench_lms_sign_verify(WC_LMS_PARM_SHA256_192_L4_H5_W8, pub);
1164211636
#endif
1164311637

11644-
#if defined(WOLFSSL_WC_LMS) && !defined(LMS_PARAMS_BENCHED)
11638+
#ifndef LMS_PARAMS_BENCHED
1164511639
bench_lms_keygen(WC_LMS_PARM_SHA256_192_L1_H5_W1, pub);
1164611640
bench_lms_sign_verify(WC_LMS_PARM_SHA256_192_L1_H5_W1, pub);
1164711641
#endif
@@ -11722,13 +11716,6 @@ static void bench_xmss_sign_verify(const char * params)
1172211716
printf("wc_XmssKey_GetPubLen failed: %d\n", ret);
1172311717
goto exit_xmss_sign_verify;
1172411718
}
11725-
#ifndef WOLFSSL_WC_XMSS
11726-
if (pkSz != XMSS_SHA256_PUBLEN) {
11727-
printf("error: xmss pub len: got %u, expected %d\n", pkSz,
11728-
XMSS_SHA256_PUBLEN);
11729-
goto exit_xmss_sign_verify;
11730-
}
11731-
#endif
1173211719

1173311720
ret = wc_XmssKey_GetPrivLen(&key, &skSz);
1173411721
if (ret != 0 || skSz <= 0) {

wolfcrypt/src/wc_lms.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
#include <wolfssl/wolfcrypt/libwolfssl_sources.h>
2323

24-
#if defined(WOLFSSL_HAVE_LMS) && defined(WOLFSSL_WC_LMS)
24+
#ifdef WOLFSSL_HAVE_LMS
2525
#include <wolfssl/wolfcrypt/wc_lms.h>
2626

2727
#ifdef NO_INLINE
@@ -1358,4 +1358,4 @@ const byte * wc_LmsKey_GetKidFromPrivRaw(const byte * priv, word32 privSz)
13581358

13591359
#endif
13601360

1361-
#endif /* WOLFSSL_HAVE_LMS && WOLFSSL_WC_LMS */
1361+
#endif /* WOLFSSL_HAVE_LMS */

wolfcrypt/src/wc_lms_impl.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
#include <wolfcrypt/src/misc.c>
4949
#endif
5050

51-
#if defined(WOLFSSL_HAVE_LMS) && defined(WOLFSSL_WC_LMS)
51+
#ifdef WOLFSSL_HAVE_LMS
5252

5353
/* Length of R in bytes. */
5454
#define LMS_R_LEN 4
@@ -3730,5 +3730,5 @@ int wc_hss_verify(LmsState* state, const byte* pub, const byte* msg,
37303730
return ret;
37313731
}
37323732

3733-
#endif /* WOLFSSL_HAVE_LMS && WOLFSSL_WC_LMS */
3733+
#endif /* WOLFSSL_HAVE_LMS */
37343734

0 commit comments

Comments
 (0)