Sample code for 30+ languages & platforms
Tcl

Verify XML Digital Signature

See more XML Digital Signatures Examples

Verifies XML signatures in an XML file.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

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

set sbXml [new_CkStringBuilder]

set success [CkStringBuilder_LoadFile $sbXml "qa_data/xml_dsig_verify/csioz_sample.xml" "utf-8"]
if {$success != 1} then {
    puts "Failed to load XML file."
    delete_CkStringBuilder $sbXml
    exit
}

set dsig [new_CkXmlDSig]

# First load the XML containing the signatures to be verified.
set success [CkXmlDSig_LoadSignatureSb $dsig $sbXml]
if {$success != 1} then {
    puts [CkXmlDSig_lastErrorText $dsig]
    delete_CkStringBuilder $sbXml
    delete_CkXmlDSig $dsig
    exit
}

# It's possible that an XML document can contain multiple signatures.
# Each can be verified as follows:
set i 0
while {$i < [CkXmlDSig_get_NumSignatures $dsig]} {
    # Select the Nth signature by setting the Selector property.
    CkXmlDSig_put_Selector $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.
    set bVerifyReferenceDigests 1
    set bVerified [CkXmlDSig_VerifySignature $dsig $bVerifyReferenceDigests]
    puts "Signature [expr $i + 1] verified = $bVerified"

    set i [expr $i + 1]
}

delete_CkStringBuilder $sbXml
delete_CkXmlDSig $dsig