Skip to main content

Crate shrimps_signer

Crate shrimps_signer 

Source
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)

ParameterValueMeaning
N16Hash output bytes (SHA-256 truncated)
W16Winternitz parameter (4-bit digits)
H12Merkle tree height (4096 one-time keys)
LEN35WOTS+ 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 PRF
  • wots — WOTS+ key generation, signing, and verification
  • merkle — Merkle tree construction, auth paths, and root computation
  • shrimps — Top-level keygen, sign, verify API
  • state — Leaf index tracking to prevent one-time signature reuse
  • error — Error types
  • testvec — Test vector generation for cross-language validation

Modules§

error
hash
merkle
params
SHRIMPS compact path parameters.
shrimps
state
testvec
wots