@@ -381,7 +381,7 @@ ifeq ($(SIGN),LMS)
381381 endif
382382endif
383383
384- ifeq ( $( SIGN ) ,XMSS)
384+ ifneq (, $( filter $( SIGN ) , XMSS ext_XMSS) )
385385 ifndef XMSS_PARAMS
386386 $(error XMSS_PARAMS not set)
387387 endif
@@ -393,7 +393,32 @@ ifeq ($(SIGN),XMSS)
393393 ifndef IMAGE_HEADER_SIZE
394394 $(error IMAGE_HEADER_SIZE not set)
395395 endif
396+ endif
396397
398+ ifeq ($(SIGN ) ,XMSS)
399+ # Use wc_xmss implementation.
400+ KEYGEN_OPTIONS+ =--xmss
401+ SIGN_OPTIONS+ =--xmss
402+ WOLFCRYPT_OBJS+ = \
403+ ./lib/wolfssl/wolfcrypt/src/wc_xmss.o \
404+ ./lib/wolfssl/wolfcrypt/src/wc_xmss_impl.o \
405+ ./lib/wolfssl/wolfcrypt/src/memory.o \
406+ ./lib/wolfssl/wolfcrypt/src/wc_port.o \
407+ ./lib/wolfssl/wolfcrypt/src/hash.o
408+ CFLAGS+ =-D"WOLFBOOT_SIGN_XMSS" -D"WOLFSSL_HAVE_XMSS" \
409+ -D"WOLFSSL_WC_XMSS" -D"WOLFSSL_WC_XMSS_SMALL" \
410+ -DWOLFBOOT_XMSS_PARAMS=\"$(XMSS_PARAMS ) \" \
411+ -D"IMAGE_SIGNATURE_SIZE"=$(IMAGE_SIGNATURE_SIZE ) \
412+ -D"WOLFSSL_XMSS_VERIFY_ONLY" -D"WOLFSSL_XMSS_MAX_HEIGHT=32"
413+ ifeq ($(WOLFBOOT_SMALL_STACK),1)
414+ $(error WOLFBOOT_SMALL_STACK with XMSS not supported)
415+ else
416+ STACK_USAGE =2688
417+ endif
418+ endif
419+
420+ ifeq ($(SIGN ) ,ext_XMSS)
421+ # Use ext_xmss implementation.
397422 XMSSDIR = lib/xmss
398423 KEYGEN_OPTIONS+ =--xmss
399424 SIGN_OPTIONS+ =--xmss
@@ -411,19 +436,19 @@ ifeq ($(SIGN),XMSS)
411436 ./lib/wolfssl/wolfcrypt/src/wc_port.o \
412437 ./lib/wolfssl/wolfcrypt/src/hash.o
413438 CFLAGS+ =-D"WOLFBOOT_SIGN_XMSS" -D"WOLFSSL_HAVE_XMSS" -D"HAVE_LIBXMSS" \
414- -DXMSS_PARAMS =\"$(XMSS_PARAMS ) \" -I$(XMSSDIR ) \
439+ -DWOLFBOOT_XMSS_PARAMS =\"$(XMSS_PARAMS ) \" -I$(XMSSDIR ) \
415440 -D"IMAGE_SIGNATURE_SIZE"=$(IMAGE_SIGNATURE_SIZE ) \
416441 -D"WOLFSSL_XMSS_VERIFY_ONLY" -D"XMSS_VERIFY_ONLY"
417442 ifeq ($(WOLFBOOT_SMALL_STACK),1)
418443 $(error WOLFBOOT_SMALL_STACK with XMSS not supported)
419444 else
420- STACK_USAGE =18064
445+ STACK_USAGE =2712
421446 endif
422447endif
423448
424449# Only needed if using 3rd party integration. This can be
425450# removed when wc_lms and wc_xmss become default in wolfboot.
426- ifneq (,$(filter $(SIGN ) , LMS XMSS ) )
451+ ifneq (,$(filter $(SIGN ) , LMS ext_XMSS ) )
427452 CFLAGS +=-DWOLFSSL_EXPERIMENTAL_SETTINGS
428453endif
429454
@@ -748,3 +773,7 @@ endif
748773ifeq ($(SIGN_ALG ) ,)
749774 SIGN_ALG =$(SIGN )
750775endif
776+
777+ ifeq ($(SIGN_ALG ) ,ext_XMSS)
778+ SIGN_ALG =XMSS
779+ endif
0 commit comments