Skip to content

Conversation

jku
Copy link
Contributor

@jku jku commented Oct 11, 2025

Summary

  • sigstore-protobuf-specs is gone
  • test refactor to use the public OIDC beacon, tweaks to the CI to use the beacon by default. This allows tests to run with 100% coverage, even on third-party PRs (like this one).
  • upgrade sigstore to 4.x
  • Enforce use of rekor v1 for now (see Support timestamps in attestations #143 for followup)

Effect on signing and verifying

  • the produced attestation should remain unchanged:
    • signing will still use rekor1 (because of force_tlog_version=1) entries even when the sigstore instance starts to advertize rekor2 for signing clients
    • A TSA timestamp is not included in the attestation
  • verification also works as before. Technically a rekor2 entry would work as well but since the attestations cannot contain timestamps and rekor2 verification requires them, the verification will not succeed with a rekor2 entry

This PR contains commits from #132 from @woodruffw and adds a few additional commits.
Closes #131, closes #141, replaces #132.

woodruffw and others added 10 commits July 23, 2025 12:32
@jku
Copy link
Contributor Author

jku commented Oct 11, 2025

before this gets merged, I would like to make sure I understand how PyPI verifies these to ensure there are no unintended incompatibility issues: marking draft

@jku jku marked this pull request as draft October 11, 2025 13:44
Comment on lines +12 to +14
resp = requests.get(
"https://raw.githubusercontent.com/sigstore-conformance/extremely-dangerous-public-oidc-beacon/refs/heads/current-token/oidc-token.txt"
)
Copy link
Contributor Author

Choose a reason for hiding this comment

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

copying from the other PR:

unfortunately GitHub cached raw.githubusercontent.com quite aggressively when I last tried this -- it usually works but the error rate was still annoyingly high. This is why conformance uses the clumsy looking "git clone" approach https://github.com/sigstore/sigstore-conformance/blob/e0997c248c40ee615c1e8aa1e3ee043a62920951/test/conftest.py#L131

maybe this is not a show stopper here: we could do this and improve if it fails too often

Copy link
Member

Choose a reason for hiding this comment

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

Yeah, not a blocker IMO. We can re-evaluate if the error rate ends up being annoying.

@facutuesca
Copy link
Collaborator

Thanks for the PR @jku ! This looks good to me at a first glance, I need to test it against warehouse to make sure nothing unexpected breaks

before this gets merged, I would like to make sure I understand how PyPI verifies these to ensure there are no unintended incompatibility issues: marking draft

Here is where PyPI extracts and verifies the attestations uploaded by users, if you want to take a look

@facutuesca facutuesca self-requested a review October 12, 2025 21:01
Copy link
Collaborator

@facutuesca facutuesca left a comment

Choose a reason for hiding this comment

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

This LGTM. I tested the changes here against warehouse, and everything works as expected. I'll wait a bit before merging in case @woodruffw wants to take a look

@jku jku marked this pull request as ready for review October 13, 2025 08:10
Comment on lines +41 to +44
env:
# Use the pubic OIDC beacon for online tests, rather than relying
# on the workflow's own ID token.
EXTREMELY_DANGEROUS_PUBLIC_OIDC_BEACON: 1
Copy link
Member

Choose a reason for hiding this comment

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

Thanks a ton for doing this @jku!

Comment on lines +430 to +432
trust_config = ClientTrustConfig.staging() if args.staging else ClientTrustConfig.production()
# Make sure we use rekor v1 until attestations are compatible with v2
trust_config.force_tlog_version = 1
Copy link
Member

Choose a reason for hiding this comment

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

Not an issue for this PR, but I kind of wish we had a public API for this operation that wasn't setting an attribute/property directly 😅 -- I can see us perhaps wanting to remove this attribute at some point.

Copy link
Member

@woodruffw woodruffw left a comment

Choose a reason for hiding this comment

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

LGTM! Only nitpicks.

@facutuesca facutuesca merged commit a585379 into pypi:main Oct 14, 2025
7 checks passed
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.

upgrade to sigstore-python 4.0 Drop sigstore_protobuf_specs

4 participants