Example usage for javax.xml.crypto.dsig Transform XPATH

List of usage examples for javax.xml.crypto.dsig Transform XPATH

Introduction

In this page you can find the example usage for javax.xml.crypto.dsig Transform XPATH.

Prototype

String XPATH

To view the source code for javax.xml.crypto.dsig Transform XPATH.

Click Source Link

Document

The <a href="http://www.w3.org/TR/1999/REC-xpath-19991116">XPath</a> transform algorithm URI.

Usage

From source file:org.apache.jcp.xml.dsig.internal.dom.DOMXMLSignature.java

private void digestReference(DOMReference ref, XMLSignContext signContext) throws XMLSignatureException {
    if (ref.isDigested()) {
        return;/*from w w  w . j ava2 s.c  o  m*/
    }
    // check dependencies
    String uri = ref.getURI();
    if (Utils.sameDocumentURI(uri)) {
        String id = Utils.parseIdFromSameDocumentURI(uri);
        if (id != null && signatureIdMap.containsKey(id)) {
            XMLStructure xs = signatureIdMap.get(id);
            if (xs instanceof DOMReference) {
                digestReference((DOMReference) xs, signContext);
            } else if (xs instanceof Manifest) {
                Manifest man = (Manifest) xs;
                List manRefs = man.getReferences();
                for (int i = 0, size = manRefs.size(); i < size; i++) {
                    digestReference((DOMReference) manRefs.get(i), signContext);
                }
            }
        }
        // if uri="" and there are XPath Transforms, there may be
        // reference dependencies in the XPath Transform - so be on
        // the safe side, and skip and do at end in the final sweep
        if (uri.length() == 0) {
            @SuppressWarnings("unchecked")
            List<Transform> transforms = ref.getTransforms();
            for (Transform transform : transforms) {
                String transformAlg = transform.getAlgorithm();
                if (transformAlg.equals(Transform.XPATH) || transformAlg.equals(Transform.XPATH2)) {
                    return;
                }
            }
        }
    }
    ref.digest(signContext);
}