#[non_exhaustive]pub struct SignedRelease {Show 13 fields
pub signer: AuthorId,
pub model_ref: ModelRef,
pub manifest: ArtifactManifest,
pub manifest_signature: SignatureEntry,
pub manifest_dsse: DsseEnvelope,
pub aibom: AiBom,
pub aibom_dsse: DsseEnvelope,
pub slsa_statement: InTotoStatement,
pub slsa_dsse: DsseEnvelope,
pub oci_primary: OciArtifactManifest,
pub oci_aibom_referrer: OciArtifactManifest,
pub oci_slsa_referrer: OciArtifactManifest,
pub log_entries: Vec<LogSeq>,
}Expand description
Everything produced by ReleaseBuilder::seal.
#[non_exhaustive] so Phase C additions (countersignatures,
hybrid-sig variants, inclusion proofs, Rekor bundle, Sigstore
certificate chain) can land without breaking downstream
pattern matches or struct-literal constructions.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.signer: AuthorIdAuthor that sealed this release. verify uses this to
require every DSSE signature’s keyid to match
crate::dsse::keyid_for of the same signer.
model_ref: ModelRefAIBOM-flavoured reference to the primary artifact.
manifest: ArtifactManifestArtifact manifest (primary + auxiliaries).
manifest_signature: SignatureEntryRFC-0022 signature over manifest.
manifest_dsse: DsseEnvelopeDSSE envelope for the manifest signature.
aibom: AiBomAIBOM record.
aibom_dsse: DsseEnvelopeDSSE envelope wrapping aibom.
slsa_statement: InTotoStatementin-toto Statement carrying the SLSA v1.1 provenance.
slsa_dsse: DsseEnvelopeDSSE envelope wrapping slsa_statement.
oci_primary: OciArtifactManifestOCI Image Manifest v1.1 for the primary artifact.
oci_aibom_referrer: OciArtifactManifestOCI referrer manifest for aibom_dsse.
oci_slsa_referrer: OciArtifactManifestOCI referrer manifest for slsa_dsse.
log_entries: Vec<LogSeq>Log positions for the three appended entries.
Implementations§
Source§impl SignedRelease
impl SignedRelease
Sourcepub fn from_components(parts: SignedReleaseComponents) -> Self
pub fn from_components(parts: SignedReleaseComponents) -> Self
Reconstruct a SignedRelease from its component parts
(issue #28). Complement to ReleaseBuilder::seal — the
cold-storage audit path: a verifier that loaded the
per-component artifacts from disk can reassemble the
aggregate and call Self::verify.
Takes a SignedReleaseComponents struct so every input is
named at the call site; the compiler catches missing or
duplicated fields at compile time. See the
SignedReleaseComponents doc for the rationale and the
audit-pass WARN that motivated the change.
Sourcepub fn verify(&self, registry: &KeyRegistry, at_version: u64) -> Result<()>
pub fn verify(&self, registry: &KeyRegistry, at_version: u64) -> Result<()>
Verify every component of the release against verifying_key.
§Errors
Returns Err if any signature fails to verify, any OCI
digest is inconsistent, or the AIBOM / SLSA linkages to the
manifest are broken. Resolves every signing key from
registry at at_version.
Trait Implementations§
Source§impl Clone for SignedRelease
impl Clone for SignedRelease
Source§fn clone(&self) -> SignedRelease
fn clone(&self) -> SignedRelease
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for SignedRelease
impl RefUnwindSafe for SignedRelease
impl Send for SignedRelease
impl Sync for SignedRelease
impl Unpin for SignedRelease
impl UnsafeUnpin for SignedRelease
impl UnwindSafe for SignedRelease
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more