Skip to content

SigstoreBundle::verify(&trust_bundle, artifact_digest) — in-library offline bundle verify #231

Description

@avrabe

Split off from #219 / REQ-23 (real offline keyless verification), which landed the offline engine for AirGappedVerifier but deliberately deferred this second public API.

Ask

container::bundle::SigstoreBundle (src/lib/src/container/bundle.rs) is currently export-only (serialization adapter so external cosign verify-blob --bundle can consume wsc signatures). There is no in-library verify — CosignDelegator only shells out to the cosign binary and only handles registry image refs.

Add SigstoreBundle::verify(&self, trust_bundle: &airgapped::TrustBundle, artifact_digest: &[u8; 32]) -> Result<...> that decodes the bundle's x509_certificate_chain + tlog_entries, reconstructs a KeylessSignature-equivalent, and delegates to the same offline engine REQ-23 built (CertificatePool::from_pem_authorities + RekorKeyring::from_pem_logs + P-256 verify_prehash + verify_rekor_body_binds_to_bundle). It must reuse that engine, not reimplement it.

Why separate from REQ-23

It's a second public API on a different type with its own DER-decode/bundle-format path; keeping it out kept REQ-23's verifier change focused and reviewable. Scoped as its own requirement so the bundle-format edge cases (v0.3 protobuf JSON shape, tlog entry selection) get their own tests.

Depends on

REQ-23 (merged, main 255a597) — the offline engine this delegates to.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions