Go
Go
Get Certificates within XML Signature
See more XML Digital Signatures Examples
Demonstrates how to get the certificates contained within an XML signature.Chilkat Go Downloads
success := false
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
sbXml := chilkat.NewStringBuilder()
// 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 {
fmt.Println("Failed to load the XML file..")
sbXml.DisposeStringBuilder()
return
}
dsig := chilkat.NewXmlDSig()
// 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 {
fmt.Println(dsig.LastErrorText())
sbXml.DisposeStringBuilder()
dsig.DisposeXmlDSig()
return
}
// For each signature, verify and also get the certificate(s) contained within each Signature.
i := 0
saCerts := chilkat.NewStringArray()
cert := chilkat.NewCert()
fmt.Println("numSignatures = ", dsig.NumSignatures())
for i < dsig.NumSignatures() {
// Select the Nth signature by setting the Selector property.
dsig.SetSelector(i)
bVerifyReferenceDigests := true
bVerified := dsig.VerifySignature(bVerifyReferenceDigests)
fmt.Println("Signature ", i + 1, " verified = ", bVerified)
// Get the certificates embedded in this signature.
saCerts.Clear()
success = dsig.GetCerts(saCerts)
if success == true {
j := 0
for j < saCerts.Count() {
success = cert.LoadFromBase64(*saCerts.GetString(j))
if success == true {
fmt.Println(" ", cert.SubjectDN())
}
j = j + 1
}
}
i = i + 1
}
sbXml.DisposeStringBuilder()
dsig.DisposeXmlDSig()
saCerts.DisposeStringArray()
cert.DisposeCert()