Ruby
Ruby
Get Certificates within XML Signature
See more XML Digital Signatures Examples
Demonstrates how to get the certificates contained within an XML signature.Chilkat Ruby Downloads
require 'chilkat'
success = false
# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.
sbXml = Chilkat::CkStringBuilder.new()
# 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.." + "\n";
exit
end
dsig = Chilkat::CkXmlDSig.new()
# 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() + "\n";
exit
end
# For each signature, verify and also get the certificate(s) contained within each Signature.
i = 0
saCerts = Chilkat::CkStringArray.new()
cert = Chilkat::CkCert.new()
print "numSignatures = " + dsig.get_NumSignatures().to_s() + "\n";
while i < dsig.get_NumSignatures()
# Select the Nth signature by setting the Selector property.
dsig.put_Selector(i)
bVerifyReferenceDigests = true
bVerified = dsig.VerifySignature(bVerifyReferenceDigests)
print "Signature " + (i + 1).to_s() + " verified = " + bVerified.to_s() + "\n";
# Get the certificates embedded in this signature.
saCerts.Clear()
success = dsig.GetCerts(saCerts)
if (success == true)
j = 0
while j < saCerts.get_Count()
success = cert.LoadFromBase64(saCerts.getString(j))
if (success == true)
print " " + cert.subjectDN() + "\n";
end
j = j + 1
end
end
i = i + 1
end