Expand description
The verifying half of super::UbftEngine: one verify core behind a
request stream.
§A request
beat 0 header: byte 0 key slot (0..16), bytes 4..8 tag (LE32)
beats 1..26 the 26-beat frame, exactly as the signer sent it (tlast on 26)The header goes into a tag FIFO; the frame’s beats go to the
VerifyCore with the key slot
beside beat 0 (the certificate cache needs it there). The core answers in
request order, so the verdict’s tag is always the FIFO’s head.
At most VERIFY_IN_FLIGHT requests are inside at once (the core’s
contexts); a header waits while that many are.
§Session epochs
A one-time key’s frame names its signer’s epoch in the certificate. The
host sets each key slot’s epoch for this session (EPOCH{s}) and the
slots to enforce (EPOCH_MASK); a record from any other epoch of that
signer gets FORMAT. Without it, a frame signed in an earlier session
under the same certificate key would still verify.
§Announced certificates
A second stream, s_axis_cert, takes a peer’s batch certificate ahead
of its records: a header beat (byte 0 key slot), the 64-byte
commitment, the 64-byte signature (tlast). The verify core looks it up
between records (a warm lookup, see crate::verify::certs) and starts
its Ed25519 check, so the batch’s first record finds it checked.
A frame whose 26th beat does not carry tlast, or that ends early, sets
the framing fault bit. The adapter keeps counting 26 beats, so it stays
aligned with what the core received; the host should treat the session
as broken.
Structs§
- Ubft
Verifier - The verifying half.
- Verifier
In - Verifier inputs.
- Verifier
Out - Verifier outputs.
Functions§
- ubft_
verifier_ kernel - The verifier’s logic.