diff --git a/CHANGELOG.md b/CHANGELOG.md index 72a7eee..97085ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,13 @@ All notable changes to this project are documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.3.0] - 2026-09-01 + +### Added + +- 55 new codec entries for merkle-tree Lamport signatures (`lamport-merkle-*`): SHA3-512/384/256, SHA2-512/384/256, BLAKE2b-512, BLAKE2s-256, BLAKE3-256, and SHAKE-128/256 across five categories per digest — Pub (`0x1a64`-`0x1a6e`), Priv (`0x1a74`-`0x1a7e`), PrivShare (`0x1a84`-`0x1a8e`), Sig (`0x1a94`-`0x1a9e`), and SigShare (`0x1aa4`-`0x1aae`). +- The `Codec` enum now has 882 variants (up from 827). + ## [1.2.1] - 2026-08-17 - Fix the `multi-trait` dependency to use published crate. diff --git a/Cargo.toml b/Cargo.toml index 3fe433b..1439198 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multi-codec" -version = "1.2.1" +version = "1.3.0" edition = "2024" rust-version = "1.85" authors = ["Benjamin Kampmann ", "Dave Grantham "] diff --git a/src/table_gen.rs b/src/table_gen.rs index 9f4aeb1..43bb8ae 100644 --- a/src/table_gen.rs +++ b/src/table_gen.rs @@ -394,6 +394,61 @@ build_codec_enum! { 0x1a4e => (LamportShake256Sig, "lamport-shake-256-sig"), 0x1a5d => (LamportShake128SigShare, "lamport-shake-128-sig-share"), 0x1a5e => (LamportShake256SigShare, "lamport-shake-256-sig-share"), + 0x1a64 => (LamportMerkleSha3512Pub, "lamport-merkle-sha3-512-pub"), + 0x1a65 => (LamportMerkleSha3384Pub, "lamport-merkle-sha3-384-pub"), + 0x1a66 => (LamportMerkleSha3256Pub, "lamport-merkle-sha3-256-pub"), + 0x1a67 => (LamportMerkleSha2512Pub, "lamport-merkle-sha2-512-pub"), + 0x1a68 => (LamportMerkleSha2384Pub, "lamport-merkle-sha2-384-pub"), + 0x1a69 => (LamportMerkleSha2256Pub, "lamport-merkle-sha2-256-pub"), + 0x1a6a => (LamportMerkleBlake2B512Pub, "lamport-merkle-blake2b-512-pub"), + 0x1a6b => (LamportMerkleBlake2S256Pub, "lamport-merkle-blake2s-256-pub"), + 0x1a6c => (LamportMerkleBlake3256Pub, "lamport-merkle-blake3-256-pub"), + 0x1a6d => (LamportMerkleShake128Pub, "lamport-merkle-shake-128-pub"), + 0x1a6e => (LamportMerkleShake256Pub, "lamport-merkle-shake-256-pub"), + 0x1a74 => (LamportMerkleSha3512Priv, "lamport-merkle-sha3-512-priv"), + 0x1a75 => (LamportMerkleSha3384Priv, "lamport-merkle-sha3-384-priv"), + 0x1a76 => (LamportMerkleSha3256Priv, "lamport-merkle-sha3-256-priv"), + 0x1a77 => (LamportMerkleSha2512Priv, "lamport-merkle-sha2-512-priv"), + 0x1a78 => (LamportMerkleSha2384Priv, "lamport-merkle-sha2-384-priv"), + 0x1a79 => (LamportMerkleSha2256Priv, "lamport-merkle-sha2-256-priv"), + 0x1a7a => (LamportMerkleBlake2B512Priv, "lamport-merkle-blake2b-512-priv"), + 0x1a7b => (LamportMerkleBlake2S256Priv, "lamport-merkle-blake2s-256-priv"), + 0x1a7c => (LamportMerkleBlake3256Priv, "lamport-merkle-blake3-256-priv"), + 0x1a7d => (LamportMerkleShake128Priv, "lamport-merkle-shake-128-priv"), + 0x1a7e => (LamportMerkleShake256Priv, "lamport-merkle-shake-256-priv"), + 0x1a84 => (LamportMerkleSha3512PrivShare, "lamport-merkle-sha3-512-priv-share"), + 0x1a85 => (LamportMerkleSha3384PrivShare, "lamport-merkle-sha3-384-priv-share"), + 0x1a86 => (LamportMerkleSha3256PrivShare, "lamport-merkle-sha3-256-priv-share"), + 0x1a87 => (LamportMerkleSha2512PrivShare, "lamport-merkle-sha2-512-priv-share"), + 0x1a88 => (LamportMerkleSha2384PrivShare, "lamport-merkle-sha2-384-priv-share"), + 0x1a89 => (LamportMerkleSha2256PrivShare, "lamport-merkle-sha2-256-priv-share"), + 0x1a8a => (LamportMerkleBlake2B512PrivShare, "lamport-merkle-blake2b-512-priv-share"), + 0x1a8b => (LamportMerkleBlake2S256PrivShare, "lamport-merkle-blake2s-256-priv-share"), + 0x1a8c => (LamportMerkleBlake3256PrivShare, "lamport-merkle-blake3-256-priv-share"), + 0x1a8d => (LamportMerkleShake128PrivShare, "lamport-merkle-shake-128-priv-share"), + 0x1a8e => (LamportMerkleShake256PrivShare, "lamport-merkle-shake-256-priv-share"), + 0x1a94 => (LamportMerkleSha3512Sig, "lamport-merkle-sha3-512-sig"), + 0x1a95 => (LamportMerkleSha3384Sig, "lamport-merkle-sha3-384-sig"), + 0x1a96 => (LamportMerkleSha3256Sig, "lamport-merkle-sha3-256-sig"), + 0x1a97 => (LamportMerkleSha2512Sig, "lamport-merkle-sha2-512-sig"), + 0x1a98 => (LamportMerkleSha2384Sig, "lamport-merkle-sha2-384-sig"), + 0x1a99 => (LamportMerkleSha2256Sig, "lamport-merkle-sha2-256-sig"), + 0x1a9a => (LamportMerkleBlake2B512Sig, "lamport-merkle-blake2b-512-sig"), + 0x1a9b => (LamportMerkleBlake2S256Sig, "lamport-merkle-blake2s-256-sig"), + 0x1a9c => (LamportMerkleBlake3256Sig, "lamport-merkle-blake3-256-sig"), + 0x1a9d => (LamportMerkleShake128Sig, "lamport-merkle-shake-128-sig"), + 0x1a9e => (LamportMerkleShake256Sig, "lamport-merkle-shake-256-sig"), + 0x1aa4 => (LamportMerkleSha3512SigShare, "lamport-merkle-sha3-512-sig-share"), + 0x1aa5 => (LamportMerkleSha3384SigShare, "lamport-merkle-sha3-384-sig-share"), + 0x1aa6 => (LamportMerkleSha3256SigShare, "lamport-merkle-sha3-256-sig-share"), + 0x1aa7 => (LamportMerkleSha2512SigShare, "lamport-merkle-sha2-512-sig-share"), + 0x1aa8 => (LamportMerkleSha2384SigShare, "lamport-merkle-sha2-384-sig-share"), + 0x1aa9 => (LamportMerkleSha2256SigShare, "lamport-merkle-sha2-256-sig-share"), + 0x1aaa => (LamportMerkleBlake2B512SigShare, "lamport-merkle-blake2b-512-sig-share"), + 0x1aab => (LamportMerkleBlake2S256SigShare, "lamport-merkle-blake2s-256-sig-share"), + 0x1aac => (LamportMerkleBlake3256SigShare, "lamport-merkle-blake3-256-sig-share"), + 0x1aad => (LamportMerkleShake128SigShare, "lamport-merkle-shake-128-sig-share"), + 0x1aae => (LamportMerkleShake256SigShare, "lamport-merkle-shake-256-sig-share"), 0x1d01 => (Kangarootwelve, "kangarootwelve"), 0x2000 => (AesGcm256, "aes-gcm-256"), 0x2001 => (AesGcm128, "aes-gcm-128"), diff --git a/table.csv b/table.csv index b124343..f3c2885 100644 --- a/table.csv +++ b/table.csv @@ -394,6 +394,61 @@ lamport-shake-128-sig, multisig, 0x1a4d, draft, Lamp lamport-shake-256-sig, multisig, 0x1a4e, draft, Lamport signature based on SHAKE256 (512-bit XOF output) lamport-shake-128-sig-share, multisig, 0x1a5d, draft, Lamport signature share based on SHAKE128 and split with Shamir gf256 lamport-shake-256-sig-share, multisig, 0x1a5e, draft, Lamport signature share based on SHAKE256 and split with Shamir gf256 +lamport-merkle-sha3-512-pub, key, 0x1a64, draft, LamportMerkle public key based on SHA3-512 +lamport-merkle-sha3-384-pub, key, 0x1a65, draft, LamportMerkle public key based on SHA3-384 +lamport-merkle-sha3-256-pub, key, 0x1a66, draft, LamportMerkle public key based on SHA3-256 +lamport-merkle-sha2-512-pub, key, 0x1a67, draft, LamportMerkle public key based on SHA2-512 +lamport-merkle-sha2-384-pub, key, 0x1a68, draft, LamportMerkle public key based on SHA2-384 +lamport-merkle-sha2-256-pub, key, 0x1a69, draft, LamportMerkle public key based on SHA2-256 +lamport-merkle-blake2b-512-pub, key, 0x1a6a, draft, LamportMerkle public key based on BLAKE2b-512 +lamport-merkle-blake2s-256-pub, key, 0x1a6b, draft, LamportMerkle public key based on BLAKE2s-256 +lamport-merkle-blake3-256-pub, key, 0x1a6c, draft, LamportMerkle public key based on BLAKE3-256 +lamport-merkle-shake-128-pub, key, 0x1a6d, draft, LamportMerkle public key based on SHAKE128 +lamport-merkle-shake-256-pub, key, 0x1a6e, draft, LamportMerkle public key based on SHAKE256 +lamport-merkle-sha3-512-priv, key, 0x1a74, draft, LamportMerkle private key based on SHA3-512 +lamport-merkle-sha3-384-priv, key, 0x1a75, draft, LamportMerkle private key based on SHA3-384 +lamport-merkle-sha3-256-priv, key, 0x1a76, draft, LamportMerkle private key based on SHA3-256 +lamport-merkle-sha2-512-priv, key, 0x1a77, draft, LamportMerkle private key based on SHA2-512 +lamport-merkle-sha2-384-priv, key, 0x1a78, draft, LamportMerkle private key based on SHA2-384 +lamport-merkle-sha2-256-priv, key, 0x1a79, draft, LamportMerkle private key based on SHA2-256 +lamport-merkle-blake2b-512-priv, key, 0x1a7a, draft, LamportMerkle private key based on BLAKE2b-512 +lamport-merkle-blake2s-256-priv, key, 0x1a7b, draft, LamportMerkle private key based on BLAKE2s-256 +lamport-merkle-blake3-256-priv, key, 0x1a7c, draft, LamportMerkle private key based on BLAKE3-256 +lamport-merkle-shake-128-priv, key, 0x1a7d, draft, LamportMerkle private key based on SHAKE128 +lamport-merkle-shake-256-priv, key, 0x1a7e, draft, LamportMerkle private key based on SHAKE256 +lamport-merkle-sha3-512-priv-share, key, 0x1a84, draft, LamportMerkle private key share based on SHA3-512 and split with Shamir gf256 +lamport-merkle-sha3-384-priv-share, key, 0x1a85, draft, LamportMerkle private key share based on SHA3-384 and split with Shamir gf256 +lamport-merkle-sha3-256-priv-share, key, 0x1a86, draft, LamportMerkle private key share based on SHA3-256 and split with Shamir gf256 +lamport-merkle-sha2-512-priv-share, key, 0x1a87, draft, LamportMerkle private key share based on SHA2-512 and split with Shamir gf256 +lamport-merkle-sha2-384-priv-share, key, 0x1a88, draft, LamportMerkle private key share based on SHA2-384 and split with Shamir gf256 +lamport-merkle-sha2-256-priv-share, key, 0x1a89, draft, LamportMerkle private key share based on SHA2-256 and split with Shamir gf256 +lamport-merkle-blake2b-512-priv-share, key, 0x1a8a, draft, LamportMerkle private key share based on BLAKE2b-512 and split with Shamir gf256 +lamport-merkle-blake2s-256-priv-share, key, 0x1a8b, draft, LamportMerkle private key share based on BLAKE2s-256 and split with Shamir gf256 +lamport-merkle-blake3-256-priv-share, key, 0x1a8c, draft, LamportMerkle private key share based on BLAKE3-256 and split with Shamir gf256 +lamport-merkle-shake-128-priv-share, key, 0x1a8d, draft, LamportMerkle private key share based on SHAKE128 and split with Shamir gf256 +lamport-merkle-shake-256-priv-share, key, 0x1a8e, draft, LamportMerkle private key share based on SHAKE256 and split with Shamir gf256 +lamport-merkle-sha3-512-sig, multisig, 0x1a94, draft, LamportMerkle signature based on SHA3-512 +lamport-merkle-sha3-384-sig, multisig, 0x1a95, draft, LamportMerkle signature based on SHA3-384 +lamport-merkle-sha3-256-sig, multisig, 0x1a96, draft, LamportMerkle signature based on SHA3-256 +lamport-merkle-sha2-512-sig, multisig, 0x1a97, draft, LamportMerkle signature based on SHA2-512 +lamport-merkle-sha2-384-sig, multisig, 0x1a98, draft, LamportMerkle signature based on SHA2-384 +lamport-merkle-sha2-256-sig, multisig, 0x1a99, draft, LamportMerkle signature based on SHA2-256 +lamport-merkle-blake2b-512-sig, multisig, 0x1a9a, draft, LamportMerkle signature based on BLAKE2b-512 +lamport-merkle-blake2s-256-sig, multisig, 0x1a9b, draft, LamportMerkle signature based on BLAKE2s-256 +lamport-merkle-blake3-256-sig, multisig, 0x1a9c, draft, LamportMerkle signature based on BLAKE3-256 +lamport-merkle-shake-128-sig, multisig, 0x1a9d, draft, LamportMerkle signature based on SHAKE128 +lamport-merkle-shake-256-sig, multisig, 0x1a9e, draft, LamportMerkle signature based on SHAKE256 +lamport-merkle-sha3-512-sig-share, multisig, 0x1aa4, draft, LamportMerkle signature share based on SHA3-512 and split with Shamir gf256 +lamport-merkle-sha3-384-sig-share, multisig, 0x1aa5, draft, LamportMerkle signature share based on SHA3-384 and split with Shamir gf256 +lamport-merkle-sha3-256-sig-share, multisig, 0x1aa6, draft, LamportMerkle signature share based on SHA3-256 and split with Shamir gf256 +lamport-merkle-sha2-512-sig-share, multisig, 0x1aa7, draft, LamportMerkle signature share based on SHA2-512 and split with Shamir gf256 +lamport-merkle-sha2-384-sig-share, multisig, 0x1aa8, draft, LamportMerkle signature share based on SHA2-384 and split with Shamir gf256 +lamport-merkle-sha2-256-sig-share, multisig, 0x1aa9, draft, LamportMerkle signature share based on SHA2-256 and split with Shamir gf256 +lamport-merkle-blake2b-512-sig-share, multisig, 0x1aaa, draft, LamportMerkle signature share based on BLAKE2b-512 and split with Shamir gf256 +lamport-merkle-blake2s-256-sig-share, multisig, 0x1aab, draft, LamportMerkle signature share based on BLAKE2s-256 and split with Shamir gf256 +lamport-merkle-blake3-256-sig-share, multisig, 0x1aac, draft, LamportMerkle signature share based on BLAKE3-256 and split with Shamir gf256 +lamport-merkle-shake-128-sig-share, multisig, 0x1aad, draft, LamportMerkle signature share based on SHAKE128 and split with Shamir gf256 +lamport-merkle-shake-256-sig-share, multisig, 0x1aae, draft, LamportMerkle signature share based on SHAKE256 and split with Shamir gf256 kangarootwelve, multihash, 0x1d01, draft, KangarooTwelve is an extendable-output hash function based on Keccak-p aes-gcm-256, encryption, 0x2000, draft, AES Galois/Counter Mode with 256-bit key and 12-byte IV aes-gcm-128, encryption, 0x2001, draft, AES Galois/Counter Mode with 128-bit key and 12-byte IV