Sample code for 30+ languages & platforms
Java

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

Chilkat2 Java
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.StringBuilder;
import com.chilkatsoft.chilkat2.XmlDSig;

public class ChilkatExample {

    public static void main(String[] args) {
        // 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..
        StringBuilder sbXml = new StringBuilder();
        try {
            sbXml.loadFile("qa_data/xml_dsig_valid_samples/externalFile/test.pdf.XAdES", "utf-8");
        } catch (ChilkatException e) {
            System.out.println("Failed to load XAdES input file.");
            return;
        }

        XmlDSig validator = new XmlDSig();

        // 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.setExternalRefDirs("qa_data/externalFiles;qa_data/xml_dsig_valid_samples/externalFile;c:/someOtherDir");

        try {
            validator.loadSignatureSb(sbXml);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // Validate signatures as usual..
        int i = 0;
        while (i < validator.getNumSignatures()) {
            validator.setSelector(i);

            boolean valid;
            try {
                validator.verifySignature(true);
                valid = true;
            } catch (ChilkatException e) {
                valid = false;
            }
            System.out.println("Signature " + (i + 1) + " and all reference digests OK = " + valid);

            i = i + 1;
        }
    }
}