Expand description
Auditable software oracle for the two HashSigs RHDL cryptographic profiles.
The implementation follows pinned HashSigsRS commit
2d315dd4168804b7cbc51c51a1bf7ca27bf74140. It intentionally models only
the non-Solana WOTS+ primitive. It is suitable for test-vector generation,
differential tests, and checking hardware behavior; it has not been audited
as a production cryptographic library.
§Security boundary
- A private WOTS key may sign one message only. Key reuse can enable forgeries. Signing APIs consume private-key values, but durable one-time use remains the caller’s responsibility.
- Inputs are already-hashed 32-byte messages. Applications must define their own collision-resistant, domain-separated prehash.
HashSigsRSuses shared masks and a simplified address construction. It is not RFC 8391 XMSS, FIPS 205 SLH-DSA, or a many-time signature scheme.LegacyKeccakuses legacy Keccak-256 padding and is byte-compatible with upstream.HashSigsSha256GenericV1is a distinct, incompatible profile.
Structs§
- Fused
Output - Output produced by a constant-work fused sign-and-public-key operation.
- Hash
Sigs Sha256 Generic V1 - Performance profile using
HashSigsRS’s generic construction with SHA-256. - KeyPair
- A generated public/private key pair for one WOTS signing operation.
- Legacy
Keccak - Legacy Keccak-256 profile, byte-compatible with pinned
HashSigsRS. - Length
Error - Error returned when a serialized protocol value has the wrong length.
- Message
Digest - An already-hashed 32-byte message consumed by the WOTS construction.
- Parse
Profile IdError - Error returned when text is not an exact canonical
ProfileIdencoding. - Private
Key - A one-time WOTS private key bound to cryptographic profile
P. - Private
Seed - A caller-supplied 32-byte seed used to derive one WOTS private key.
- Public
Key - A
HashSigsRSpublic key bound to cryptographic profileP. - Signature
- A 67-segment WOTS signature bound to cryptographic profile
P. - Wots
- Stateless
HashSigsRSWOTS+ reference implementation for profileP.
Enums§
- Profile
Id - Stable identifier for a cryptographic profile.
Constants§
- CHAIN_
COUNT - Number of WOTS signature chains (
len = len_1 + len_2). - CHAIN_
STEPS - Number of hash transitions from a secret segment to a chain endpoint.
- CHECKSUM_
DIGITS - Number of base-16 digits representing the WOTS checksum (
len_2). - FUSED_
OUTPUT_ BYTES - Number of bytes in a fused signature and public-key result.
- HASH_
BYTES - Hash output and WOTS security-parameter (
n) size in bytes. - MASK_
COUNT - Number of randomization masks that can affect a
HashSigsRSresult. - MESSAGE_
BYTES - Length of an already-hashed message accepted by WOTS, in bytes.
- MESSAGE_
DIGITS - Number of base-16 digits representing the 256-bit message (
len_1). - PRF_
INPUT_ BYTES - Number of bytes hashed by the domain-separated pseudorandom function.
- SIGNATURE_
BYTES - Number of bytes in a serialized WOTS signature.
- WINTERNITZ_
W - Winternitz parameter (
w) and number of positions in each hash chain.
Traits§
- Profile
- Marker implemented by supported, compile-time-separated hash profiles.
- Reference
Profile - Hash behavior associated with one supported reference profile.
Type Aliases§
- Hash
Value - A 32-byte hash value used internally by the WOTS construction.
- Legacy
Keccak Wots - Byte-compatible oracle for the pinned
HashSigsRSKeccak construction. - Sha256
Generic Wots - Oracle for the incompatible SHA-256 generic performance profile.