-
Notifications
You must be signed in to change notification settings - Fork 76
Post-mortem: breakage with cryptography>=44 #1231
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
"cryptography >= 42", We did this originally because
cryptographyis very stable, and we use no internal APIs. -
However,
cryptography >=44intentionally removes several ABCs as public APIs, including theSignedCertificateTimestampABC -
We depend on
SignedCertificateTimestamp.register(...)to register our own SCT implementation for detached Fulcio SCT support:SignedCertificateTimestamp.register(DetachedFulcioSCT)
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.3as a patch release, which constrainscryptography < 44to keep the existing code working - Medium term: We need to remove our use of the
SignedCertificateTimestampABC 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