Description
PyCA cryptography 44 was released a few hours ago, which broke un-pinned installations of sigstore
(e.g. pip install sigstore
).
Root cause:
-
We have an open-ended pin on
cryptography >= 42
:sigstore-python/pyproject.toml
Line 29 in f08e11f
We did this originally because
cryptography
is very stable, and we use no internal APIs. -
However,
cryptography >=44
intentionally removes several ABCs as public APIs, including theSignedCertificateTimestamp
ABC -
We depend on
SignedCertificateTimestamp.register(...)
to register our own SCT implementation for detached Fulcio SCT support:
As a result, unconstrained resolutions of sigstore
's deps end with an import error when sigstore
is used.
Resolutions:
- Short term: I've cut
v3.5.3
as a patch release, which constrainscryptography < 44
to keep the existing code working - Medium term: We need to remove our use of the
SignedCertificateTimestamp
ABC or, better yet, remove support for detached SCTs entirely: Removed support for detached SCTs #850
In terms of limiting future regressions:
- We should pin to cryptography's major version and use Dependabot to keep updated, rather than using an open-ended resolution. pyproject: constrain cryptography < 44 #1229.
- We should have PyCA cryptography run sigstore's test suite as part of its CI/regression suite, like it does with some other downstreams: ci: add sigstore as a downstream test pyca/cryptography#12054