import java.io.IOException;
import java.io.InputStream;
-import java.io.StringWriter;
import java.lang.reflect.Method;
import java.util.concurrent.TimeUnit;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.stream.events.Namespace;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
import org.apache.poi.util.POILogFactory;
import org.apache.poi.util.POILogger;
}
}
- public static String domToString(Node node) throws Exception {
- TransformerFactory tf = TransformerFactory.newInstance();
- Transformer t = tf.newTransformer();
- t.setOutputProperty(OutputKeys.INDENT, "yes");
- StringWriter sw = new StringWriter();
- t.transform(new DOMSource(node), new StreamResult(sw));
- return sw.toString();
- }
-
- public static Attr findIdAttr(Element e, String name) throws Exception {
- Attr att = e.getAttributeNode("Id");
- if(att != null && name.equals(att.getValue())) {
- return att;
- }
- NodeList nl = e.getChildNodes();
- for (int i = 0; i < nl.getLength(); i++) {
- Node child = nl.item(i);
- if (child instanceof Element) {
- Attr x = findIdAttr((Element)child, name);
- if (x != null) {
- return x;
- }
- }
- }
- return null;
- }
-
static final DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
static {
documentBuilderFactory.setNamespaceAware(true);
import org.etsi.uri.x01903.v13.SignerRoleType;
import org.w3.x2000.x09.xmldsig.DigestMethodType;
import org.w3.x2000.x09.xmldsig.X509IssuerSerialType;
-import org.w3c.dom.*;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
/**
* XAdES Signature Facet. Implements XAdES v1.4.1 which is compatible with XAdES
private XMLObject addXadesObject(Document document, QualifyingPropertiesType qualifyingProperties) {
Node qualDocElSrc = qualifyingProperties.getDomNode();
Node qualDocEl = document.importNode(qualDocElSrc, true);
- markIds(qualDocEl);
List<XMLStructure> xadesObjectContent = Arrays.asList(new DOMStructure(qualDocEl));
return getSignatureFactory().newXMLObject(xadesObjectContent, null, null, null);
}
- private void markIds(Node node) {
- if (node instanceof Element) {
- markIds((Element)node);
- } else if (node instanceof Document) {
- markIds(((Document)node).getDocumentElement());
- }
- }
-
- private void markIds(Element element) {
- if (element != null) {
- Attr att = element.getAttributeNode("Id");
- if (att != null) {
- element.setIdAttributeNode(att, true);
- }
- NodeList nl = element.getChildNodes();
- for (int i = 0; i < nl.getLength(); i++) {
- markIds(nl.item(i));
- }
- }
- }
-
private Reference addXadesReference() throws XMLSignatureException {
List<Transform> transforms = singletonList(newTransform(CanonicalizationMethod.INCLUSIVE));
return newReference("#"+signatureConfig.getXadesSignatureId(), transforms, XADES_TYPE, null, null);