Sample code for 30+ languages & platforms
PowerBuilder

Verify XML Digital Signature

See more XML Digital Signatures Examples

Verifies XML signatures in an XML file.

Chilkat PowerBuilder Downloads

PowerBuilder
integer li_rc
long li_Success
oleobject loo_SbXml
oleobject loo_Dsig
long i
long li_BVerifyReferenceDigests
long li_BVerified

li_Success = 0

//  This example requires the Chilkat API to have been previously unlocked.
//  See Global Unlock Sample for sample code.

loo_SbXml = create oleobject
li_rc = loo_SbXml.ConnectToNewObject("Chilkat.StringBuilder")
if li_rc < 0 then
    destroy loo_SbXml
    MessageBox("Error","Connecting to COM object failed")
    return
end if
li_Success = loo_SbXml.LoadFile("qa_data/xml_dsig_verify/csioz_sample.xml","utf-8")
if li_Success <> 1 then
    Write-Debug "Failed to load XML file."
    destroy loo_SbXml
    return
end if

loo_Dsig = create oleobject
li_rc = loo_Dsig.ConnectToNewObject("Chilkat.XmlDSig")

//  First load the XML containing the signatures to be verified.
li_Success = loo_Dsig.LoadSignatureSb(loo_SbXml)
if li_Success <> 1 then
    Write-Debug loo_Dsig.LastErrorText
    destroy loo_SbXml
    destroy loo_Dsig
    return
end if

//  It's possible that an XML document can contain multiple signatures.
//  Each can be verified as follows:
i = 0
do while i < loo_Dsig.NumSignatures
    //  Select the Nth signature by setting the Selector property.
    loo_Dsig.Selector = 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.
    li_BVerifyReferenceDigests = 1
    li_BVerified = loo_Dsig.VerifySignature(li_BVerifyReferenceDigests)
    Write-Debug "Signature " + string(i + 1) + " verified = " + string(li_BVerified)

    i = i + 1
loop


destroy loo_SbXml
destroy loo_Dsig