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
integer li_Success
oleobject loo_SbXml
oleobject loo_Dsig
integer i
integer li_BVerifyReferenceDigests
integer 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