B4X
B4X
Get Certificates within XML Signature
See more XML Digital Signatures Examples
Demonstrates how to get the certificates contained within an XML signature.Chilkat B4X Downloads
Dim success As Boolean = False
' This example requires the Chilkat API to have been previously unlocked.
' See Global Unlock Sample for sample code.
Dim sbXml As ChilkatStringBuilder
sbXml.Initialize
' 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 Then
Log("Failed to load the XML file..")
Return
End If
Dim dsig As ChilkatXmlDSig
dsig.Initialize
' 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 = False Then
Log(dsig.LastErrorText)
Return
End If
' For each signature, verify and also get the certificate(s) contained within each Signature.
Dim i As Int = 0
Dim saCerts As ChilkatStringArray
saCerts.Initialize
Dim cert As ChilkatCert
cert.Initialize("cert")
Log("numSignatures = " & dsig.NumSignatures)
Do While i < dsig.NumSignatures
' Select the Nth signature by setting the Selector property.
dsig.Selector = i
Dim bVerifyReferenceDigests As Boolean = True
Dim bVerified As Boolean = dsig.VerifySignature(bVerifyReferenceDigests)
Log("Signature " & (i + 1) & " verified = " & bVerified)
' Get the certificates embedded in this signature.
saCerts.Clear
success = dsig.GetCerts(saCerts)
If success = True Then
Dim j As Int = 0
Do While j < saCerts.Count
success = cert.LoadFromBase64(saCerts.GetString(j))
If success = True Then
Log(" " & cert.SubjectDN)
End If
j = j + 1
Loop
End If
i = i + 1
Loop