/** * Dereferences and decodes encrypted data elements. * * @param elem contains the <code>ReferenceList</code> to the encrypted * data elements */ private List<WSDataRef> handleReferenceList( Element elem, RequestData data ) throws WSSecurityException { List<WSDataRef> dataRefs = new ArrayList<>(); for (Node node = elem.getFirstChild(); node != null; node = node.getNextSibling() ) { if (Node.ELEMENT_NODE == node.getNodeType() && WSConstants.ENC_NS.equals(node.getNamespaceURI()) && "DataReference".equals(node.getLocalName())) { String dataRefURI = ((Element) node).getAttributeNS(null, "URI"); dataRefURI = XMLUtils.getIDFromReference(dataRefURI); // See whether we have already processed the encrypted node if (!data.getWsDocInfo().hasResult(WSConstants.ENCR, dataRefURI)) { WSDataRef dataRef = decryptDataRefEmbedded(elem.getOwnerDocument(), dataRefURI, data); dataRefs.add(dataRef); } } } return dataRefs; }