Author: kiwiwings
Date: Thu Oct 2 22:47:35 2014
New Revision: 1629095
URL: http://svn.apache.org/r1629095
Log:
removed obsolete classes and added a few javadocs elements and example calls
Added:
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/DigestInfo.java
- copied, changed from r1628571,
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/spi/DigestInfo.java
Removed:
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/spi/
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureConfig.java
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureInfo.java
poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java
Copied:
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/DigestInfo.java (from
r1628571,
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/spi/DigestInfo.java)
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/DigestInfo.java?p2=poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/DigestInfo.java&p1=poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/spi/DigestInfo.java&r1=1628571&r2=1629095&rev=1629095&view=diff
==============================================================================
---
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/spi/DigestInfo.java
(original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/DigestInfo.java
Thu Oct 2 22:47:35 2014
@@ -22,7 +22,7 @@
Copyright (C) 2008-2014 FedICT.
================================================================= */
-package org.apache.poi.poifs.crypt.dsig.spi;
+package org.apache.poi.poifs.crypt.dsig;
import java.io.Serializable;
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureConfig.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureConfig.java?rev=1629095&r1=1629094&r2=1629095&view=diff
==============================================================================
---
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureConfig.java
(original)
+++
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureConfig.java
Thu Oct 2 22:47:35 2014
@@ -46,8 +46,6 @@ import org.apache.poi.poifs.crypt.dsig.s
import org.apache.poi.poifs.crypt.dsig.services.TSPTimeStampService;
import org.apache.poi.poifs.crypt.dsig.services.TimeStampService;
import org.apache.poi.poifs.crypt.dsig.services.TimeStampServiceValidator;
-import org.apache.poi.poifs.crypt.dsig.spi.AddressDTO;
-import org.apache.poi.poifs.crypt.dsig.spi.IdentityDTO;
import org.w3c.dom.events.EventListener;
/**
@@ -69,9 +67,6 @@ public class SignatureConfig {
private Date executionTime = new Date();
private PrivateKey key;
private List<X509Certificate> signingCertificateChain;
- private IdentityDTO identity;
- private AddressDTO address;
- private byte[] photo;
/**
* the optional signature policy service used for XAdES-EPES.
@@ -235,24 +230,6 @@ public class SignatureConfig {
List<X509Certificate> signingCertificateChain) {
this.signingCertificateChain = signingCertificateChain;
}
- public IdentityDTO getIdentity() {
- return identity;
- }
- public void setIdentity(IdentityDTO identity) {
- this.identity = identity;
- }
- public AddressDTO getAddress() {
- return address;
- }
- public void setAddress(AddressDTO address) {
- this.address = address;
- }
- public byte[] getPhoto() {
- return photo;
- }
- public void setPhoto(byte[] photo) {
- this.photo = photo;
- }
public Date getExecutionTime() {
return executionTime;
}
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureInfo.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureInfo.java?rev=1629095&r1=1629094&r2=1629095&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureInfo.java
(original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureInfo.java
Thu Oct 2 22:47:35 2014
@@ -90,7 +90,6 @@ import org.apache.poi.poifs.crypt.Crypto
import org.apache.poi.poifs.crypt.dsig.SignatureConfig.SignatureConfigurable;
import org.apache.poi.poifs.crypt.dsig.facets.SignatureFacet;
import org.apache.poi.poifs.crypt.dsig.services.RelationshipTransformService;
-import org.apache.poi.poifs.crypt.dsig.spi.DigestInfo;
import org.apache.poi.util.DocumentHelper;
import org.apache.poi.util.POILogFactory;
import org.apache.poi.util.POILogger;
@@ -106,6 +105,74 @@ import org.w3c.dom.events.EventListener;
import org.w3c.dom.events.EventTarget;
import org.xml.sax.SAXException;
+
+/**
+ * <p>This class is the default entry point for XML signatures and can be used
for
+ * validating an existing signed office document and signing a office
document.</p>
+ *
+ * <p><b>Validating a signed office document</b></p>
+ *
+ * <pre>
+ * OPCPackage pkg = OPCPackage.open(..., PackageAccess.READ);
+ * SignatureConfig sic = new SignatureConfig();
+ * sic.setOpcPackage(pkg);
+ * SignatureInfo si = new SignatureInfo();
+ * si.setSignatureConfig(sic);
+ * boolean isValid = si.validate();
+ * ...
+ * </pre>
+ *
+ * <p><b>Signing a office document</b></p>
+ *
+ * <pre>
+ * // loading the keystore - pkcs12 is used here, but of course jks & co
are also valid
+ * // the keystore needs to contain a private key and it's certificate having a
+ * // 'digitalSignature' key usage
+ * char password[] = "test".toCharArray();
+ * File file = new File("test.pfx");
+ * KeyStore keystore = KeyStore.getInstance("PKCS12");
+ * FileInputStream fis = new FileInputStream(file);
+ * keystore.load(fis, password);
+ * fis.close();
+ *
+ * // extracting private key and certificate
+ * String alias = "xyz"; // alias of the keystore entry
+ * Key key = keystore.getKey(alias, password);
+ * X509Certificate x509 = (X509Certificate)keystore.getCertificate(alias);
+ *
+ * // filling the SignatureConfig entries (minimum fields, more options are
available ...)
+ * SignatureConfig signatureConfig = new SignatureConfig();
+ * signatureConfig.setKey(keyPair.getPrivate());
+ * signatureConfig.setSigningCertificateChain(Collections.singletonList(x509));
+ * OPCPackage pkg = OPCPackage.open(..., PackageAccess.READ);
+ * signatureConfig.setOpcPackage(pkg);
+ *
+ * // adding the signature document to the package
+ * SignatureInfo si = new SignatureInfo();
+ * si.setSignatureConfig(signatureConfig);
+ * si.confirmSignature();
+ * // optionally verify the generated signature
+ * boolean b = si.verifySignature();
+ * assert (b);
+ * // write the changes back to disc
+ * pkg.close();
+ * </pre>
+ *
+ * <p><b>Implementation notes:</b></p>
+ *
+ * <p>Although there's a XML signature implementation in the Oracle JDKs 6 and
higher,
+ * compatibility with IBM JDKs is also in focus (... but maybe not thoroughly
tested ...).
+ * 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.51)</li>
+ * <li>Apache Santuario "xmlsec" (tested against 2.0.1)</li>
+ * <li>and slf4j-api (tested against 1.7.7)</li>
+ * </ul>
+ */
public class SignatureInfo implements SignatureConfigurable {
private static final POILogger LOG =
POILogFactory.getLogger(SignatureInfo.class);
Modified:
poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java?rev=1629095&r1=1629094&r2=1629095&view=diff
==============================================================================
---
poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java
(original)
+++
poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java
Thu Oct 2 22:47:35 2014
@@ -55,6 +55,7 @@ import java.util.TimeZone;
import org.apache.poi.POIDataSamples;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.openxml4j.opc.PackageAccess;
+import org.apache.poi.poifs.crypt.dsig.DigestInfo;
import org.apache.poi.poifs.crypt.dsig.SignatureConfig;
import org.apache.poi.poifs.crypt.dsig.SignatureInfo;
import org.apache.poi.poifs.crypt.dsig.SignatureInfo.SignaturePart;
@@ -66,7 +67,6 @@ import org.apache.poi.poifs.crypt.dsig.s
import org.apache.poi.poifs.crypt.dsig.services.RevocationDataService;
import org.apache.poi.poifs.crypt.dsig.services.TimeStampService;
import org.apache.poi.poifs.crypt.dsig.services.TimeStampServiceValidator;
-import org.apache.poi.poifs.crypt.dsig.spi.DigestInfo;
import org.apache.poi.util.DocumentHelper;
import org.apache.poi.util.IOUtils;
import org.apache.poi.util.POILogFactory;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]