@@ -1141,6 +1141,79 @@ then
11411141fi
11421142
11431143
1144+ # XMSS
1145+ AC_ARG_ENABLE ( [ xmss] ,
1146+ [ AS_HELP_STRING ( [ --enable-xmss] ,[ Enable stateful XMSS/XMSS^MT signatures (default: disabled)] ) ] ,
1147+ [ ENABLED_XMSS=$enableval ] ,
1148+ [ ENABLED_XMSS=no ]
1149+ )
1150+
1151+ ENABLED_WC_XMSS=no
1152+ for v in `echo $ENABLED_XMSS | tr "," " "`
1153+ do
1154+ case $v in
1155+ yes)
1156+ ;;
1157+ no)
1158+ ;;
1159+ verify-only)
1160+ XMSS_VERIFY_ONLY=yes
1161+ AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_XMSS_VERIFY_ONLY -DXMSS_VERIFY_ONLY"
1162+ ;;
1163+ wolfssl)
1164+ ENABLED_WC_XMSS=yes
1165+ AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_WC_XMSS"
1166+ ;;
1167+ *)
1168+ AC_MSG_ERROR ( [ Invalid choice for XMSS [ ] : $ENABLED_XMSS.] )
1169+ break;;
1170+ esac
1171+ done
1172+
1173+ if test "$ENABLED_XMSS" != "no"
1174+ then
1175+ AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_HAVE_XMSS"
1176+
1177+ if test "$ENABLED_WC_XMSS" = "no";
1178+ then
1179+ # Default is to use hash-sigs XMSS lib. Make sure it's enabled.
1180+ if test "$ENABLED_LIBXMSS" = "no"; then
1181+ AC_MSG_ERROR ( [ The default implementation for XMSS is the xmss-reference lib.
1182+ Please use --with-libxmss.] )
1183+ fi
1184+ fi
1185+ fi
1186+
1187+ # libxmss
1188+ # Get the path to xmss-reference.
1189+ ENABLED_LIBXMSS="no"
1190+ trylibxmssdir=""
1191+ AC_ARG_WITH ( [ libxmss] ,
1192+ [ AS_HELP_STRING ( [ --with-libxmss=PATH] ,[ PATH to xmss-reference root dir. EXPERIMENTAL!] ) ] ,
1193+ [
1194+ AC_MSG_CHECKING ( [ for libxmss] )
1195+
1196+ trylibxmssdir=$withval
1197+
1198+ if test -e $trylibxmssdir; then
1199+ libxmss_linked=yes
1200+ else
1201+ AC_MSG_ERROR ( [ libxmss isn't found.
1202+ If it's already installed, specify its path using --with-libxmss=/dir/] )
1203+ fi
1204+
1205+ XMSS_ROOT=$trylibxmssdir
1206+
1207+ AC_MSG_RESULT ( [ yes] )
1208+
1209+ AM_CFLAGS="$AM_CFLAGS -DHAVE_LIBXMSS -I$trylibxmssdir"
1210+ ENABLED_LIBXMSS="yes"
1211+ AC_SUBST ( [ XMSS_ROOT] )
1212+ ] ,
1213+ [ XMSS_ROOT=""]
1214+ )
1215+
1216+
11441217# LMS
11451218AC_ARG_ENABLE ( [ lms] ,
11461219 [ AS_HELP_STRING ( [ --enable-lms] ,[ Enable stateful LMS/HSS signatures (default: disabled)] ) ] ,
@@ -8999,6 +9072,7 @@ AM_CONDITIONAL([BUILD_CRL_MONITOR],[test "x$ENABLED_CRL_MONITOR" = "xyes"])
89999072AM_CONDITIONAL([ BUILD_USER_RSA] ,[ test "x$ENABLED_USER_RSA" = "xyes"] )
90009073AM_CONDITIONAL([ BUILD_USER_CRYPTO] ,[ test "x$ENABLED_USER_CRYPTO" = "xyes"] )
90019074AM_CONDITIONAL([ BUILD_LIBLMS] ,[ test "x$ENABLED_LIBLMS" = "xyes"] )
9075+ AM_CONDITIONAL([ BUILD_LIBXMSS] ,[ test "x$ENABLED_LIBXMSS" = "xyes"] )
90029076AM_CONDITIONAL([ BUILD_LIBOQS] ,[ test "x$ENABLED_LIBOQS" = "xyes"] )
90039077AM_CONDITIONAL([ BUILD_WNR] ,[ test "x$ENABLED_WNR" = "xyes"] )
90049078AM_CONDITIONAL([ BUILD_SRP] ,[ test "x$ENABLED_SRP" = "xyes" || test "x$ENABLED_USERSETTINGS" = "xyes"] )
@@ -9431,6 +9505,11 @@ echo " * ED448: $ENABLED_ED448"
94319505echo " * ED448 streaming: $ENABLED_ED448_STREAM"
94329506echo " * LMS: $ENABLED_LMS"
94339507echo " * LMS wolfSSL impl: $ENABLED_WC_LMS"
9508+ echo " * XMSS: $ENABLED_XMSS"
9509+ echo " * XMSS wolfSSL impl: $ENABLED_WC_XMSS"
9510+ if test "$ENABLED_LIBXMSS" = "yes"; then
9511+ echo " * XMSS_ROOT: $XMSS_ROOT"
9512+ fi
94349513echo " * KYBER: $ENABLED_KYBER"
94359514echo " * KYBER wolfSSL impl: $ENABLED_WC_KYBER"
94369515echo " * ECCSI $ENABLED_ECCSI"
@@ -9486,6 +9565,7 @@ echo " * Persistent session cache: $ENABLED_SAVESESSION"
94869565echo " * Persistent cert cache: $ENABLED_SAVECERT"
94879566echo " * Atomic User Record Layer: $ENABLED_ATOMICUSER"
94889567echo " * Public Key Callbacks: $ENABLED_PKCALLBACKS"
9568+ echo " * libxmss: $ENABLED_LIBXMSS"
94899569echo " * liblms: $ENABLED_LIBLMS"
94909570echo " * liboqs: $ENABLED_LIBOQS"
94919571echo " * Whitewood netRandom: $ENABLED_WNR"
0 commit comments