Expand description
§shrimps-signer
Post-quantum SHRIMPS signature scheme implementation: WOTS+ one-time signatures over a Merkle tree, designed for efficient verification inside a STARK prover.
§Parameters (128-bit post-quantum security)
| Parameter | Value | Meaning |
|---|---|---|
| N | 16 | Hash output bytes (SHA-256 truncated) |
| W | 16 | Winternitz parameter (4-bit digits) |
| H | 12 | Merkle tree height (4096 one-time keys) |
| LEN | 35 | WOTS+ chains per signature (32 msg + 3 checksum) |
Compact signature size: 772 bytes (4 + 560 + 192 + 16).
§Usage
use shrimps_signer::shrimps::{keygen, sign, verify};
use shrimps_signer::state::MemoryStateTracker;
let seed = [0u8; 32];
let keypair = keygen(&seed);
let mut state = MemoryStateTracker::new();
let sig = sign(&keypair, b"hello shrimps", 0, &mut state).unwrap();
verify(&keypair.public_key, &keypair.pub_seed, b"hello shrimps", &sig).unwrap();§Modules
params— Scheme constants (N, W, H, LEN, etc.)hash— SHA-256 truncated hashing and PRFwots— WOTS+ key generation, signing, and verificationmerkle— Merkle tree construction, auth paths, and root computationshrimps— Top-level keygen, sign, verify APIstate— Leaf index tracking to prevent one-time signature reuseerror— Error typestestvec— Test vector generation for cross-language validation