DataFlex
DataFlex
Get Certificates within XML Signature
See more XML Digital Signatures Examples
Demonstrates how to get the certificates contained within an XML signature.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Variant vSbXml
Handle hoSbXml
Handle hoDsig
Integer i
Variant vSaCerts
Handle hoSaCerts
Handle hoCert
Boolean iBVerifyReferenceDigests
Boolean iBVerified
Integer j
String sTemp1
Integer iTemp1
Move False To iSuccess
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbXml
If (Not(IsComObjectCreated(hoSbXml))) Begin
Send CreateComObject of hoSbXml
End
// Load XML containing one or more signatures.
Get ComLoadFile Of hoSbXml "qa_data/xml_dsig_valid_samples/multipleSigners/sp.pdf.XAdES.xml" "utf-8" To iSuccess
If (iSuccess = False) Begin
Showln "Failed to load the XML file.."
Procedure_Return
End
Get Create (RefClass(cComChilkatXmlDSig)) To hoDsig
If (Not(IsComObjectCreated(hoDsig))) Begin
Send CreateComObject of hoDsig
End
// 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.
Get pvComObject of hoSbXml to vSbXml
Get ComLoadSignatureSb Of hoDsig vSbXml To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoDsig To sTemp1
Showln sTemp1
Procedure_Return
End
// For each signature, verify and also get the certificate(s) contained within each Signature.
Move 0 To i
Get Create (RefClass(cComCkStringArray)) To hoSaCerts
If (Not(IsComObjectCreated(hoSaCerts))) Begin
Send CreateComObject of hoSaCerts
End
Get Create (RefClass(cComChilkatCert)) To hoCert
If (Not(IsComObjectCreated(hoCert))) Begin
Send CreateComObject of hoCert
End
Get ComNumSignatures Of hoDsig To iTemp1
Showln "numSignatures = " iTemp1
While (i < (ComNumSignatures(hoDsig)))
// Select the Nth signature by setting the Selector property.
Set ComSelector Of hoDsig To i
Move True To iBVerifyReferenceDigests
Get ComVerifySignature Of hoDsig iBVerifyReferenceDigests To iBVerified
Showln "Signature " (i + 1) " verified = " iBVerified
// Get the certificates embedded in this signature.
Send ComClear To hoSaCerts
Get pvComObject of hoSaCerts to vSaCerts
Get ComGetCerts Of hoDsig vSaCerts To iSuccess
If (iSuccess = True) Begin
Move 0 To j
While (j < (ComCount(hoSaCerts)))
Get ComGetString Of hoSaCerts j To sTemp1
Get ComLoadFromBase64 Of hoCert sTemp1 To iSuccess
If (iSuccess = True) Begin
Get ComSubjectDN Of hoCert To sTemp1
Showln " " sTemp1
End
Move (j + 1) To j
Loop
End
Move (i + 1) To i
Loop
End_Procedure