@@ -144,6 +144,38 @@ jobs:
144144 jdk_version : ${{ matrix.jdk_version }}
145145 wolfssl_configure : ${{ matrix.wolfssl_configure }}
146146
147+ # ----------------------- LMS / HSS (RFC 8554) ------------------------
148+ # LMS/HSS is verify-only in wolfJCE and requires wolfSSL to be built with
149+ # --enable-lms. It is not pulled in by --enable-all, so it is enabled
150+ # explicitly. The --enable-lms option is comma-separated and selects the
151+ # build variant and hash/parameter families:
152+ # (default) SHA-256/256 parameter sets, sign + verify
153+ # verify-only -> WOLFSSL_LMS_VERIFY_ONLY (wolfJCE production posture)
154+ # small -> WOLFSSL_WC_LMS_SMALL (low-memory, slower codepath)
155+ # sha256-192 -> WOLFSSL_LMS_SHA256_192 (RFC 9858 SHA-256/192 sets)
156+ # shake256 -> WOLFSSL_LMS_SHAKE256 (RFC 9858 SHAKE256 sets)
157+ # The LMS JUnit tests skip per hash family not compiled in (the JNI import
158+ # returns NOT_COMPILED_IN), so each permutation runs the KATs it can and
159+ # skips the rest. SHAKE parameter sets additionally require --enable-sha3.
160+ linux-zulu-lms :
161+ strategy :
162+ matrix :
163+ os : [ 'ubuntu-latest', 'macos-latest' ]
164+ jdk_version : [ '11', '21', '24' ]
165+ wolfssl_configure :
166+ - ' --enable-jni --enable-lms'
167+ - ' --enable-jni --enable-lms=verify-only'
168+ - ' --enable-jni --enable-lms=verify-only,small'
169+ - ' --enable-jni --enable-lms=sha256-192,shake256 --enable-sha3'
170+ - ' --enable-jni --enable-all --enable-lms'
171+ name : ${{ matrix.os }} (Zulu JDK ${{ matrix.jdk_version }}, ${{ matrix.wolfssl_configure }})
172+ uses : ./.github/workflows/linux-common.yml
173+ with :
174+ os : ${{ matrix.os }}
175+ jdk_distro : " zulu"
176+ jdk_version : ${{ matrix.jdk_version }}
177+ wolfssl_configure : ${{ matrix.wolfssl_configure }}
178+
147179 # ------------------ Facebook Infer static analysis -------------------
148180 # Run Facebook infer over PR code, only running on Linux with one
149181 # JDK/version for now.
0 commit comments