@@ -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