Sample code for 30+ languages & platforms
Chilkat2-Python

Get Certificates within XML Signature

See more XML Digital Signatures Examples

Demonstrates how to get the certificates contained within an XML signature.

Chilkat Chilkat2-Python Downloads

Chilkat2-Python
import sys
import chilkat2

success = False

# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

sbXml = chilkat2.StringBuilder()

# Load XML containing one or more signatures.
success = sbXml.LoadFile("qa_data/xml_dsig_valid_samples/multipleSigners/sp.pdf.XAdES.xml","utf-8")
if (success == False):
    print("Failed to load the XML file..")
    sys.exit()

dsig = chilkat2.XmlDSig()

# First load the XML containing the signatures to be verified.
# Note that this particular Signature already contains the RSA public key that will be used
# for verification.
success = dsig.LoadSignatureSb(sbXml)
if (success != True):
    print(dsig.LastErrorText)
    sys.exit()

# For each signature, verify and also get the certificate(s) contained within each Signature.
i = 0
saCerts = chilkat2.StringArray()
cert = chilkat2.Cert()

print("numSignatures = " + str(dsig.NumSignatures))

while i < dsig.NumSignatures :
    # Select the Nth signature by setting the Selector property.
    dsig.Selector = i

    bVerifyReferenceDigests = True
    bVerified = dsig.VerifySignature(bVerifyReferenceDigests)
    print("Signature " + str(i + 1) + " verified = " + str(bVerified))

    # Get the certificates embedded in this signature.
    saCerts.Clear()
    success = dsig.GetCerts(saCerts)
    if (success == True):
        j = 0
        while j < saCerts.Count :
            success = cert.LoadFromBase64(saCerts.GetString(j))
            if (success == True):
                print("    " + cert.SubjectDN)

            j = j + 1

    i = i + 1