public Element getQualifyingPropertiesDom() { return DSSXMLUtils.getElement(signatureElement, xPathQueryHolder.XPATH_QUALIFYING_PROPERTIES); } }
public Element getObject() { return DSSXMLUtils.getElement(signatureElement, xPathQueryHolder.XPATH_OBJECT); }
public Element getCompleteCertificateRefs() { return DSSXMLUtils.getElement(signatureElement, xPathQueryHolder.XPATH_COMPLETE_CERTIFICATE_REFS); }
public Element getUnsignedPropertiesDom() { return DSSXMLUtils.getElement(signatureElement, xPathQueryHolder.XPATH_UNSIGNED_PROPERTIES); }
public Element getCertificateValues() { return DSSXMLUtils.getElement(signatureElement, xPathQueryHolder.XPATH_CERTIFICATE_VALUES); }
public Element getRevocationValues() { return DSSXMLUtils.getElement(signatureElement, xPathQueryHolder.XPATH_REVOCATION_VALUES); }
public Element getSignatureValue() { return DSSXMLUtils.getElement(signatureElement, xPathQueryHolder.XPATH_SIGNATURE_VALUE); }
public Element getCompleteRevocationRefs() { return DSSXMLUtils.getElement(signatureElement, xPathQueryHolder.XPATH_COMPLETE_REVOCATION_REFS); }
public Element getUnsignedSignaturePropertiesDom() { return DSSXMLUtils.getElement(signatureElement, xPathQueryHolder.XPATH_UNSIGNED_SIGNATURE_PROPERTIES); }
@Override public Date getSigningTime() { final Element signingTimeEl = DSSXMLUtils.getElement(signatureElement, xPathQueryHolder.XPATH_SIGNING_TIME); if (signingTimeEl == null) { return null; } final String text = signingTimeEl.getTextContent(); return DSSXMLUtils.getDate(text); }
private void writeCanonicalizedValue(final String xPathString, final String canonicalizationMethod, final ByteArrayOutputStream buffer) throws IOException { final Element element = DSSXMLUtils.getElement(signatureElement, xPathString); if (element != null) { final byte[] canonicalizedValue = DSSXMLUtils.canonicalizeSubtree(canonicalizationMethod, element); buffer.write(canonicalizedValue); } }
private void setTimestampCanonicalizationMethod(final Element timestampElement, final TimestampToken timestampToken) { final Element canonicalizationMethodElement = DSSXMLUtils.getElement(timestampElement, xPathQueryHolder.XPATH__CANONICALIZATION_METHOD); String canonicalizationMethod = DEFAULT_TIMESTAMP_VALIDATION_CANONICALIZATION_METHOD; if (canonicalizationMethodElement != null) { canonicalizationMethod = canonicalizationMethodElement.getAttribute(XMLE_ALGORITHM); } timestampToken.setCanonicalizationMethod(canonicalizationMethod); }
/** * 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) { ArrayList<String> childrenNames = new ArrayList<String>(); final Element element = DSSXMLUtils.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; }
/** * @return */ public List<Element> getSignatureObjects() { final NodeList list = DSSXMLUtils.getNodeList(signatureElement, XPathQueryHolder.XPATH_OBJECT); final List<Element> references = new ArrayList<Element>(list.getLength()); for (int ii = 0; ii < list.getLength(); ii++) { final Node node = list.item(ii); final Element element = (Element) node; if (DSSXMLUtils.getElement(element, xPathQueryHolder.XPATH__QUALIFYING_PROPERTIES_SIGNED_PROPERTIES) != null) { // ignore signed properties continue; } references.add(element); } return references; }
@Override public EncryptionAlgorithm getEncryptionAlgorithm() { final String xmlName = DSSXMLUtils.getElement(signatureElement, xPathQueryHolder.XPATH_SIGNATURE_METHOD).getAttribute(XMLE_ALGORITHM); final SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.forXML(xmlName, null); if (signatureAlgorithm == null) { return null; } return signatureAlgorithm.getEncryptionAlgorithm(); }
@Override public DigestAlgorithm getDigestAlgorithm() { final String xmlName = DSSXMLUtils.getElement(signatureElement, xPathQueryHolder.XPATH_SIGNATURE_METHOD).getAttribute(XMLE_ALGORITHM); final SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.forXML(xmlName, null); if (signatureAlgorithm == null) { return null; } return signatureAlgorithm.getDigestAlgorithm(); }
@Override public List<TimestampReference> getTimestampedReferences() { final List<TimestampReference> references = new ArrayList<TimestampReference>(); final Node completeCertificateRefsNode = DSSXMLUtils.getElement(signatureElement, xPathQueryHolder.XPATH_COMPLETE_CERTIFICATE_REFS); if (completeCertificateRefsNode != null) { final NodeList nodes = DSSXMLUtils.getNodeList(completeCertificateRefsNode, xPathQueryHolder.XPATH__COMPLETE_CERTIFICATE_REFS__CERT_DIGEST); for (int ii = 0; ii < nodes.getLength(); ii++) { final Element certDigestElement = (Element) nodes.item(ii); final TimestampReference certificateReference = createCertificateTimestampReference(certDigestElement); references.add(certificateReference); } } final Node completeRevocationRefsNode = DSSXMLUtils.getElement(signatureElement, xPathQueryHolder.XPATH_COMPLETE_REVOCATION_REFS); if (completeRevocationRefsNode != null) { final NodeList nodes = DSSXMLUtils.getNodeList(completeRevocationRefsNode, "./*/*/xades:DigestAlgAndValue"); for (int ii = 0; ii < nodes.getLength(); ii++) { final Element element = (Element) nodes.item(ii); final TimestampReference revocationReference = createRevocationTimestampReference(element); references.add(revocationReference); } } return references; }
@Override public List<CRLRef> getCRLRefs() { final List<CRLRef> certIds = new ArrayList<CRLRef>(); final Element signingCertEl = DSSXMLUtils.getElement(signatureElement, xPathQueryHolder.XPATH_REVOCATION_CRL_REFS); if (signingCertEl != null) { final NodeList crlRefNodes = DSSXMLUtils.getNodeList(signingCertEl, xPathQueryHolder.XPATH__CRL_REF); for (int i = 0; i < crlRefNodes.getLength(); i++) { final Element certId = (Element) crlRefNodes.item(i); final Element digestAlgorithmEl = DSSXMLUtils.getElement(certId, xPathQueryHolder.XPATH__DAAV_DIGEST_METHOD); final Element digestValueEl = DSSXMLUtils.getElement(certId, xPathQueryHolder.XPATH__DAAV_DIGEST_VALUE); final String xmlName = digestAlgorithmEl.getAttribute(XMLE_ALGORITHM); final DigestAlgorithm digestAlgo = DigestAlgorithm.forXML(xmlName); final CRLRef ref = new CRLRef(); ref.setDigestAlgorithm(digestAlgo); ref.setDigestValue(DSSUtils.base64Decode(digestValueEl.getTextContent())); certIds.add(ref); } } return certIds; }
private TimestampReference createRevocationTimestampReference(Element element) { String digestAlgorithm = DSSXMLUtils.getNode(element, xPathQueryHolder.XPATH__DIGEST_METHOD_ALGORITHM).getTextContent(); digestAlgorithm = DigestAlgorithm.forXML(digestAlgorithm).getName(); final String digestValue = DSSXMLUtils.getElement(element, xPathQueryHolder.XPATH__DIGEST_VALUE).getTextContent(); final TimestampReference revocationReference = new TimestampReference(digestAlgorithm, digestValue); return revocationReference; }
/** * This method creates * * @param element * @return * @throws eu.europa.ec.markt.dss.exception.DSSException */ private TimestampReference createCertificateTimestampReference(final Element element) throws DSSException { final String xmlDigestAlgorithm = DSSXMLUtils.getNode(element, xPathQueryHolder.XPATH__DIGEST_METHOD_ALGORITHM).getTextContent(); final DigestAlgorithm digestAlgorithm = DigestAlgorithm.forXML(xmlDigestAlgorithm); usedCertificatesDigestAlgorithms.add(digestAlgorithm); final Element digestValueElement = DSSXMLUtils.getElement(element, xPathQueryHolder.XPATH__DIGEST_VALUE); final String digestValue = (digestValueElement == null) ? "" : digestValueElement.getTextContent(); final TimestampReference reference = new TimestampReference(digestAlgorithm.name(), digestValue); return reference; }