Expand description
Fixed SHA-256 block builders for the performance-profile WOTS datapath.
Every builder returns sixteen already-decoded, big-endian SHA-256 words.
There is no byte-order conversion left for a compression lane to infer.
The builders are deliberately fixed-size: accepting an arbitrary byte
stream in hardware would spend area on length and padding machinery that
the HASHSIGS_SHA256_GENERIC_V1 protocol never exercises.
Structs§
- Chain
Block Input - Input to one randomized WOTS chain transition.
- Endpoint
Pair Input - Two adjacent 32-byte endpoints forming an ordinary public-key hash block.
- PrfBlock
Input - Input to the domain-separated PRF block builder.
- Secret
Data Input - Input to the 64-byte secret-segment first-block builder.
Constants§
- ENDPOINT_
STREAM_ BITS - Bit length of the concatenated 67 public-key endpoints.
- ENDPOINT_
STREAM_ BYTES - Bytes in the concatenated 67 public-key endpoints.
- HASH_
BYTES - Bytes in one SHA-256 digest or WOTS segment.
- HASH_
INPUT_ BITS - Bit length of the 32-byte fixed inputs.
- PRF_
INPUT_ BITS - Bit length of
0x03 || seed || u16_be(index). - SECRET_
INPUT_ BITS - Bit length of a 64-byte secret-segment preimage.
- SHA_
BLOCK_ BYTES - Bytes in one SHA-256 compression block.
Functions§
- bytes_
to_ words_ be_ kernel - Convert 64 explicitly ordered bytes to sixteen big-endian words.
- chain_
block_ kernel - Build the padded 32-byte chain preimage
state XOR mask. - endpoint_
final_ block_ kernel - Build final public-key hash block 33 from endpoint 66 and fixed padding.
- endpoint_
pair_ block_ kernel - Build one ordinary, full data block from two adjacent endpoints.
- hash_
words_ to_ bytes_ kernel - Convert eight SHA-256 words to their canonical 32-byte representation.
- initial_
state_ words_ kernel - Return the FIPS 180-4 SHA-256 initial chaining value in RHDL widths.
- prf_
block_ kernel - Build
0x03 || seed || u16_be(index)plus SHA-256 padding. - private_
seed_ block_ kernel - Build the padded block that hashes a caller-supplied private seed.
- secret_
data_ block_ kernel - Build the first, unpadded data block of
function_key || secret_prf. - secret_
padding_ block_ kernel - Build the fixed second padding block for every 64-byte secret preimage.
- sha256_
32_ byte_ block_ kernel - Build the sole padded block for an arbitrary protocol-owned 32-byte value.
- software_
padded_ block - Independently construct one SHA-256 padded byte block in software.
- software_
words_ from_ bytes - Convert a software byte block into SHA-256 big-endian words.