Skip to main content

Module verifier

Module verifier 

Source
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§

UbftVerifier
The verifying half.
VerifierIn
Verifier inputs.
VerifierOut
Verifier outputs.

Functions§

ubft_verifier_kernel
The verifier’s logic.