BoundedAuthorityProtocol.ContentAssertion.V1 (Bounded Authority Protocol v1.0.0)

Copy Markdown View Source

Explicit standalone content-assertion profile: signatures bind exact content digests, caller-supplied context and a bounded window. Verification never grants authority. The caller owns content semantics, trusted key selection, replay and durable lineage state.

Summary

Producers

Assembles and revalidates this profile at the maximum bounds.

Assembles and revalidates this profile under tightened bounds.

Hashes exact profile-parseable compact bytes; establishes no signature or trust.

Produces deterministic signing bytes for this closed profile.

Hashes nonempty exact content bytes in the fixed content domain; never parses them.

Decoders

Decodes bounded fields without evaluating the signature or trust.

Verifiers

Verifies against explicit public trust, complete expected context and time.

Checks pairwise lineage facts; caller owns their provenance, current trust and high-water state.

Producers

assemble_compact(input, signature)

@spec assemble_compact(BoundedAuthorityProtocol.V1.SigningInput.t(), binary()) ::
  {:ok, binary()} | {:error, :invalid}

Assembles and revalidates this profile at the maximum bounds.

assemble_compact(input, signature, limits)

@spec assemble_compact(
  BoundedAuthorityProtocol.V1.SigningInput.t(),
  binary(),
  BoundedAuthorityProtocol.V1.Bounds.t() | map()
) :: {:ok, binary()} | {:error, :invalid}

Assembles and revalidates this profile under tightened bounds.

Since 0.9.0, assembly also refuses, with {:error, :invalid}, a signature that no conforming signer emits: an Ed25519 signature whose S is not below the group order or whose R is non-canonical or of small order (erratum 3). It never rewrites the signature bytes it accepts.

assertion_digest(compact, limits)

@spec assertion_digest(binary(), BoundedAuthorityProtocol.V1.Bounds.t() | map()) ::
  {:ok, binary()} | {:error, :invalid}

Hashes exact profile-parseable compact bytes; establishes no signature or trust.

assertion_signing_input(assertion, limits)

Produces deterministic signing bytes for this closed profile.

content_digest(bytes, limits)

@spec content_digest(binary(), BoundedAuthorityProtocol.V1.Bounds.t() | map()) ::
  {:ok, binary()} | {:error, :invalid}

Hashes nonempty exact content bytes in the fixed content domain; never parses them.

Decoders

decode_assertion(compact, limits)

Decodes bounded fields without evaluating the signature or trust.

Verifiers

verify_assertion(compact, expected)

Verifies against explicit public trust, complete expected context and time.

verify_successor(previous, next, limits)

Checks pairwise lineage facts; caller owns their provenance, current trust and high-water state.