PureBasic
PureBasic
Verify XML Digital Signature
See more XML Digital Signatures Examples
Verifies XML signatures in an XML file.Chilkat PureBasic Downloads
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkXmlDSig.pb"
Procedure ChilkatExample()
success.i = 0
; This example requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
sbXml.i = CkStringBuilder::ckCreate()
If sbXml.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkStringBuilder::ckLoadFile(sbXml,"qa_data/xml_dsig_verify/csioz_sample.xml","utf-8")
If success <> 1
Debug "Failed to load XML file."
CkStringBuilder::ckDispose(sbXml)
ProcedureReturn
EndIf
dsig.i = CkXmlDSig::ckCreate()
If dsig.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; First load the XML containing the signatures to be verified.
success = CkXmlDSig::ckLoadSignatureSb(dsig,sbXml)
If success <> 1
Debug CkXmlDSig::ckLastErrorText(dsig)
CkStringBuilder::ckDispose(sbXml)
CkXmlDSig::ckDispose(dsig)
ProcedureReturn
EndIf
; It's possible that an XML document can contain multiple signatures.
; Each can be verified as follows:
i.i = 0
While i < CkXmlDSig::ckNumSignatures(dsig)
; Select the Nth signature by setting the Selector property.
CkXmlDSig::setCkSelector(dsig, i)
; The bVerifyReferenceDigests argument determines if we want
; to also verify each reference digest. If set to 0,
; then only the SignedInfo part of the Signature is verified.
bVerifyReferenceDigests.i = 1
bVerified.i = CkXmlDSig::ckVerifySignature(dsig,bVerifyReferenceDigests)
Debug "Signature " + Str(i + 1) + " verified = " + Str(bVerified)
i = i + 1
Wend
CkStringBuilder::ckDispose(sbXml)
CkXmlDSig::ckDispose(dsig)
ProcedureReturn
EndProcedure