Skip to content

fix(deps): update rust crate sigstore-verify to 0.14 - #14019

Merged
jdx merged 1 commit into
mainfrom
claude/sigstore-verify-0.14
Oct 6, 2026
Merged

jdx merged 1 commit into
mainfrom
claude/sigstore-verify-0.14

Conversation

@jdx

@jdx jdx commented Oct 6, 2026 •

Copy link
Copy Markdown
Owner

https://entire.io/gh/jdx/mise/trails/464

Summary

Updates sigstore-verify from 0.11 to 0.14 and ports mise-sigstore to the new API. This replaces the Renovate PR #13995, which can't compile on its own because 0.14 is a breaking release. There is no user-visible behavior change: attestation, cosign and SLSA verification keep the same trust decisions.

API changes handled:

  • TUF mirror override — TufConfig::custom now takes a TufBootstrap; the mirror still bootstraps from the embedded production root (SigstoreInstance::PublicGood.tuf_root()). DEFAULT_TUF_URL is no longer exported, so mise-sigstore defines it.
  • Verification policy — VerificationPolicy has no Default; mise uses any_identity() and keeps authorizing the signer itself via the existing workflow check. skip_tlog is now skip_tlog_unsafe, applied only when the bundle has no inclusion proof (same as before). verify_with_key takes an explicit PublicKeyVerificationPolicy::default() (tlog verified, as before).
  • DSSE / keys — envelopes carry exactly one signature (envelope.signature, payload.as_bytes()); key type detection uses KeyAlgorithm::from_spki, still accepting only Ed25519 and ECDSA P-256.

Testing

cargo test -p mise-sigstore (54 pass) and cargo +stable clippy --workspace --all-features --all-targets -- -D warnings are clean.

Supersedes #13995.

🤖 Generated with Claude Code

AI-assisted — Tool: Claude Code; model: anthropic/claude-sonnet-5-5; version: unavailable.


Note

Medium Risk
Changes sit on attestation, cosign, and SLSA verification paths; the diff is mostly an API port, but reviewers should confirm policy choices still match 0.11 behavior.

Overview
Bumps sigstore-verify from 0.11 to 0.14 in mise-sigstore (with matching Cargo.lock churn for the sigstore crate graph and transitive bumps like windows-sys). This is a compile-fix for the breaking 0.14 release, not a feature change.

mise-sigstore is updated to match the new API while keeping the same verification rules: VerificationPolicy::any_identity() plus the existing workflow identity check; skip_tlog_unsafe() only when a bundle has no Rekor inclusion proof; skip_sct() for GitHub-internal certs; and PublicKeyVerificationPolicy::default() on verify_with_key. TUF mirror overrides now use TufConfig::custom(url, TufBootstrap::trusted(...)) instead of with_root(PRODUCTION_TUF_ROOT), and DEFAULT_TUF_URL is defined locally because 0.14 no longer exports it.

DSSE handling follows the new envelope shape (payload.as_bytes(), single envelope.signature), cosign key detection uses KeyAlgorithm::from_spki, bundle validation uses ValidationOptions::new(), and TrustedRoot::fulcio_certs() is used without the old Result wrapper. Tests were adjusted for the TufConfig debug/URL assertions.

Reviewed by Cursor Bugbot for commit 91b26fc. Bugbot is set up for automated code reviews on this repo. Configure here.

Summary by CodeRabbit

  • Improvements
    • Updated Sigstore verification for current signing and attestation formats.
    • Bundles with an inclusion proof continue to undergo transparency-log verification; bundles without one can be verified without that check.
    • TUF mirror overrides continue to use the embedded production trust root, while the default production configuration remains unchanged.

Port mise-sigstore to the 0.14 API: TufBootstrap for mirrored TUF roots,
VerificationPolicy::any_identity, skip_tlog_unsafe, the single-signature DSSE
envelope, KeyAlgorithm key detection and the PublicKeyVerificationPolicy
argument to verify_with_key.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M48WGWJN8YDQFBGX1NJRWDE9
@socket-security

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addedcargo/​sigstore-verify@​0.14.0100100100100100

View full report

@coderabbitai

coderabbitai Bot commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository YAML (base), Central YAML (inherited), Organization UI (inherited)
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 46718dd9-4e56-4706-980d-772bd2354009
📥 Commits

Reviewing files that changed from the base of the PR and between 53e16d5 and 91b26fc.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (8)
  • crates/mise-sigstore/Cargo.toml
  • crates/mise-sigstore/src/bundle.rs
  • crates/mise-sigstore/src/certificate.rs
  • crates/mise-sigstore/src/cosign.rs
  • crates/mise-sigstore/src/lib.rs
  • crates/mise-sigstore/src/slsa.rs
  • crates/mise-sigstore/src/tests/certificate.rs
  • crates/mise-sigstore/src/trust.rs

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 2 remain after this review.


📝 Walkthrough

Walkthrough

The Sigstore verification dependency and related API calls are updated. Bundle verification policies change, DSSE payload consumers use envelope bytes directly, and custom TUF configurations use the public-good instance root.

Changes

Sigstore verification

Layer / File(s) Summary
Verification API and policies
crates/mise-sigstore/Cargo.toml, crates/mise-sigstore/src/bundle.rs, crates/mise-sigstore/src/cosign.rs
The sigstore-verify dependency advances from 0.11 to 0.14. Bundle verification uses any_identity() and skips tlog verification without an inclusion proof. Bundle and raw-signature verification use updated key APIs, and SHA-256 digest conversion uses TryFrom.
DSSE payload processing
crates/mise-sigstore/src/certificate.rs, crates/mise-sigstore/src/cosign.rs, crates/mise-sigstore/src/slsa.rs
Repository extraction and subject verification receive the envelope payload bytes directly. DSSE verification builds PAE from those bytes and verifies the envelope’s single signature.sig.
TUF configuration and tests
crates/mise-sigstore/src/lib.rs, crates/mise-sigstore/src/trust.rs, crates/mise-sigstore/src/tests/certificate.rs
The crate defines DEFAULT_TUF_URL locally. Custom URL configuration uses a trusted bootstrap with SigstoreInstance::PublicGood.tuf_root(). Tests check the default and mirror URLs in the selected configuration’s debug representation.

Priority: ➖ Normal

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Other

Merge Risk: ⚪ Minimal · up to 91b26

No actionable merge-blocking risk is established; the update is mergeable after normal checks.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 12 functions across 7 files. (1 skipped: … Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: updating the sigstore-verify Rust crate to version 0.14.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 12 functions across 7 files. (1 skipped: 1 unsupported.)

  • Fix all pre-merge checks with AI
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@greptile-apps

greptile-apps Bot commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 5/5

[High risk] Updates cryptographic signature verification library.

The PR appears safe to merge; no actionable defect was established.

What we checked:

  • Requested workflows still get checked: The wrapper still passes the verified identity to verify_signer_workflow_identity. That function rejects missing identities and workflows that do not match.

Summary

Updates sigstore-verify from 0.11 to 0.14 and adapts mise-sigstore to its new API.

  • Uses the new verification policies, key detection, and DSSE fields.
  • Supplies the embedded production root when configuring a TUF mirror.
  • Keeps explicit signer checks and artifact digest checks.
  • No actionable issue was established. Tests were not run during this review.

Reviews (1) · Last reviewed commit: "fix(deps): update rust crate sigstore-ve..."

@jdx
jdx enabled auto-merge (squash) October 6, 2026 15:31
@jdx
jdx merged commit 399e9a0 into main Oct 6, 2026
67 of 72 checks passed
@jdx
jdx deleted the claude/sigstore-verify-0.14 branch October 6, 2026 15:53
@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Instruction counts

benchmark trend instructions Δ wall (min) Δ
env ▁▃▁▃▃▁▆█▆ 27,244,123 → 27,223,779 -0.07% 19.19 → 19.46ms +1.41%
hook-env ▃▁▃▄▄▅▅▇█ 29,215,570 → 29,236,628 +0.07% 20.01 → 20.43ms +2.13%
ls ▂▃▁▄██▃█▁ 30,930,818 → 30,855,379 -0.24% 21.03 → 21.01ms -0.10%
registry ▂▁▁▁▂▂▂█▇ 40,168,801 → 40,130,840 -0.09% 17.50 → 17.85ms +1.96%
startup ▁▁▁▃▃▂▆██ 10,868,035 → 10,869,526 +0.01% 12.02 → 12.24ms +1.81%

No instruction-count regression above 1%.

Only instruction counts gate. Wall clock is shown for context — on identical hardware it moves 4-20% run to run.

Measured by tak — instruction-counted CLI benchmarks, stored in this repository's git notes.

91b26fc896ba vs 53e16d593c4c · measured on the runner, not pushed to the history.

jdx pushed a commit that referenced this pull request Oct 7, 2026
<!-- entire-trail-link-start -->
https://entire.io/gh/jdx/mise/trails/430
<!-- entire-trail-link-end -->

### 🚀 Features

- **(bootstrap)** add a tool-update service that keeps auto_update tools
current by @jdx in [#14040](#14040)
- **(config)** add global section write targets by @jdx in
[#14018](#14018)
- **(config)** move mise's auto-update settings under self_update.* by
@jdx in [#14038](#14038)
- **(dotfiles)** report notification availability and add notify command
by @jdx in [#14009](#14009)
- **(dotfiles)** add merge entries that own only some keys of a config
file by @jdx in [#14012](#14012)
- **(http)** add headers option for bearer and API-key auth by @jdx in
[#14022](#14022)
- **(install)** add an opt-in identity-based install layout by @jdx in
[#13951](#13951)
- **(install)** keep identity-layout installations in a shorter
directory on Windows by @jdx in
[#13952](#13952)
- **(installs)** list installations and choose the one requests without
a lockfile use by @jdx in
[#13953](#13953)
- **(installs)** move legacy installations into the identity layout by
@jdx in [#13955](#13955)
- **(lock)** preserve shared lockfile entries on request by @jdx in
[#13980](#13980)
- **(npm)** install packages from git repositories by @jdx in
[#14044](#14044)
- **(prune)** add prune.exclude to keep chosen tools from being pruned
by @jdx in [#14030](#14030)
- **(secrets)** add [secrets.fnox] project config and mise secrets ls by
@jdx in [#13967](#13967)
- **(secrets)** add --secrets and --secrets-all to mise run and mise x
by @jdx in [#13975](#13975)
- **(task)** give tasks only the fnox secrets they list by @jdx in
[#13974](#13974)
- **(task)** allow {{ secrets.X }} in task env values by @jdx in
[#13978](#13978)
- **(upgrade)** update global tools before they run with auto_update by
@jdx in [#14026](#14026)
- **(util)** add a comment-preserving YAML merge helper by @jdx in
[#14010](#14010)
- **(util)** add format-aware merge for JSON, TOML, and YAML files by
@jdx in [#14011](#14011)

### 🐛 Bug Fixes

- **(backend)** read a repository's packslip release list once per
command by @jdx in [#13991](#13991)
- **(backend)** only warn about a backend switch when the backend kind
changes by @jdx in [#14032](#14032)
- **(bootstrap)** don't create history state or fail on its lock unless
writing files by @jdx in
[#14029](#14029)
- **(cargo)** serialize rustup state across cargo install fallbacks by
@jdx in [#14042](#14042)
- **(config)** keep global config when a project ignore resolves onto it
via symlink by @jdx in [#14006](#14006)
- **(doctor)** only warn about backend mismatches the registry serves by
@jdx in [#14005](#14005)
- **(dotenv)** leave a value ending in escaped whitespace unquoted by
@jdx in [#13956](#13956)
- **(dotfiles)** explain missing sources in conflicting declaration
errors by @himkt in [#13973](#13973)
- **(dotfiles)** skip legacy link discovery for group entries by @jdx in
[#14023](#14023)
- **(dotnet)** disable lockfile url enforcement for dotnet tool backend
by @james-newell-forge in
[#13971](#13971)
- **(env)** fully redact secrets when redaction values overlap by @jdx
in [#13962](#13962)
- **(github)** log partial attestation verification failures by @jdx in
[#14035](#14035)
- **(github)** warn when attestations are skipped because the Sigstore
trust root is unreachable by @jdx in
[#14036](#14036)
- **(http)** fetch a cached GitHub release once when callers race by
@jdx in [#13990](#13990)
- **(http)** don't retry a 429 whose Retry-After outlasts the backoff by
@jdx in [#14027](#14027)
- **(http)** retry downloads when an HTTP/2 stream reset fails the body
read by @jdx in [#14049](#14049)
- **(install)** switch backends into a new installation, and resolve
CLI-named versions without guessing by @jdx in
[#13957](#13957)
- **(install)** keep a version incomplete until its postinstall hook
succeeds by @jdx in [#14037](#14037)
- **(install)** keep incomplete-install markers out of the cache by @jdx
in [#14051](#14051)
- **(mcp)** reject run_task task names that start with a dash by @jdx in
[#13961](#13961)
- **(oci)** stream large blob uploads in one PATCH by @jdx in
[#14017](#14017)
- **(outdated)** don't bump vendor-only requests like java@temurin by
@jdx in [#14031](#14031)
- **(prune)** keep versions that a running process was started from by
@jdx in [#14020](#14020)
- **(prune)** snapshot what templated tool versions render to in the
identity layout by @jdx in
[#14025](#14025)
- **(pypi)** build uv tool venvs on mise's python by @jdx in
[#14024](#14024)
- **(pypi)** lock from <root>/simple/ for JSON URLs by @deiga in
[#14007](#14007)
- **(python)** create the auto uv venv with mise's python during install
by @halms in [#13981](#13981)
- **(release)** skip the vfox-tiny test fixture when vendoring embedded
plugins by @jdx in [#14047](#14047)
- **(ruby)** keep Gemfile reload watches out of executable hooks by
@DahanItamar in [#13985](#13985)
- **(task)** list monorepo subproject tasks in the mise://tasks MCP
resource by @jdx in [#14053](#14053)
- **(uninstall)** report each version once in a dry run by @jdx in
[#13992](#13992)

### 📚 Documentation

- **(http)** show a package proxy recipe for url_replacements by @jdx in
[#14050](#14050)
- **(readme)** add Star History badges by @jdx in
[#13968](#13968)
- keep code blocks and alert markers out of llms.txt summaries by
@DahanItamar in [#14034](#14034)

### ⚡ Performance

- **(secrets)** read cached fnox secrets from the fnox daemon by @jdx in
[#13979](#13979)

### 🧪 Testing

- **(e2e)** stabilize task timing assertions by @jdx in
[#13977](#13977)
- **(go)** disable minimum_release_age in go install e2e by @jdx in
[#13989](#13989)

### 📦️ Dependency Updates

- lock file maintenance by @renovate[bot] in
[#13963](#13963)
- update github actions by @renovate[bot] in
[#13994](#13994)
- update rust crates by @renovate[bot] in
[#13996](#13996)
- update rust crate nodejs-semver to v7 by @renovate[bot] in
[#13999](#13999)
- update jdx/mise-action action to v5 by @renovate[bot] in
[#13997](#13997)
- update jdx/renovate-config action to v1.0.2 by @renovate[bot] in
[#14003](#14003)
- update dependency usage to latest by @renovate[bot] in
[#14004](#14004)
- update jdx crates to v6.12.1 by @renovate[bot] in
[#14002](#14002)
- update rust crate sigstore-verify to 0.14 by @jdx in
[#14019](#14019)
- update rattler by @renovate[bot] in
[#13998](#13998)
- update rust crate clx to v3.0.4 by @renovate[bot] in
[#14028](#14028)

### 📦 Registry

- update moved plugin references by @jdx in
[#13972](#13972)

### Chore

- **(ci)** update pr-closer to v1.3.0 by @jdx in
[83f3e90](83f3e90)

### Ci

- update pr closer action by @jdx in
[#13970](#13970)
- add manual M4 sandbox pilot by @jdx in
[09e8f8f](09e8f8f)

### Security

- **(env)** keep secrets inherited from a parent mise out of templates,
caches and other tasks by @jdx in
[#13966](#13966)

### New Contributors

- @DahanItamar made their first contribution in
[#14034](#14034)
- @deiga made their first contribution in
[#14007](#14007)
- @james-newell-forge made their first contribution in
[#13971](#13971)

## 📦 Aqua Registry Updates

### New Packages (3)

-
[`editorconfig/editorconfig-core-go`](https://github.com/editorconfig/editorconfig-core-go)
- [`jdx/jactionlint`](https://github.com/jdx/jactionlint)
- [`tontinton/maki`](https://github.com/tontinton/maki)

### Updated Packages (3)

- [`anchore/syft`](https://github.com/anchore/syft)
- [`eksctl-io/eksctl`](https://github.com/eksctl-io/eksctl)
-
[`regclient/regclient/regsync`](https://github.com/regclient/regclient)
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.

1 participant