Skip to content

feat(sign): implement support for sigstore bundle format#4519

Merged
brandtkeller merged 11 commits intomainfrom
4296_bundle_format_isolation
Jan 28, 2026
Merged

feat(sign): implement support for sigstore bundle format#4519
brandtkeller merged 11 commits intomainfrom
4296_bundle_format_isolation

Conversation

@brandtkeller
Copy link
Copy Markdown
Member

@brandtkeller brandtkeller commented Jan 14, 2026

Description

This is a backwards compatible change to update Zarf to using the sigstore bundle format for signatures when signing.

This sets the default signing options to empty strings for infrastructure endpoints - cementing zarfs stance on ensuring no unintentional data or network calls are made.

This is the first iteration towards ZEP-0053: Bundle format and migration and verification strategy. Intentionally establishing a baseline for compatibility with the bundle format before introducing more complexity in verification.

Packages will now include both a zarf.yaml.sig and a zarf.bundle.sig until we fully deprecate the legacy signature format. Given intent to support verification of the legacy format - it could be as little as multiple releases.

Validated that a package without the legacy signature performs verification as intended.

Additionally this adds a tutorial for package sign/verify for the current baseline.

Related Issue

Fixes #4296
Fixes #4276
Relates to zarf-dev/proposals#53

Checklist before merging

Signed-off-by: Brandt Keller <brandt.keller@defenseunicorns.com>
Signed-off-by: Brandt Keller <brandt.keller@defenseunicorns.com>
Signed-off-by: Brandt Keller <brandt.keller@defenseunicorns.com>
@brandtkeller brandtkeller self-assigned this Jan 14, 2026
@brandtkeller brandtkeller requested review from a team as code owners January 14, 2026 23:23
@netlify
Copy link
Copy Markdown

netlify Bot commented Jan 14, 2026

Deploy Preview for zarf-docs ready!

Name Link
🔨 Latest commit 9d312fc
🔍 Latest deploy log https://app.netlify.com/projects/zarf-docs/deploys/6979328713d7710008d311d9
😎 Deploy Preview https://deploy-preview-4519--zarf-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@brandtkeller brandtkeller changed the title 4296 bundle format isolation feat(sign): implement support for sigstore bundle format Jan 14, 2026
@codecov
Copy link
Copy Markdown

codecov Bot commented Jan 14, 2026

Codecov Report

❌ Patch coverage is 33.33333% with 48 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/pkg/utils/cosign.go 0.00% 21 Missing ⚠️
src/cmd/package.go 0.00% 14 Missing ⚠️
src/pkg/packager/layout/package.go 62.85% 9 Missing and 4 partials ⚠️
Files with missing lines Coverage Δ
src/pkg/packager/publish.go 64.49% <100.00%> (+0.42%) ⬆️
src/pkg/packager/layout/package.go 62.44% <62.85%> (-0.11%) ⬇️
src/cmd/package.go 37.62% <0.00%> (-0.22%) ⬇️
src/pkg/utils/cosign.go 0.00% <0.00%> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Signed-off-by: Brandt Keller <brandt.keller@defenseunicorns.com>
Copy link
Copy Markdown
Member

@AustinAbro321 AustinAbro321 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall logic looks sound, I think the docs could be improved

Comment thread src/pkg/packager/layout/package.go Outdated
@github-project-automation github-project-automation Bot moved this to In progress in Zarf Jan 16, 2026
Signed-off-by: Brandt Keller <brandt.keller@defenseunicorns.com>
Signed-off-by: Brandt Keller <brandt.keller@defenseunicorns.com>
Comment thread site/src/content/docs/ref/package-signing.mdx Outdated

:::caution[Deprecated]

The legacy signature format (`zarf.yaml.sig`) is deprecated in favor of the Sigstore bundle format. While Zarf currently supports both formats for backward compatibility, the legacy format will soon no longer be generated for new signatures. Zarf will retain the ability to verify legacy signatures as a fallback for when a package is signed but no bundle signature is present.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As of this PR being merged it will no longer be generated for any new signatures correct?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

negative - the legacy format is still being generated as of this PR - but I am proposing a shorter timeline to removal (~2 releases).

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah yeah that makes sense, I think it'd advocate for closer to six releases, that way newer packages are still verifiyable on older versions for around 3 months. Either way once this is merged lets make an issue to track the timeline of it being removed

Comment thread site/src/content/docs/ref/package-signing.mdx
Comment thread site/src/content/docs/tutorials/5-package-signing-and-verification.mdx Outdated
Comment thread site/src/content/docs/tutorials/5-package-signing-and-verification.mdx Outdated
Comment thread src/pkg/utils/cosign.go
Copy link
Copy Markdown
Member

@AustinAbro321 AustinAbro321 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Logic looks good, added a few more comments on documentation

Comment thread site/src/content/docs/ref/package-signing.mdx

:::caution[Deprecated]

The legacy signature format (`zarf.yaml.sig`) is deprecated in favor of the Sigstore bundle format. While Zarf currently supports both formats for backward compatibility, the legacy format will soon no longer be generated for new signatures. Zarf will retain the ability to verify legacy signatures as a fallback for when a package is signed but no bundle signature is present.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah yeah that makes sense, I think it'd advocate for closer to six releases, that way newer packages are still verifiyable on older versions for around 3 months. Either way once this is merged lets make an issue to track the timeline of it being removed

Comment thread site/src/content/docs/ref/package-signing.mdx Outdated
Comment thread site/src/content/docs/ref/package-signing.mdx
Signed-off-by: Brandt Keller <brandt.keller@defenseunicorns.com>
@brandtkeller brandtkeller added this pull request to the merge queue Jan 28, 2026
Merged via the queue into main with commit 9c3d446 Jan 28, 2026
31 checks passed
@brandtkeller brandtkeller deleted the 4296_bundle_format_isolation branch January 28, 2026 18:43
@github-project-automation github-project-automation Bot moved this from In progress to Done in Zarf Jan 28, 2026
AustinAbro321 pushed a commit that referenced this pull request Feb 4, 2026
Signed-off-by: Brandt Keller <brandt.keller@defenseunicorns.com>
Signed-off-by: Austin Abro <austinabro321@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

Support for cosign bundle format docs: clarify asymmetric KMS key needed for signing

2 participants