Skip to content

Commit 9b28d16

Browse files
committed
verifier: Fix TSA cert chain construction
Using add_root_certificate() multiple times looks like a bug: it usually works but in the case of timestamps with no embedded certs verification seems to fails with Certificates neither found in the answer or in the Verification Options Signed-off-by: Jussi Kukkonen <[email protected]>
1 parent 85ba655 commit 9b28d16

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

sigstore/verify/verifier.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,9 +128,18 @@ def _verify_signed_timestamp(
128128
for certificate_authority in cert_authorities:
129129
certificates = certificate_authority.certificates(allow_expired=True)
130130

131-
builder = VerifierBuilder()
131+
# We expect at least a signing cert and a root cert but there may be intermediates
132+
if len(certificates) < 2:
133+
_logger.debug("Unable to verify Timestamp: cert chain is incomplete")
134+
continue
135+
136+
builder = (
137+
VerifierBuilder()
138+
.tsa_certificate(certificates.pop(0))
139+
.add_root_certificate(certificates.pop())
140+
)
132141
for certificate in certificates:
133-
builder.add_root_certificate(certificate)
142+
builder = builder.add_intermediate_certificate(certificate)
134143

135144
verifier = builder.build()
136145
try:

0 commit comments

Comments
 (0)