fix: LMOTS pattern, add HSS variant (LMS family) - #1029
Conversation
Align LMOTS with RFC 8554 Table 1 (N and W, not tree height) and add the HSS levels pattern from RFC 8554 §6 / NIST SP 800-208. Signed-off-by: Mehrn0ush <mehrnoush.vaseghi@gmail.com>
Would there be any way to express that? Dependencies? Note for reviewers, RFC 8554 explicitly allows a lot of flexibility:
|
|
Hi, |
Hi,
LMOTS had a treeHeight parameter it shouldn't — LM-OTS doesn't use a Merkle tree, so there's no height involved. Swapped it for the Winternitz parameter w, which is what actually distinguishes the RFC's parameter sets (LMOTS_SHA256_N32_W1/W2/W4/W8).
Also added HSS, which was missing entirely. It's just the multi-level LMS construction, parameterized by number of levels (L), so the pattern is intentionally minimal — no hash/M/H, since those come from whichever LMS parameter set each level uses.
LMS itself was already correct.
One question — LMOTS still reuses {bytesPerNode} for its N parameter, but RFC 8554 calls this n — the LM-OTS hash output length, not a node value (LM-OTS has no tree nodes). Should this be renamed to something like {hashOutputLength} on LMOTS, keeping {bytesPerNode} only on LMS where it's accurate? Didn't want to bundle a naming change into this fix, so leaving it open — happy to push a follow-up if there's agreement either way.
Closes #1028.