Expand description
Byte-compatible LEGACY_KECCAK fused private-seed signing engine.
This module is intentionally separate from the SHA-256 performance
datapath. It implements the pinned HashSigsRS construction with legacy
Keccak-256 0x01 padding; it is not SHA3-256, XMSS, or SLH-DSA.
LegacyFusedPrivateSeedEngine owns one area-oriented
keccak_rhdl::IterativeKeccak and executes the complete fixed-work fused
operation serially. It accepts an exact 32-byte private seed and an exact
32-byte already-hashed message, captures all 67 32-byte signature segments,
derives the 64-byte public key, and emits the canonical 35-beat 512-bit
result stream. Every accepted operation executes exactly 1,173
Keccak-f[1600] permutations.
§Secret ownership
The seed and derived private-key material live only in resetless internal datapath registers and are never connected to an output port. Resettable control bits make those registers invalid after reset. The input seed is overwritten as soon as its hash request is issued; the derived private key and transient chain secrets are overwritten after the final segment no longer needs them. This is an architectural non-disclosure boundary, not a physical zeroization or side-channel claim. The caller must still ensure that a seed is never submitted twice: WOTS private-key reuse is catastrophic.
§Evidence boundary
Unit tests exercise the fixed block builders and the composed RHDL machine. They do not establish synthesis, timing, utilization, route, side-channel, or physical-zeroization evidence.
Re-exports§
pub use seed_wrapper::legacy_fused_private_seed_kernel;pub use key_wrapper::legacy_fused_private_key_kernel;
Structs§
- Legacy
Chain State Input - Input to
legacy_chain_state_kernel. - Legacy
Endpoint Block Input - Input to
legacy_endpoint_block_state_kernel. - Legacy
Fused Beat - One canonical fused-output stream beat.
- Legacy
Fused Input - Input accepted by
LegacyFusedPrivateSeedEngine. - Legacy
Fused Output - Status and stream output from either explicit legacy fused engine.
- Legacy
Fused Private KeyEngine - Fused legacy signing engine with an explicit private-key ingress.
- Legacy
Fused Private KeyInput - Input accepted by
LegacyFusedPrivateKeyEngine. - Legacy
Fused Private Seed Engine - Fused legacy signing engine with an explicit private-seed ingress.
- Legacy
Output Beat Input - Input to
legacy_output_beat_kernel. - Legacy
PrfState Input - Input to
legacy_prf_state_kernel. - Legacy
Secret State Input - Input to
legacy_secret_state_kernel.
Constants§
- LEGACY_
CHAIN_ STEPS - Hash-chain transitions executed for every signature segment.
- LEGACY_
ENDPOINT_ BLOCKS - Number of 136-byte rate blocks needed for the 2,144-byte endpoint string.
- LEGACY_
FUSED_ OUTPUT_ BEATS - Number of 512-bit result beats.
- LEGACY_
FUSED_ PERMUTATIONS Keccak-f[1600]permutations in one fused private-seed operation.- LEGACY_
FUSED_ PRIVATE_ KEY_ PERMUTATIONS - Permutations when the explicit private-key wrapper bypasses seed hashing.
- LEGACY_
HASH_ BYTES - Bytes in a legacy hash value, private seed, or already-hashed message.
- LEGACY_
MASK_ COUNT - Observable randomization masks used by pinned
HashSigsRS.
Functions§
- legacy_
bytes_ to_ lanes_ kernel - Convert 32 ascending bytes to four little-endian Keccak lanes.
- legacy_
chain_ state_ kernel - Build the padded state for one 32-byte randomized chain transition.
- legacy_
digest_ lanes_ kernel - Extract the first 32 rate bytes from a completed permutation.
- legacy_
endpoint_ block_ state_ kernel - XOR one fixed 136-byte endpoint block into the preceding sponge state.
- legacy_
fused_ private_ key_ kernel - Statically bind a private-key request to the shared legacy datapath.
- legacy_
fused_ private_ seed_ kernel - Statically bind a private-seed request to the shared legacy datapath.
- legacy_
hash32_ state_ kernel - Build the single padded rate state for a 32-byte legacy Keccak hash.
- legacy_
output_ beat_ kernel - Select one canonical signature/public-key output beat.
- legacy_
prf_ state_ kernel - Build the padded state for
0x03 || seed || u16_be(index)(35 bytes). - legacy_
secret_ state_ kernel - Build the padded state for
function_key || secret_prf(64 bytes).
Type Aliases§
- Legacy
Beat Bytes - One 512-bit output transfer in ascending byte-lane order.
- Legacy
Hash Lanes - One 32-byte Keccak digest represented as four little-endian 64-bit lanes.
- Legacy
Mask Store - All 16 observable WOTS randomization masks.
- Legacy
Private Seed Bytes - Exact 32-byte private-seed input in ascending byte order.
- Legacy
Segment Store - All 67 signature or endpoint values in lane order.