feat: add ML-DSA post-quantum signature type to SLIP-0010 standard - #1968
feat: add ML-DSA post-quantum signature type to SLIP-0010 standard#1968manel1874 wants to merge 1 commit into
Conversation
|
Thanks for your contribution. I haven't had time to look into this yet, but want to mention two things:
|
Perhaps making a new SLIP that creates a mechanical naming convention for crypto algorithms from NIST and other standards bodies would be more appropriate if there is a concern about overloading SLIP-0010. However each algorithm would need it's own hardened-only or non-hardened capable decision. In addition each algorithm would need to specify it's deterministic seed process. This can be problematic because some algos do not define a fixed deterministic derivation in their specification and rely on community code. |
|
@andrewkozlik thanks for your comments!
|
Adopts the SLIP-0010 ML-DSA extension from satoshilabs/slips#1968 (also QIP-0002 and the Lattice HD Wallets construction): master node HMAC-SHA512(key = "ML-DSA-65 seed", data = BIP-39 seed), standard hardened-only child steps, and the 32-byte node secret used as the FIPS 204 seed xi. parseSeedPhrase now takes an options object ({ path, keyType }) in addition to the existing path-string form. The SLIP-0010 code moves to utils/hd.ts, parametrized by curve salt, and is verified against the official ed25519 vectors and the slips#1968 ML-DSA-65 vectors (which are validated against the NIST ACVP ML-DSA-keyGen-FIPS204 KATs). Path parsing now accepts bare "m" (master node) and rejects indexes >= 2^31, which previously wrapped silently.
This PR updates SLIP-0010 standard by adding the NIST standardized ML-DSA post-quantum signature (FIPS204) to the universal hierarchical derivation.
Approach summary
Test vectors
bedrock-pythonlib ascryptographylibs currently does not support ML-DSA.bedrock-pythonsupports keypair generation from seed and passes the official NIST KATs tests from NIST ACVP Server (RELEASE/v1.1.0.40).Let me know what you think or what can be improved.