Lianja
Lianja
Get Certificates within XML Signature
See more XML Digital Signatures Examples
Demonstrates how to get the certificates contained within an XML signature.Chilkat Lianja Downloads
llSuccess = .F.
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
loSbXml = createobject("CkStringBuilder")
// Load XML containing one or more signatures.
llSuccess = loSbXml.LoadFile("qa_data/xml_dsig_valid_samples/multipleSigners/sp.pdf.XAdES.xml","utf-8")
if (llSuccess = .F.) then
? "Failed to load the XML file.."
release loSbXml
return
endif
loDsig = createobject("CkXmlDSig")
// 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.
llSuccess = loDsig.LoadSignatureSb(loSbXml)
if (llSuccess <> .T.) then
? loDsig.LastErrorText
release loSbXml
release loDsig
return
endif
// For each signature, verify and also get the certificate(s) contained within each Signature.
i = 0
loSaCerts = createobject("CkStringArray")
loCert = createobject("CkCert")
? "numSignatures = " + str(loDsig.NumSignatures)
do while i < loDsig.NumSignatures
// Select the Nth signature by setting the Selector property.
loDsig.Selector = i
llBVerifyReferenceDigests = .T.
llBVerified = loDsig.VerifySignature(llBVerifyReferenceDigests)
? "Signature " + str(i + 1) + " verified = " + str(llBVerified)
// Get the certificates embedded in this signature.
loSaCerts.Clear()
llSuccess = loDsig.GetCerts(loSaCerts)
if (llSuccess = .T.) then
j = 0
do while j < loSaCerts.Count
llSuccess = loCert.LoadFromBase64(loSaCerts.GetString(j))
if (llSuccess = .T.) then
? " " + loCert.SubjectDN
endif
j = j + 1
enddo
endif
i = i + 1
enddo
release loSbXml
release loDsig
release loSaCerts
release loCert