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

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

Introduction

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

Prototype

String XPATH2

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

Click Source Link

Document

The <a href="http://www.w3.org/2002/06/xmldsig-filter2"> XPath Filter 2</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  ww  w  .j  a  v a2 s  .  co  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);
}