Sample code for 30+ languages & platforms
Dart

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 Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  // 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..
  final sbXml = CkStringBuilder();
  try {
    sbXml.loadFile('qa_data/xml_dsig_valid_samples/externalFile/test.pdf.XAdES', 'utf-8');
  } on ChilkatException {
    print('Failed to load XAdES input file.');
    return;
  }

  final validator = 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.
  validator.externalRefDirs = 'qa_data/externalFiles;qa_data/xml_dsig_valid_samples/externalFile;c:/someOtherDir';

  try {
    validator.loadSignatureSb(sbXml);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // Validate signatures as usual..
  var i = 0;
  while (i < validator.numSignatures) {
    validator.selector = i;

    var valid = true;
    try {
      validator.verifySignature(true);
    } on ChilkatException {
      valid = false;
    }
    print('Signature ${i + 1} and all reference digests OK = $valid');

    i++;
  }
}