Skip to content

feat: store the Sigstore bundle with each Cosign signature - #66

Merged
muscariello merged 2 commits into
feat/verify-commandfrom
feat/cosign-bundle-referrer
Nov 6, 2026
Merged

muscariello merged 2 commits into
feat/verify-commandfrom
feat/cosign-bundle-referrer

Conversation

@muscariello

@muscariello muscariello commented Nov 5, 2026 •

Copy link
Copy Markdown
Member

Stack: #61 ← #65 ← #67 ← #66. Review and merge in that order; each PR shows only its own commits.

Closes #64. Needs Agent-Card/ai-catalog-rust#64, and Agent-Card/ai-catalog-rust#61 through #67.

Change

  • CLI: cosign sign-blob --bundle already writes a Sigstore bundle; the CLI used to keep only the raw signature from it. It now passes both to attach_cosign_verification_artifacts_with_bundle, so the signature referrer has two layers:
    1. the raw signature (application/vnd.dev.sigstore.cosign.signature), unchanged, for existing consumers;
    2. the bundle (application/vnd.dev.sigstore.bundle.v0.3+json).
  • README: verification now uses cosign verify-blob --bundle, and notes that offline-signed bundles also need --insecure-ignore-tlog=true.

Dependencies

ai-catalog-rust 0.4.0 includes Agent-Card/ai-catalog-rust#61, #63 and #64, and #61 here is bumped to it, so this builds against released crates and CI passes.

Testing

Tested against the released 0.4.0 crates: 67 + 37 tests pass.

  • cargo test passes, including a new assertion that the signature referrer's layers are [signature, bundle].
  • cargo clippy --all-targets --all-features -- -D warnings and cargo fmt --check pass.
  • End to end with cosign v3.1.4: oci export-layout --cosign-key on a two-manifest catalog stores both layers, and cosign verify-blob --key … --bundle <stored bundle> --insecure-ignore-tlog=true <payload> gives Verified OK.

Timestamp note

Now that bundles are stored, the second commit removes #65's temporary --sigstore-services tsa note and its README sentence: log entries and timestamps are kept in the stored bundle.

@muscariello
muscariello force-pushed the feat/cosign-bundle-referrer branch from 5897abe to da8c956 Compare November 5, 2026 15:44
@muscariello
muscariello changed the base branch from feat/trust-manifests-spec-117 to feat/verify-command November 5, 2026 15:44
@muscariello
muscariello force-pushed the feat/cosign-bundle-referrer branch from da8c956 to 6a0c48f Compare November 5, 2026 16:06
@muscariello
muscariello force-pushed the feat/cosign-bundle-referrer branch from 6a0c48f to d5ce617 Compare November 5, 2026 17:23
@muscariello
muscariello marked this pull request as ready for review November 5, 2026 18:44
@muscariello
muscariello requested a review from a team as a code owner November 5, 2026 18:44
@muscariello
muscariello added this pull request to stack #68 November 5, 2026 18:48
msardara
msardara previously approved these changes Nov 5, 2026
`cosign sign-blob --bundle` already writes a bundle, but only the raw
signature was kept. Store the bundle as a second layer of the signature
referrer, so verifiers can use `cosign verify-blob --bundle` instead of
the deprecated `--signature`, and keep any log or timestamp evidence.

Closes #64

Signed-off-by: Luca Muscariello <muscariello@ieee.org>
The signature referrer now stores the Cosign bundle, which keeps any
timestamps requested at signing time.

Refs #64

Signed-off-by: Luca Muscariello <muscariello@ieee.org>
@muscariello
muscariello merged commit 2fe0f42 into main Nov 6, 2026
6 checks passed
@muscariello
muscariello deleted the feat/cosign-bundle-referrer branch November 6, 2026 08:24
@github-actions github-actions Bot mentioned this pull request Oct 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: store Sigstore bundles instead of raw Cosign signatures

3 participants