Expand description
Sidecar fetch + verify + freshness-gate.
Structs§
- Verified
- Type-level witness that bytes passed signature + freshness + schema +
reject_beforegates against trust roots. No public constructor; the only way to obtain one is via averify_*function in this module.#[derive(Deserialize)]is intentionally omitted so the witness cannot be fabricated from a serialized form.
Enums§
Constants§
Traits§
- Signed
Sidecar - Signed sidecar under
ciReleaseKey. Drives the canonicalize -> verify -> freshness-gate pipeline.
Functions§
- canonical_
hash_ from_ bytes - SHA-256 hex of JCS-canonical bytes, from raw input. No parse step, so fields the caller’s proto doesn’t know about are preserved in the canonical bytes - verify side computes the same hash as the producer regardless of additive proto drift.
- compute_
canonical_ hash - SHA-256 hex of JCS-canonical bytes of any serialisable value. Producer
path only. FOOTGUN: verifiers MUST use
canonical_hash_from_bytes- re-serializing a parsed struct drops fields the consumer’s proto doesn’t know about, breaking content-addressing across additive schema changes. - finish_
sidecar_ 🔒verification - Schema gate +
reject_before+ bidirectional freshness check (past + future, both withCLOCK_SKEW_SLACK_SECSslack).reject_beforeruns first so alerts can distinguish compromise from staleness. - hex_
lowercase 🔒 - verify_
artifact - verify_
bootstrap_ nonces - Verify a signed bootstrap-nonces allowlist. Same trust class + freshness semantics as revocations.
- verify_
ecdsa_ 🔒p256 - FOOTGUN: TPM2_Sign emits ~50% high-s ECDSA signatures; we MUST normalise to low-s before verifying or every other signature fails as BadSignature.
- verify_
ed25519 🔒 - LOADBEARING: uses
verify_strict(notverify) - rejects malleable signatures for root-of-trust keys. - verify_
revocations - verify_
rollout_ manifest - Verify a signed rollout manifest. Callers MUST additionally
discriminate the parsed manifest’s canonical RolloutId per RFC-0008
§6.3 against the advertised identifier (
RolloutId::new(&m.channel, &m.channel_ref).as_str()) before consuming any field. - verify_
signature_ 🔒against_ trust_ roots - verify_
signed_ sidecar - Verify any signed sidecar.
trusted_keystried in declaration order, first match wins; unsupported algorithms skipped silently for forward- compat.reject_beforeis strict<(equality accepted).
Type Aliases§
- Verified
Fleet - Concrete alias for the top-level fleet manifest.
- Verified
Rollout Manifest - Concrete alias for the per-rollout signed manifest.