Skip to content

Commit 6352c78

Browse files
authored
Ignore if missing CertDigest
1 parent 079ab59 commit 6352c78

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

signxml/xades/xades.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -273,15 +273,16 @@ def _verify_signing_time(self, verify_result: VerifyResult):
273273
pass
274274

275275
def _verify_cert_digest(self, signing_cert_node, expect_cert, idx):
276-
cert = self._find(signing_cert_node, "xades:Cert[{0}]".format(idx))
277-
cert_digest = self._find(cert, "xades:CertDigest")
278-
digest_alg = DigestAlgorithm(self._find(cert_digest, "DigestMethod").get("Algorithm"))
279-
digest_value = self._find(cert_digest, "DigestValue")
280-
# check spec for specific method of retrieving cert
281-
der_encoded_cert = dump_certificate(FILETYPE_ASN1, expect_cert)
282-
283-
if b64decode(digest_value.text) != self._get_digest(der_encoded_cert, algorithm=digest_alg):
284-
raise InvalidDigest("Digest mismatch for certificate digest")
276+
cert = self._find(signing_cert_node, "xades:Cert[{0}]".format(idx), False)
277+
if cert != None:
278+
cert_digest = self._find(cert, "xades:CertDigest")
279+
digest_alg = DigestAlgorithm(self._find(cert_digest, "DigestMethod").get("Algorithm"))
280+
digest_value = self._find(cert_digest, "DigestValue")
281+
# check spec for specific method of retrieving cert
282+
der_encoded_cert = dump_certificate(FILETYPE_ASN1, expect_cert)
283+
284+
if b64decode(digest_value.text) != self._get_digest(der_encoded_cert, algorithm=digest_alg):
285+
raise InvalidDigest("Digest mismatch for certificate digest")
285286

286287
def _verify_cert_digests(self, verify_result: VerifyResult):
287288
x509_data = verify_result.signature_xml.find("ds:KeyInfo/ds:X509Data", namespaces=namespaces)

0 commit comments

Comments
 (0)