Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -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 <ben@gnunicorn.org>", "Dave Grantham <dwg@linuxprogrammer.org>"]
Expand Down
55 changes: 55 additions & 0 deletions src/table_gen.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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"),
Expand Down
55 changes: 55 additions & 0 deletions table.csv
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading