removed obsolete classes and added a few javadocs elements and example calls
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1629095 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
3438e7f4f6
commit
ab84e448ca
@ -22,7 +22,7 @@
|
|||||||
Copyright (C) 2008-2014 FedICT.
|
Copyright (C) 2008-2014 FedICT.
|
||||||
================================================================= */
|
================================================================= */
|
||||||
|
|
||||||
package org.apache.poi.poifs.crypt.dsig.spi;
|
package org.apache.poi.poifs.crypt.dsig;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
@ -46,8 +46,6 @@ import org.apache.poi.poifs.crypt.dsig.services.SignaturePolicyService;
|
|||||||
import org.apache.poi.poifs.crypt.dsig.services.TSPTimeStampService;
|
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.TimeStampService;
|
||||||
import org.apache.poi.poifs.crypt.dsig.services.TimeStampServiceValidator;
|
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;
|
import org.w3c.dom.events.EventListener;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -69,9 +67,6 @@ public class SignatureConfig {
|
|||||||
private Date executionTime = new Date();
|
private Date executionTime = new Date();
|
||||||
private PrivateKey key;
|
private PrivateKey key;
|
||||||
private List<X509Certificate> signingCertificateChain;
|
private List<X509Certificate> signingCertificateChain;
|
||||||
private IdentityDTO identity;
|
|
||||||
private AddressDTO address;
|
|
||||||
private byte[] photo;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* the optional signature policy service used for XAdES-EPES.
|
* the optional signature policy service used for XAdES-EPES.
|
||||||
@ -235,24 +230,6 @@ public class SignatureConfig {
|
|||||||
List<X509Certificate> signingCertificateChain) {
|
List<X509Certificate> signingCertificateChain) {
|
||||||
this.signingCertificateChain = 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() {
|
public Date getExecutionTime() {
|
||||||
return executionTime;
|
return executionTime;
|
||||||
}
|
}
|
||||||
|
@ -90,7 +90,6 @@ import org.apache.poi.poifs.crypt.CryptoFunctions;
|
|||||||
import org.apache.poi.poifs.crypt.dsig.SignatureConfig.SignatureConfigurable;
|
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.facets.SignatureFacet;
|
||||||
import org.apache.poi.poifs.crypt.dsig.services.RelationshipTransformService;
|
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.DocumentHelper;
|
||||||
import org.apache.poi.util.POILogFactory;
|
import org.apache.poi.util.POILogFactory;
|
||||||
import org.apache.poi.util.POILogger;
|
import org.apache.poi.util.POILogger;
|
||||||
@ -106,6 +105,74 @@ import org.w3c.dom.events.EventListener;
|
|||||||
import org.w3c.dom.events.EventTarget;
|
import org.w3c.dom.events.EventTarget;
|
||||||
import org.xml.sax.SAXException;
|
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 {
|
public class SignatureInfo implements SignatureConfigurable {
|
||||||
|
|
||||||
private static final POILogger LOG = POILogFactory.getLogger(SignatureInfo.class);
|
private static final POILogger LOG = POILogFactory.getLogger(SignatureInfo.class);
|
||||||
|
@ -1,51 +0,0 @@
|
|||||||
/* ====================================================================
|
|
||||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
|
||||||
contributor license agreements. See the NOTICE file distributed with
|
|
||||||
this work for additional information regarding copyright ownership.
|
|
||||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
|
||||||
(the "License"); you may not use this file except in compliance with
|
|
||||||
the License. You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
==================================================================== */
|
|
||||||
|
|
||||||
/* ====================================================================
|
|
||||||
This product contains an ASLv2 licensed version of the OOXML signer
|
|
||||||
package from the eID Applet project
|
|
||||||
http://code.google.com/p/eid-applet/source/browse/trunk/README.txt
|
|
||||||
Copyright (C) 2008-2014 FedICT.
|
|
||||||
================================================================= */
|
|
||||||
|
|
||||||
package org.apache.poi.poifs.crypt.dsig.spi;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.security.Identity;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Address Data Transfer Object.
|
|
||||||
*
|
|
||||||
* @author Frank Cornelis
|
|
||||||
* @see Identity
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class AddressDTO implements Serializable {
|
|
||||||
|
|
||||||
/*
|
|
||||||
* We implement serializable to allow this class to be used in distributed
|
|
||||||
* containers as defined in the Servlet v2.4 specification.
|
|
||||||
*/
|
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
public String streetAndNumber;
|
|
||||||
|
|
||||||
public String zip;
|
|
||||||
|
|
||||||
public String city;
|
|
||||||
}
|
|
@ -1,75 +0,0 @@
|
|||||||
/* ====================================================================
|
|
||||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
|
||||||
contributor license agreements. See the NOTICE file distributed with
|
|
||||||
this work for additional information regarding copyright ownership.
|
|
||||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
|
||||||
(the "License"); you may not use this file except in compliance with
|
|
||||||
the License. You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
==================================================================== */
|
|
||||||
|
|
||||||
/* ====================================================================
|
|
||||||
This product contains an ASLv2 licensed version of the OOXML signer
|
|
||||||
package from the eID Applet project
|
|
||||||
http://code.google.com/p/eid-applet/source/browse/trunk/README.txt
|
|
||||||
Copyright (C) 2008-2014 FedICT.
|
|
||||||
================================================================= */
|
|
||||||
|
|
||||||
package org.apache.poi.poifs.crypt.dsig.spi;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.GregorianCalendar;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Identity Data Transfer Object.
|
|
||||||
*
|
|
||||||
* @author Frank Cornelis
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class IdentityDTO implements Serializable {
|
|
||||||
|
|
||||||
/*
|
|
||||||
* We implement serializable to allow this class to be used in distributed
|
|
||||||
* containers as defined in the Servlet v2.4 specification.
|
|
||||||
*/
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
public String cardNumber;
|
|
||||||
|
|
||||||
public String chipNumber;
|
|
||||||
|
|
||||||
public GregorianCalendar cardValidityDateBegin;
|
|
||||||
|
|
||||||
public GregorianCalendar cardValidityDateEnd;
|
|
||||||
|
|
||||||
public String cardDeliveryMunicipality;
|
|
||||||
|
|
||||||
public String nationalNumber;
|
|
||||||
|
|
||||||
public String name;
|
|
||||||
|
|
||||||
public String firstName;
|
|
||||||
|
|
||||||
public String middleName;
|
|
||||||
|
|
||||||
public String nationality;
|
|
||||||
|
|
||||||
public String placeOfBirth;
|
|
||||||
|
|
||||||
public GregorianCalendar dateOfBirth;
|
|
||||||
|
|
||||||
public boolean male;
|
|
||||||
|
|
||||||
public boolean female;
|
|
||||||
|
|
||||||
public String nobleCondition;
|
|
||||||
|
|
||||||
public String duplicate;
|
|
||||||
}
|
|
@ -55,6 +55,7 @@ import java.util.TimeZone;
|
|||||||
import org.apache.poi.POIDataSamples;
|
import org.apache.poi.POIDataSamples;
|
||||||
import org.apache.poi.openxml4j.opc.OPCPackage;
|
import org.apache.poi.openxml4j.opc.OPCPackage;
|
||||||
import org.apache.poi.openxml4j.opc.PackageAccess;
|
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.SignatureConfig;
|
||||||
import org.apache.poi.poifs.crypt.dsig.SignatureInfo;
|
import org.apache.poi.poifs.crypt.dsig.SignatureInfo;
|
||||||
import org.apache.poi.poifs.crypt.dsig.SignatureInfo.SignaturePart;
|
import org.apache.poi.poifs.crypt.dsig.SignatureInfo.SignaturePart;
|
||||||
@ -66,7 +67,6 @@ import org.apache.poi.poifs.crypt.dsig.services.RevocationData;
|
|||||||
import org.apache.poi.poifs.crypt.dsig.services.RevocationDataService;
|
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.TimeStampService;
|
||||||
import org.apache.poi.poifs.crypt.dsig.services.TimeStampServiceValidator;
|
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.DocumentHelper;
|
||||||
import org.apache.poi.util.IOUtils;
|
import org.apache.poi.util.IOUtils;
|
||||||
import org.apache.poi.util.POILogFactory;
|
import org.apache.poi.util.POILogFactory;
|
||||||
|
Loading…
Reference in New Issue
Block a user