Signing¶
Supply-chain signing for release artifacts and images. Two concerns kept separate on purpose:
the operational switch (signing.enabled / signing.auto_provision — may StageFreight
sign, and may it provision an identity) and the trust profiles (signing.profiles — an
id→profile map defining what class of key each profile requires). A publish target references a
profile via signing_profile: <id>.
signing¶
Operational signing configuration (distinct from signing.profiles). Governs whether StageFreight may sign, whether it may create/manage a Tier-0 software identity on your behalf, and where that identity persists. enabled and auto_provision are deliberately separate — "signing is encouraged" and "the system minted an identity for me" are not the same thing.
signing:
enabled: false # nil/true = signing allowed; false = all signing off
auto_provision: false # explicit consent to create/manage a Tier-0 identity
state_dir: # where persistent signing material lives
type: <string> # "volume" | "host_path"
name: <string> # volume name (type: volume)
path: <string> # absolute path (type: host_path)
profiles: # id→profile map
<id>: # entry key = the unique id
requires: [<string>] # trust class(es); v1 enforces exactly one · one of: hardware, key, kms, oidc · required
key: # Class reference blocks — at most one, matching the declared class.
ref: <string> # required
oidc:
issuer: <string>
identity: <string>
kms:
ref: <string> # required
pkcs11: # hardware transport selector (optional; absent = FIDO2 --sk)
ref: <string> # required
physical_presence: <string> # Assurance properties (hardware-class ONLY; enforced in validation). The value is the keyword…
non_exportable: <string>
transparency_log: false # TransparencyLog overrides the per-class default (on for oidc, off otherwise).
attestation: false # Attestation also emits a provenance attestation alongside the signature.
enforce: false # Enforce makes a signing failure fatal to the phase (default: best-effort — warn + record a failed…
allow_fallback: false # AllowFallback permits an explicitly-configured signer that fails to resolve to fall back to the…
enabled: falsedisables ALL signing regardless of profiles/keys.auto_provision: truerequires astate_dir— with no durable storage an ephemeral key would break trust continuity every run. Withauto_provision: false(default), StageFreight never creates key material — it signs only with an explicit COSIGN_KEY/profile. Opinionated always-on belongs in a runner/distribution config, not core. The Tier-0 identity is created once and NEVER silently regenerated: drift, partial state, or an orphan key is fatal. The state_dir must live outside the repository (a key there could be committed, baked into an image, or published).