Implementation of XMSS^MT#5358
Conversation
46d0701 to
4cbc0b8
Compare
8769160 to
f2bba6c
Compare
|
@randombit @reneme I removed the draft status and welcome any feedback |
No I think this should be a specific length, probably |
|
Sorry about all the merge conflicts btw, this recent work was unplanned, the issue of errors on concurrent usage was only recently brought to my attention and that's what is driving the XMSS patches. |
6b52f9c to
3cd9263
Compare
|
I squashed before rebasing to make my life (a lot) easier and now switched to only allowing the ASN.1 OCTET STRING encoding |
95d8525 to
ed2ed6f
Compare
XMSS^MT: implement pubkey and verify XMSS^MT: implement keygen and sign XMSS^MT: refactor common XMSS and XMSS^MT code adjust for leaf idx >32 bit in the index registry add test vector files to git clang tidy XMSS^MT: add some tests and documentation various small fixes Remove XMSS^MT private key shared mutable state (see randombit#5366), disabled for now (see randombit#5369)
…teKey class protected
|
I now added In my understanding this should cover all cases but if a more sophisticated approach is required please let me know. As expected, no leaks are found (I tested the example programs since they only execute one relatively fast parameter set) |
|
@TJ-91 sorry have not and will not have time to review this in time for 3.12 (being released next Tuesday), bumped to 3.13 |
This implements XMSS^MT as a separate module which re-uses internal XMSS functionality.
I refactored and extended XMSS as far as is needed to not re-implement any XMSS functionality. I moved some core XMSS algorithms like tree_hash to
xmss_core_ops.cppand made it independent of XMSS keys and instead pass the required data.Some noteworthy changes:
I changed the XMSS Index Registry to use(outdated)uint64_tas leaf index since XMSS^MT has larger trees (up to a total height of 60). XMSS^MT simply uses the same registry and that should be no problem: The seed and the prf are equally used in XMSS^MT and the keys can be uniquely identified by it.test_pubkey.cppI changedFurther notes:
test_xmssmt.cppto slow tests (ci) and generally left out the parameter sets that have large XMSS subtrees (height 20).size_tis used for the leaf index which can be more than 16 bits. Is there any particular reason why one wouldn't simply useuint32_tor similar?Todo:
closes #5256