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.