/** * This method returns the list of children's names for a given {@code Node}. * * @param xmlNode * The node where the search should be performed. * @param xPathString * XPath query string * @return {@code List} of children's names */ public static List<String> getChildrenNames(final Node xmlNode, final String xPathString) { List<String> childrenNames = new ArrayList<String>(); final Element element = getElement(xmlNode, xPathString); if (element != null) { final NodeList unsignedProperties = element.getChildNodes(); for (int ii = 0; ii < unsignedProperties.getLength(); ++ii) { final Node node = unsignedProperties.item(ii); childrenNames.add(node.getLocalName()); } } return childrenNames; }
private TimeStampToken findTimestampToken() { logger.debug("Finding timestamp token"); NodeList timestampNodes = DomUtils.getNodeList(signatureElement, xPathQueryHolder.XPATH_SIGNATURE_TIMESTAMP); if (timestampNodes.getLength() == 0) { logger.warn("Signature timestamp element was not found"); return null; } if (timestampNodes.getLength() > 1) { logger.warn("Signature contains more than one timestamp: " + timestampNodes.getLength() + ". Using only the first one"); } Node timestampNode = timestampNodes.item(0); Element timestampTokenNode = DomUtils.getElement(timestampNode, xPathQueryHolder.XPATH__ENCAPSULATED_TIMESTAMP); if (timestampTokenNode == null) { logger.warn("The timestamp cannot be extracted from the signature"); return null; } String base64EncodedTimestamp = timestampTokenNode.getTextContent(); return createTimeStampToken(base64EncodedTimestamp); }
private void addPolicyIdentifierQualifierValidationErrors() { LOGGER.debug("Extracting policy identifier qualifier validation errors"); XPathQueryHolder xPathQueryHolder = getDssSignature().getXPathQueryHolder(); Element signatureElement = getDssSignature().getSignatureElement(); Element element = DomUtils.getElement(signatureElement, xPathQueryHolder.XPATH_SIGNATURE_POLICY_IDENTIFIER); Element identifier = DomUtils.getElement(element, "./xades:SignaturePolicyId/xades:SigPolicyId/xades:Identifier"); String qualifier = identifier.getAttribute("Qualifier"); if (!StringUtils.equals(XadesSignatureValidator.OIDAS_URN, qualifier)) { this.addValidationError(new WrongPolicyIdentifierQualifierException(String.format("Wrong policy identifier qualifier: %s", qualifier))); } }
protected boolean isSignaturePolicyImpliedElementPresented() { XPathQueryHolder xPathQueryHolder = this.getDssSignature().getXPathQueryHolder(); Element signaturePolicyImpliedElement = DomUtils.getElement(this.getDssSignature().getSignatureElement(), String.format("%s%s", xPathQueryHolder.XPATH_SIGNATURE_POLICY_IDENTIFIER, xPathQueryHolder.XPATH__SIGNATURE_POLICY_IMPLIED.replace(".", ""))); return signaturePolicyImpliedElement != null; }