Sample code for 30+ languages & platforms
Tcl

Verify XAdES with External File Reference

See more XML Digital Signatures Examples

Demonstrates how to validate an XML digital signature that contains a reference to an external file. (This is one way of doing it..)

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.

# Load the XAdES file to be validated..
set sbXml [new_CkStringBuilder]

set success [CkStringBuilder_LoadFile $sbXml "qa_data/xml_dsig_valid_samples/externalFile/test.pdf.XAdES" "utf-8"]
if {$success == 0} then {
    puts "Failed to load XAdES input file."
    delete_CkStringBuilder $sbXml
    exit
}

set validator [new_CkXmlDSig]

# Specify a set of absolute or relative directory paths to be searched for any external file references.
# Directory paths are separated by semicolon chars.
CkXmlDSig_put_ExternalRefDirs $validator "qa_data/externalFiles;qa_data/xml_dsig_valid_samples/externalFile;c:/someOtherDir"

set success [CkXmlDSig_LoadSignatureSb $validator $sbXml]
if {$success == 0} then {
    puts [CkXmlDSig_lastErrorText $validator]
    delete_CkStringBuilder $sbXml
    delete_CkXmlDSig $validator
    exit
}

# Validate signatures as usual..
set i 0
while {$i < [CkXmlDSig_get_NumSignatures $validator]} {
    CkXmlDSig_put_Selector $validator $i

    set valid [CkXmlDSig_VerifySignature $validator 1]
    puts "Signature [expr $i + 1] and all reference digests OK = $valid"

    set i [expr $i + 1]
}

delete_CkStringBuilder $sbXml
delete_CkXmlDSig $validator