Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Architecture decisions

Architecture decisions record stable boundaries and the alternatives rejected at the time. They are not evidence that an implementation met timing or ran on hardware.

ADR 0001: Separate compatibility and performance profiles

ADR 0001: Separate compatibility and performance hash profiles

  • Status: accepted
  • Date: 2026-07-14

Decision

The workspace exposes two incompatible, compile-time-selected profiles. LEGACY_KECCAK uses legacy Keccak-256 padding and must reproduce the pinned HashSigsRS vectors byte for byte. HASHSIGS_SHA256_GENERIC_V1 instantiates the same upstream generic WOTS construction with SHA-256 and is the primary throughput target.

Profile identity is part of key, signature, vector, generated-RTL, and evidence metadata. No API or hardware top may silently interpret one profile as the other.

Rationale

The user explicitly permits a secure hash choice for the performance target. An unrolled Keccak farm needs at least 57 round cells and has an unproven path under the 200,000-LUT cap. Three fully pipelined SHA-256 lanes have adequate theoretical throughput at 250 MHz and allow arithmetic to use U280 DSP48E2 resources. These are architecture projections until Vivado evidence exists.

Security boundary

Both profiles remain the custom upstream WOTS+ construction. They are not XMSS, SLH-DSA, or FIPS 205, and each private key is strictly one-time.