Sample code for 30+ languages & platforms
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

B4X
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