|
|
@@ -24,29 +24,12 @@ |
|
|
|
|
|
|
|
package org.apache.poi.poifs.crypt.dsig;
|
|
|
|
|
|
|
|
import static org.apache.poi.POIXMLTypeLoader.DEFAULT_XML_OPTIONS;
|
|
|
|
import static org.apache.poi.poifs.crypt.dsig.facets.SignatureFacet.XML_DIGSIG_NS;
|
|
|
|
|
|
|
|
import java.io.ByteArrayOutputStream;
|
|
|
|
import java.io.File;
|
|
|
|
import java.io.IOException;
|
|
|
|
import java.io.OutputStream;
|
|
|
|
import java.security.GeneralSecurityException;
|
|
|
|
import java.security.MessageDigest;
|
|
|
|
import java.security.Provider;
|
|
|
|
import java.security.Security;
|
|
|
|
import java.security.cert.X509Certificate;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.Collections;
|
|
|
|
import java.util.HashMap;
|
|
|
|
import java.util.Iterator;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.Map;
|
|
|
|
import java.util.NoSuchElementException;
|
|
|
|
|
|
|
|
import javax.crypto.Cipher;
|
|
|
|
import javax.xml.crypto.MarshalException;
|
|
|
|
import javax.xml.crypto.URIDereferencer;
|
|
|
|
import static org.apache.poi.POIXMLTypeLoader.DEFAULT_XML_OPTIONS; |
|
|
|
import static org.apache.poi.poifs.crypt.dsig.facets.SignatureFacet.XML_DIGSIG_NS; |
|
|
|
|
|
|
|
import javax.crypto.Cipher; |
|
|
|
import javax.xml.crypto.MarshalException; |
|
|
|
import javax.xml.crypto.URIDereferencer; |
|
|
|
import javax.xml.crypto.XMLStructure;
|
|
|
|
import javax.xml.crypto.dsig.CanonicalizationMethod;
|
|
|
|
import javax.xml.crypto.dsig.Manifest;
|
|
|
@@ -62,12 +45,28 @@ import javax.xml.crypto.dsig.XMLValidateContext; |
|
|
|
import javax.xml.crypto.dsig.dom.DOMSignContext;
|
|
|
|
import javax.xml.crypto.dsig.dom.DOMValidateContext;
|
|
|
|
import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec;
|
|
|
|
import javax.xml.xpath.XPath;
|
|
|
|
import javax.xml.xpath.XPathConstants;
|
|
|
|
import javax.xml.xpath.XPathFactory;
|
|
|
|
|
|
|
|
import org.apache.jcp.xml.dsig.internal.dom.DOMReference;
|
|
|
|
import org.apache.jcp.xml.dsig.internal.dom.DOMSignedInfo;
|
|
|
|
import javax.xml.xpath.XPath; |
|
|
|
import javax.xml.xpath.XPathConstants; |
|
|
|
import javax.xml.xpath.XPathFactory; |
|
|
|
import java.io.ByteArrayOutputStream; |
|
|
|
import java.io.File; |
|
|
|
import java.io.IOException; |
|
|
|
import java.io.OutputStream; |
|
|
|
import java.security.GeneralSecurityException; |
|
|
|
import java.security.MessageDigest; |
|
|
|
import java.security.Provider; |
|
|
|
import java.security.Security; |
|
|
|
import java.security.cert.X509Certificate; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.Collections; |
|
|
|
import java.util.HashMap; |
|
|
|
import java.util.Iterator; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.NoSuchElementException; |
|
|
|
|
|
|
|
import org.apache.jcp.xml.dsig.internal.dom.DOMReference; |
|
|
|
import org.apache.jcp.xml.dsig.internal.dom.DOMSignedInfo; |
|
|
|
import org.apache.poi.EncryptedDocumentException;
|
|
|
|
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
|
|
|
|
import org.apache.poi.openxml4j.opc.ContentTypes;
|
|
|
@@ -159,13 +158,13 @@ import org.w3c.dom.events.EventTarget; |
|
|
|
* Therefore we are using the Apache Santuario libs (xmlsec) instead of the built-in classes,
|
|
|
|
* as the compatibility seems to be provided there.</p>
|
|
|
|
*
|
|
|
|
* <p>To use SignatureInfo and its sibling classes, you'll need to have the following libs
|
|
|
|
* in the classpath:</p>
|
|
|
|
* <ul>
|
|
|
|
* <li>BouncyCastle bcpkix and bcprov (tested against 1.53)</li>
|
|
|
|
* <li>Apache Santuario "xmlsec" (tested against 2.0.5)</li>
|
|
|
|
* <li>and slf4j-api (tested against 1.7.12)</li>
|
|
|
|
* </ul>
|
|
|
|
* <p>To use SignatureInfo and its sibling classes, you'll need to have the following libs |
|
|
|
* in the classpath:</p> |
|
|
|
* <ul> |
|
|
|
* <li>BouncyCastle bcpkix and bcprov (tested against 1.54)</li> |
|
|
|
* <li>Apache Santuario "xmlsec" (tested against 2.0.5)</li> |
|
|
|
* <li>and slf4j-api (tested against 1.7.12)</li> |
|
|
|
* </ul> |
|
|
|
*/
|
|
|
|
public class SignatureInfo implements SignatureConfigurable {
|
|
|
|
|