]> source.dussan.org Git - poi.git/commitdiff
configure namespaces via signatureconfig
authorAndreas Beeker <kiwiwings@apache.org>
Sat, 27 Sep 2014 17:49:09 +0000 (17:49 +0000)
committerAndreas Beeker <kiwiwings@apache.org>
Sat, 27 Sep 2014 17:49:09 +0000 (17:49 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/branches/xml_signature@1627985 13f79535-47bb-0310-9956-ffa450edef68

src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureConfig.java
src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureInfo.java
src/ooxml/java/org/apache/poi/poifs/crypt/dsig/facets/EnvelopedSignatureFacet.java
src/ooxml/java/org/apache/poi/poifs/crypt/dsig/facets/KeyInfoSignatureFacet.java
src/ooxml/java/org/apache/poi/poifs/crypt/dsig/facets/OOXMLSignatureFacet.java
src/ooxml/java/org/apache/poi/poifs/crypt/dsig/facets/Office2010SignatureFacet.java
src/ooxml/java/org/apache/poi/poifs/crypt/dsig/facets/SignatureFacet.java
src/ooxml/java/org/apache/poi/poifs/crypt/dsig/facets/XAdESSignatureFacet.java
src/ooxml/java/org/apache/poi/poifs/crypt/dsig/facets/XAdESXLSignatureFacet.java
src/ooxml/java/org/apache/poi/poifs/crypt/dsig/services/RelationshipTransformService.java

index f97425361462d24a36505ed2f99fa68b3d435637..6878cde43649c44e6414250f0bfae803ab753d5f 100644 (file)
 \r
 package org.apache.poi.poifs.crypt.dsig;\r
 \r
+import static org.apache.poi.poifs.crypt.dsig.facets.SignatureFacet.OO_DIGSIG_NS;\r
+import static org.apache.poi.poifs.crypt.dsig.facets.SignatureFacet.XADES_132_NS;\r
+\r
 import java.security.PrivateKey;\r
 import java.security.cert.X509Certificate;\r
 import java.util.ArrayList;\r
 import java.util.Date;\r
+import java.util.HashMap;\r
 import java.util.List;\r
+import java.util.Map;\r
 import java.util.UUID;\r
 \r
 import javax.xml.crypto.URIDereferencer;\r
@@ -73,7 +78,6 @@ public class SignatureConfig {
      */\r
     private SignaturePolicyService signaturePolicyService;\r
     private URIDereferencer uriDereferencer = new OOXMLURIDereferencer();\r
-    private String signatureNamespacePrefix;\r
     private String canonicalizationMethod = CanonicalizationMethod.INCLUSIVE;\r
     \r
     private boolean includeEntireCertificateChain = true;\r
@@ -130,6 +134,12 @@ public class SignatureConfig {
      */\r
     EventListener signCreationListener = null;\r
 \r
+    /**\r
+     * Map of namespace uris to prefix\r
+     * If a mapping is specified, the corresponding elements will be prefixed\r
+     */\r
+    Map<String,String> namespacePrefixes = new HashMap<String,String>();\r
+    \r
     protected void init(boolean onlyValidation) {\r
         if (uriDereferencer == null) {\r
             throw new EncryptedDocumentException("uriDereferencer is null");\r
@@ -140,6 +150,15 @@ public class SignatureConfig {
         if (uriDereferencer instanceof SignatureConfigurable) {\r
             ((SignatureConfigurable)uriDereferencer).setSignatureConfig(this);\r
         }\r
+        if (namespacePrefixes.isEmpty()) {\r
+            /*\r
+             * OOo doesn't like ds namespaces so per default prefixing is off.\r
+             */\r
+            // namespacePrefixes.put(XML_DIGSIG_NS, "");\r
+            namespacePrefixes.put(OO_DIGSIG_NS, "mdssi");\r
+            namespacePrefixes.put(XADES_132_NS, "xd");\r
+        }\r
+        \r
         if (onlyValidation) return;\r
 \r
         if (signCreationListener == null) {\r
@@ -149,7 +168,6 @@ public class SignatureConfig {
         if (signCreationListener instanceof SignatureConfigurable) {\r
             ((SignatureConfigurable)signCreationListener).setSignatureConfig(this);\r
         }\r
-\r
         \r
         if (tspService != null) {\r
             tspService.setSignatureConfig(this);\r
@@ -263,12 +281,6 @@ public class SignatureConfig {
     public void setSignatureDescription(String signatureDescription) {\r
         this.signatureDescription = signatureDescription;\r
     }\r
-    public String getSignatureNamespacePrefix() {\r
-        return signatureNamespacePrefix;\r
-    }\r
-    public void setSignatureNamespacePrefix(String signatureNamespacePrefix) {\r
-        this.signatureNamespacePrefix = signatureNamespacePrefix;\r
-    }\r
     public String getCanonicalizationMethod() {\r
         return canonicalizationMethod;\r
     }\r
@@ -403,4 +415,10 @@ public class SignatureConfig {
     public void setSignCreationListener(EventListener signCreationListener) {\r
         this.signCreationListener = signCreationListener;\r
     }\r
+    public Map<String, String> getNamespacePrefixes() {\r
+        return namespacePrefixes;\r
+    }\r
+    public void setNamespacePrefixes(Map<String, String> namespacePrefixes) {\r
+        this.namespacePrefixes = namespacePrefixes;\r
+    }\r
 }\r
index d4b5ecd1d36f0f8e12dba4a0a269a4ff6e61fd32..6798067f3f817e19564df6aa5076b3cdbc46aa87 100644 (file)
@@ -24,6 +24,9 @@
 \r
 package org.apache.poi.poifs.crypt.dsig;\r
 \r
+import static org.apache.poi.poifs.crypt.dsig.facets.SignatureFacet.OO_DIGSIG_NS;\r
+import static org.apache.poi.poifs.crypt.dsig.facets.SignatureFacet.XML_DIGSIG_NS;\r
+import static org.apache.poi.poifs.crypt.dsig.facets.SignatureFacet.XML_NS;\r
 import static org.apache.xml.security.signature.XMLSignature.ALGO_ID_MAC_HMAC_RIPEMD160;\r
 import static org.apache.xml.security.signature.XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA1;\r
 import static org.apache.xml.security.signature.XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA256;\r
@@ -80,7 +83,6 @@ import org.apache.jcp.xml.dsig.internal.dom.DOMSignedInfo;
 import org.apache.poi.EncryptedDocumentException;\r
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;\r
 import org.apache.poi.openxml4j.opc.OPCPackage;\r
-import org.apache.poi.openxml4j.opc.PackageNamespaces;\r
 import org.apache.poi.openxml4j.opc.PackagePart;\r
 import org.apache.poi.openxml4j.opc.PackagePartName;\r
 import org.apache.poi.openxml4j.opc.PackageRelationship;\r
@@ -115,9 +117,6 @@ import org.xml.sax.SAXException;
 \r
 public class SignatureInfo implements SignatureConfigurable {\r
 \r
-    public static final String XmlNS = "http://www.w3.org/2000/xmlns/";\r
-    public static final String XmlDSigNS = XMLSignature.XMLNS;\r
-    \r
     // see https://www.ietf.org/rfc/rfc3110.txt\r
     // RSA/SHA1 SIG Resource Records\r
     public static final byte[] SHA1_DIGEST_INFO_PREFIX = new byte[]\r
@@ -222,13 +221,14 @@ public class SignatureInfo implements SignatureConfigurable {
                         \r
                         if (packageId.equals(el.getAttribute("Id"))) {\r
                             target.get().removeEventListener("DOMSubtreeModified", this, false);\r
-                            el.setAttributeNS(XmlNS, "xmlns:mdssi", PackageNamespaces.DIGITAL_SIGNATURE);\r
+                            el.setAttributeNS(XML_NS, "xmlns:mdssi", OO_DIGSIG_NS);\r
                             target.get().addEventListener("DOMSubtreeModified", this, false);\r
                         }\r
                     }\r
                 }\r
             }\r
         }\r
+        \r
         public void setSignatureConfig(SignatureConfig signatureConfig) {\r
             this.signatureConfig = signatureConfig;\r
         }\r
@@ -439,18 +439,11 @@ public class SignatureInfo implements SignatureConfigurable {
             xmlSignContext.setURIDereferencer(uriDereferencer);\r
         }\r
 \r
-        xmlSignContext.putNamespacePrefix(\r
-                "http://schemas.openxmlformats.org/package/2006/digital-signature",\r
-                "mdssi");\r
-        \r
-        String sigNsPrefix = signatureConfig.getSignatureNamespacePrefix();\r
-        if (sigNsPrefix != null) {\r
-            /*\r
-             * OOo doesn't like ds namespaces so per default prefixing is off.\r
-             */\r
-            xmlSignContext.putNamespacePrefix(XmlDSigNS, sigNsPrefix);\r
+        for (Map.Entry<String,String> me : signatureConfig.getNamespacePrefixes().entrySet()) {\r
+            xmlSignContext.putNamespacePrefix(me.getKey(), me.getValue());\r
         }\r
-\r
+        xmlSignContext.setDefaultNamespacePrefix(signatureConfig.getNamespacePrefixes().get(XML_DIGSIG_NS));\r
+        \r
         XMLSignatureFactory signatureFactory = SignatureInfo.getSignatureFactory();\r
 \r
         /*\r
@@ -500,8 +493,6 @@ public class SignatureInfo implements SignatureConfigurable {
         /*\r
          * ds:Signature Marshalling.\r
          */\r
-        xmlSignContext.setDefaultNamespacePrefix(signatureConfig.getSignatureNamespacePrefix());\r
-        // xmlSignContext.putNamespacePrefix(PackageNamespaces.DIGITAL_SIGNATURE, "mdssi");\r
         xmlSignature.sign(xmlSignContext);\r
 \r
         /*\r
@@ -550,8 +541,8 @@ public class SignatureInfo implements SignatureConfigurable {
          * usage.\r
          */\r
 \r
-        MessageDigest jcaMessageDigest = CryptoFunctions.getMessageDigest(signatureConfig.getDigestAlgo());\r
-        byte[] digestValue = jcaMessageDigest.digest(octets);\r
+        MessageDigest md = CryptoFunctions.getMessageDigest(signatureConfig.getDigestAlgo());\r
+        byte[] digestValue = md.digest(octets);\r
         \r
         \r
         String description = signatureConfig.getSignatureDescription();\r
@@ -577,7 +568,7 @@ public class SignatureInfo implements SignatureConfigurable {
         /*\r
          * Insert signature value into the ds:SignatureValue element\r
          */\r
-        NodeList sigValNl = document.getElementsByTagNameNS(XmlDSigNS, "SignatureValue");\r
+        NodeList sigValNl = document.getElementsByTagNameNS(XML_DIGSIG_NS, "SignatureValue");\r
         if (sigValNl.getLength() != 1) {\r
             throw new RuntimeException("preSign has to be called before postSign");\r
         }\r
@@ -596,12 +587,9 @@ public class SignatureInfo implements SignatureConfigurable {
     protected void writeDocument(Document document) throws IOException, XmlException {\r
         XmlOptions xo = new XmlOptions();\r
         Map<String,String> namespaceMap = new HashMap<String,String>();\r
-        for (SignatureFacet sf : signatureConfig.getSignatureFacets()) {\r
-            Map<String,String> sfm = sf.getNamespacePrefixMapping();\r
-            if (sfm != null) {\r
-                namespaceMap.putAll(sfm);\r
-            }\r
-        }\r
+        for(Map.Entry<String,String> entry : signatureConfig.getNamespacePrefixes().entrySet()){\r
+            namespaceMap.put(entry.getValue(), entry.getKey());\r
+        }        \r
         xo.setSaveSuggestedPrefixes(namespaceMap);\r
         xo.setUseDefaultNamespace();\r
 \r
@@ -651,7 +639,7 @@ public class SignatureInfo implements SignatureConfigurable {
     }\r
     \r
     @SuppressWarnings("unchecked")\r
-    public static <T> List<T> safe(List<T> other) {\r
+    private static <T> List<T> safe(List<T> other) {\r
         return other == null ? Collections.EMPTY_LIST : other;\r
     }\r
 }\r
index fac4597e6c5a56dd3a810c4c01c4ee46c51455ad..c96e932a5da3e3ed0759887b7a6419ce786f8901 100644 (file)
@@ -5,7 +5,6 @@ import java.security.NoSuchAlgorithmException;
 import java.security.cert.X509Certificate;\r
 import java.util.ArrayList;\r
 import java.util.List;\r
-import java.util.Map;\r
 \r
 import javax.xml.crypto.dsig.CanonicalizationMethod;\r
 import javax.xml.crypto.dsig.DigestMethod;\r
@@ -60,9 +59,4 @@ public class EnvelopedSignatureFacet implements SignatureFacet {
 \r
         references.add(reference);\r
     }\r
-\r
-    @Override\r
-    public Map<String,String> getNamespacePrefixMapping() {\r
-        return null;\r
-    }\r
 }\r
index 62d49269d40c23c8ffdf0660a22cd7aef8cdfb72..a7e2c3ac6363ec1bb047a2b85c509d78e3268ae0 100644 (file)
 \r
 package org.apache.poi.poifs.crypt.dsig.facets;\r
 \r
-import static org.apache.poi.poifs.crypt.dsig.SignatureInfo.XmlDSigNS;\r
-\r
 import java.security.InvalidAlgorithmParameterException;\r
 import java.security.Key;\r
 import java.security.KeyException;\r
 import java.security.NoSuchAlgorithmException;\r
 import java.security.cert.X509Certificate;\r
 import java.util.ArrayList;\r
-import java.util.HashMap;\r
 import java.util.List;\r
-import java.util.Map;\r
 \r
 import javax.xml.crypto.MarshalException;\r
 import javax.xml.crypto.dom.DOMCryptoContext;\r
@@ -79,7 +75,7 @@ public class KeyInfoSignatureFacet implements SignatureFacet {
     throws MarshalException {\r
         LOG.log(POILogger.DEBUG, "postSign");\r
 \r
-        NodeList nl = document.getElementsByTagNameNS(XmlDSigNS, "Object");\r
+        NodeList nl = document.getElementsByTagNameNS(XML_DIGSIG_NS, "Object");\r
         \r
         /*\r
          * Make sure we insert right after the ds:SignatureValue element, just\r
@@ -144,14 +140,14 @@ public class KeyInfoSignatureFacet implements SignatureFacet {
         Element n = document.getDocumentElement();\r
         DOMSignContext domSignContext = new DOMSignContext(key, n, nextSibling);\r
         DOMCryptoContext domCryptoContext = domSignContext;\r
-        domCryptoContext.putNamespacePrefix(XmlDSigNS, "xd");\r
+        domCryptoContext.putNamespacePrefix(XML_DIGSIG_NS, "xd");\r
         DOMStructure domStructure = new DOMStructure(n);\r
         // how to set nextSibling??? - marshal is ignoring nextSibling in DOMSignContext\r
         domKeyInfo.marshal(domStructure, domCryptoContext);\r
         \r
         // move keyinfo into the right place\r
         if (nextSibling != null) {\r
-            NodeList kiNl = document.getElementsByTagNameNS(XmlDSigNS, "KeyInfo");\r
+            NodeList kiNl = document.getElementsByTagNameNS(XML_DIGSIG_NS, "KeyInfo");\r
             if (kiNl.getLength() != 1) {\r
                 throw new RuntimeException("KeyInfo wasn't set");\r
             }\r
@@ -168,11 +164,4 @@ public class KeyInfoSignatureFacet implements SignatureFacet {
     ) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException {\r
         // empty\r
     }\r
-\r
-    public Map<String,String> getNamespacePrefixMapping() {\r
-        Map<String,String> map = new HashMap<String,String>();\r
-        // map.put("xd", XmlDSigNS);\r
-        return map;\r
-    }\r
-\r
 }
\ No newline at end of file
index e762e49267038b17ad20157e1b61d78a422b919c..868c4224d4ee08b77190854b1cb96a136850c45a 100644 (file)
@@ -24,8 +24,6 @@
 \r
 package org.apache.poi.poifs.crypt.dsig.facets;\r
 \r
-import static org.apache.poi.poifs.crypt.dsig.SignatureInfo.XmlDSigNS;\r
-import static org.apache.poi.poifs.crypt.dsig.SignatureInfo.XmlNS;\r
 import static org.apache.poi.poifs.crypt.dsig.SignatureInfo.setPrefix;\r
 \r
 import java.io.IOException;\r
@@ -37,10 +35,8 @@ import java.security.cert.X509Certificate;
 import java.text.DateFormat;\r
 import java.text.SimpleDateFormat;\r
 import java.util.ArrayList;\r
-import java.util.HashMap;\r
 import java.util.HashSet;\r
 import java.util.List;\r
-import java.util.Map;\r
 import java.util.Set;\r
 import java.util.TimeZone;\r
 \r
@@ -60,7 +56,6 @@ import javax.xml.crypto.dsig.spec.TransformParameterSpec;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;\r
 import org.apache.poi.openxml4j.opc.ContentTypes;\r
 import org.apache.poi.openxml4j.opc.OPCPackage;\r
-import org.apache.poi.openxml4j.opc.PackageNamespaces;\r
 import org.apache.poi.openxml4j.opc.PackagePart;\r
 import org.apache.poi.openxml4j.opc.PackagePartName;\r
 import org.apache.poi.openxml4j.opc.PackageRelationship;\r
@@ -91,9 +86,6 @@ public class OOXMLSignatureFacet implements SignatureFacet {
 \r
     private static final POILogger LOG = POILogFactory.getLogger(OOXMLSignatureFacet.class);\r
 \r
-    public static final String OOXML_DIGSIG_NS = "http://schemas.openxmlformats.org/package/2006/digital-signature";\r
-    public static final String OFFICE_DIGSIG_NS = "http://schemas.microsoft.com/office/2006/digsig";\r
-\r
     private SignatureConfig signatureConfig;\r
 \r
     public void setSignatureConfig(SignatureConfig signatureConfig) {\r
@@ -133,7 +125,7 @@ public class OOXMLSignatureFacet implements SignatureFacet {
 \r
         DigestMethod digestMethod = signatureFactory.newDigestMethod(signatureConfig.getDigestAlgo().xmlSignUri, null);\r
         Reference reference = signatureFactory.newReference\r
-            ("#" + objectId, digestMethod, null, XmlDSigNS+"Object", null);\r
+            ("#" + objectId, digestMethod, null, XML_DIGSIG_NS+"Object", null);\r
         references.add(reference);\r
     }\r
 \r
@@ -238,7 +230,7 @@ public class OOXMLSignatureFacet implements SignatureFacet {
 \r
         // TODO: find better method to have xmlbeans + export the prefix\r
         Element n = (Element)document.importNode(ctTime.getDomNode(),true);\r
-        setPrefix(n, PackageNamespaces.DIGITAL_SIGNATURE, "mdssi");\r
+        setPrefix(n, OO_DIGSIG_NS, "mdssi");\r
         \r
         List<XMLStructure> signatureTimeContent = new ArrayList<XMLStructure>();\r
         signatureTimeContent.add(new DOMStructure(n));\r
@@ -264,7 +256,7 @@ public class OOXMLSignatureFacet implements SignatureFacet {
         CTSignatureInfoV1 ctSigV1 = sigV1.addNewSignatureInfoV1();\r
         ctSigV1.setManifestHashAlgorithm(signatureConfig.getDigestAlgo().xmlSignUri);\r
         Element n = (Element)document.importNode(ctSigV1.getDomNode(), true);\r
-        n.setAttributeNS(XmlNS, "xmlns", "http://schemas.microsoft.com/office/2006/digsig");\r
+        n.setAttributeNS(XML_NS, "xmlns", "http://schemas.microsoft.com/office/2006/digsig");\r
         \r
         List<XMLStructure> signatureInfoContent = new ArrayList<XMLStructure>();\r
         signatureInfoContent.add(new DOMStructure(n));\r
@@ -283,7 +275,7 @@ public class OOXMLSignatureFacet implements SignatureFacet {
 \r
         DigestMethod digestMethod = signatureFactory.newDigestMethod(signatureConfig.getDigestAlgo().xmlSignUri, null);\r
         Reference reference = signatureFactory.newReference\r
-            ("#" + objectId, digestMethod, null, XmlDSigNS+"Object", null);\r
+            ("#" + objectId, digestMethod, null, XML_DIGSIG_NS+"Object", null);\r
         references.add(reference);\r
     }\r
 \r
@@ -360,14 +352,6 @@ public class OOXMLSignatureFacet implements SignatureFacet {
         return false;\r
     }\r
 \r
-    public Map<String,String> getNamespacePrefixMapping() {\r
-        Map<String,String> m = new HashMap<String,String>();\r
-        m.put("mdssi", OOXML_DIGSIG_NS);\r
-        m.put("xd", "http://uri.etsi.org/01903/v1.3.2#");\r
-        return m;\r
-    }\r
-\r
-    \r
     /**\r
      * Office 2010 list of signed types (extensions).\r
      */\r
index 20dfa3fc8fd33b08a07e6fe045d3f41fe9c54745..d64eac31967af8e7cc9e6a2e9c0c7f8c85754a75 100644 (file)
@@ -28,7 +28,6 @@ import java.security.InvalidAlgorithmParameterException;
 import java.security.NoSuchAlgorithmException;\r
 import java.security.cert.X509Certificate;\r
 import java.util.List;\r
-import java.util.Map;\r
 \r
 import javax.xml.crypto.dsig.Reference;\r
 import javax.xml.crypto.dsig.XMLObject;\r
@@ -71,7 +70,7 @@ public class Office2010SignatureFacet implements SignatureFacet {
     public void postSign(Document document, List<X509Certificate> signingCertificateChain)\r
     throws XmlException {\r
         // check for XAdES-BES\r
-        NodeList nl = document.getElementsByTagNameNS("http://uri.etsi.org/01903/v1.3.2#", "QualifyingProperties");\r
+        NodeList nl = document.getElementsByTagNameNS(XADES_132_NS, "QualifyingProperties");\r
         if (nl.getLength() != 1) {\r
             throw new IllegalArgumentException("no XAdES-BES extension present");\r
         }\r
@@ -92,8 +91,4 @@ public class Office2010SignatureFacet implements SignatureFacet {
         Node n = document.importNode(qualProps.getDomNode().getFirstChild(), true);\r
         nl.item(0).getParentNode().replaceChild(n, nl.item(0));\r
     }\r
-    \r
-    public Map<String,String> getNamespacePrefixMapping() {\r
-        return null;\r
-    }\r
 }
\ No newline at end of file
index 2393c80234e71efd0a4d7b09298b43a41cd75e9c..188830bdf036e316c57d1436dcc87bd1f37cb5c0 100644 (file)
@@ -30,13 +30,15 @@ import java.security.InvalidAlgorithmParameterException;
 import java.security.NoSuchAlgorithmException;\r
 import java.security.cert.X509Certificate;\r
 import java.util.List;\r
-import java.util.Map;\r
 \r
+import javax.xml.XMLConstants;\r
 import javax.xml.crypto.MarshalException;\r
 import javax.xml.crypto.dsig.Reference;\r
 import javax.xml.crypto.dsig.XMLObject;\r
+import javax.xml.crypto.dsig.XMLSignature;\r
 import javax.xml.crypto.dsig.XMLSignatureFactory;\r
 \r
+import org.apache.poi.openxml4j.opc.PackageNamespaces;\r
 import org.apache.poi.poifs.crypt.dsig.SignatureConfig.SignatureConfigurable;\r
 import org.apache.xmlbeans.XmlException;\r
 import org.w3c.dom.Document;\r
@@ -49,6 +51,14 @@ import org.w3c.dom.Document;
  */\r
 public interface SignatureFacet extends SignatureConfigurable {\r
 \r
+    String XML_NS = XMLConstants.XMLNS_ATTRIBUTE_NS_URI;\r
+    String XML_DIGSIG_NS = XMLSignature.XMLNS;\r
+    String OO_DIGSIG_NS = PackageNamespaces.DIGITAL_SIGNATURE;\r
+    String MS_DIGSIG_NS = "http://schemas.microsoft.com/office/2006/digsig";\r
+    String XADES_132_NS = "http://uri.etsi.org/01903/v1.3.2#";\r
+    String XADES_141_NS = "http://uri.etsi.org/01903/v1.4.1#";\r
+\r
+\r
     /**\r
      * This method is being invoked by the XML signature service engine during\r
      * pre-sign phase. Via this method a signature facet implementation can add\r
@@ -83,6 +93,4 @@ public interface SignatureFacet extends SignatureConfigurable {
           Document document\r
         , List<X509Certificate> signingCertificateChain\r
     ) throws MarshalException, XmlException;\r
-    \r
-    Map<String,String> getNamespacePrefixMapping();\r
 }
\ No newline at end of file
index a1c6acf75b21c1a736f8fb204b9a701adcdf6b82..abf5c6f1d1cddaf8274c1680f90521b542d5399c 100644 (file)
@@ -24,7 +24,6 @@
 \r
 package org.apache.poi.poifs.crypt.dsig.facets;\r
 \r
-import static org.apache.poi.poifs.crypt.dsig.SignatureInfo.XmlNS;\r
 import static org.apache.poi.poifs.crypt.dsig.SignatureInfo.setPrefix;\r
 \r
 import java.security.InvalidAlgorithmParameterException;\r
@@ -213,8 +212,8 @@ public class XAdESSignatureFacet implements SignatureFacet {
         // add XAdES ds:Object\r
         List<XMLStructure> xadesObjectContent = new ArrayList<XMLStructure>();\r
         Element qualDocEl = (Element)document.importNode(qualifyingProperties.getDomNode(), true);\r
-        qualDocEl.setAttributeNS(XmlNS, "xmlns:xd", "http://uri.etsi.org/01903/v1.3.2#");\r
-        setPrefix(qualDocEl, "http://uri.etsi.org/01903/v1.3.2#", "xd");\r
+        qualDocEl.setAttributeNS(XML_NS, "xmlns:xd", XADES_132_NS);\r
+        setPrefix(qualDocEl, XADES_132_NS, "xd");\r
         xadesObjectContent.add(new DOMStructure(qualDocEl));\r
         XMLObject xadesObject = signatureFactory.newXMLObject(xadesObjectContent, null, null, null);\r
         objects.add(xadesObject);\r
@@ -298,12 +297,6 @@ public class XAdESSignatureFacet implements SignatureFacet {
         this.dataObjectFormatMimeTypes.put(dsReferenceUri, mimetype);\r
     }\r
 \r
-    public Map<String,String> getNamespacePrefixMapping() {\r
-        Map<String,String> map = new HashMap<String,String>();\r
-        map.put("xd", "http://uri.etsi.org/01903/v1.3.2#");\r
-        return map;\r
-    }\r
-\r
     protected static void insertXChild(XmlObject root, XmlObject child) {\r
         XmlCursor rootCursor = root.newCursor();\r
         rootCursor.toEndToken();\r
index a073d3691a267a93399008c92417ef46b0df4260..acbb1b9fc66b5fa00423ef7ff4e6a305a494cb8b 100644 (file)
@@ -24,7 +24,6 @@
 \r
 package org.apache.poi.poifs.crypt.dsig.facets;\r
 \r
-import static org.apache.poi.poifs.crypt.dsig.SignatureInfo.XmlDSigNS;\r
 import static org.apache.poi.poifs.crypt.dsig.facets.XAdESSignatureFacet.insertXChild;\r
 \r
 import java.io.ByteArrayInputStream;\r
@@ -42,7 +41,6 @@ import java.util.ArrayList;
 import java.util.Calendar;\r
 import java.util.Collections;\r
 import java.util.List;\r
-import java.util.Map;\r
 import java.util.UUID;\r
 \r
 import javax.xml.crypto.dsig.CanonicalizationMethod;\r
@@ -112,10 +110,6 @@ public class XAdESXLSignatureFacet implements SignatureFacet {
 \r
     private static final POILogger LOG = POILogFactory.getLogger(XAdESXLSignatureFacet.class);\r
 \r
-    public static final String XADES_NAMESPACE = "http://uri.etsi.org/01903/v1.3.2#";\r
-\r
-    public static final String XADES141_NAMESPACE = "http://uri.etsi.org/01903/v1.4.1#";\r
-    \r
     private SignatureConfig signatureConfig;\r
 \r
     private String c14nAlgoId = CanonicalizationMethod.EXCLUSIVE;\r
@@ -157,7 +151,7 @@ public class XAdESXLSignatureFacet implements SignatureFacet {
         QualifyingPropertiesType qualProps = null;\r
 \r
         // check for XAdES-BES\r
-        NodeList qualNl = document.getElementsByTagNameNS("http://uri.etsi.org/01903/v1.3.2#", "QualifyingProperties");\r
+        NodeList qualNl = document.getElementsByTagNameNS(XADES_132_NS, "QualifyingProperties");\r
         if (qualNl.getLength() == 1) {\r
             qualDoc = QualifyingPropertiesDocument.Factory.parse(qualNl.item(0));\r
             qualProps = qualDoc.getQualifyingProperties();\r
@@ -177,7 +171,7 @@ public class XAdESXLSignatureFacet implements SignatureFacet {
         \r
 \r
         // create the XAdES-T time-stamp\r
-        NodeList nlSigVal = document.getElementsByTagNameNS(XmlDSigNS, "SignatureValue");\r
+        NodeList nlSigVal = document.getElementsByTagNameNS(XML_DIGSIG_NS, "SignatureValue");\r
         if (nlSigVal.getLength() != 1) {\r
             throw new IllegalArgumentException("SignatureValue is not set.");\r
         }\r
@@ -436,9 +430,4 @@ public class XAdESXLSignatureFacet implements SignatureFacet {
             }\r
         }\r
     }\r
-\r
-    public Map<String,String> getNamespacePrefixMapping() {\r
-        return null;\r
-    }\r
-\r
 }\r
index 8377fa24d3015e6ea8798b71e9d251d32685aff2..7c5d0dff181f6b21f406942e39609968e19783fc 100644 (file)
@@ -24,6 +24,9 @@
 \r
 package org.apache.poi.poifs.crypt.dsig.services;\r
 \r
+import static org.apache.poi.poifs.crypt.dsig.facets.SignatureFacet.XML_DIGSIG_NS;\r
+import static org.apache.poi.poifs.crypt.dsig.facets.SignatureFacet.XML_NS;\r
+\r
 import java.io.ByteArrayInputStream;\r
 import java.io.ByteArrayOutputStream;\r
 import java.io.IOException;\r
@@ -161,7 +164,7 @@ public class RelationshipTransformService extends TransformService {
         LOG.log(POILogger.DEBUG, "marshallParams(parent,context)");\r
         DOMStructure domParent = (DOMStructure) parent;\r
         Element parentNode = (Element)domParent.getNode();\r
-        // parentNode.setAttributeNS(Constants.NamespaceSpecNS, "xmlns:mdssi", DIGITAL_SIGNATURE);\r
+        // parentNode.setAttributeNS(XML_NS, "xmlns:mdssi", XML_DIGSIG_NS);\r
         Document doc = parentNode.getOwnerDocument();\r
         \r
         for (String sourceId : this.sourceIds) {\r