Note that the detail message associated with
diff --git a/src/org/digidoc4j/exceptions/TechnicalException.java b/src/org/digidoc4j/exceptions/TechnicalException.java
new file mode 100644
index 000000000..4edda0bd4
--- /dev/null
+++ b/src/org/digidoc4j/exceptions/TechnicalException.java
@@ -0,0 +1,17 @@
+/* DigiDoc4J library
+*
+* This software is released under either the GNU Library General Public
+* License (see LICENSE.LGPL).
+*
+* Note that the only valid version of the LGPL license as far as this
+* project is concerned is the original GNU Library General Public License
+* Version 2.1, February 1999
+*/
+
+package org.digidoc4j.exceptions;
+
+public class TechnicalException extends DigiDoc4JException {
+ public TechnicalException(String message, Throwable cause) {
+ super(message, cause);
+ }
+}
diff --git a/src/org/digidoc4j/impl/BDocContainer.java b/src/org/digidoc4j/impl/BDocContainer.java
index 3dbde1953..0d94749d9 100644
--- a/src/org/digidoc4j/impl/BDocContainer.java
+++ b/src/org/digidoc4j/impl/BDocContainer.java
@@ -15,7 +15,8 @@
import eu.europa.ec.markt.dss.parameter.BLevelParameters;
import eu.europa.ec.markt.dss.signature.*;
import eu.europa.ec.markt.dss.signature.asic.ASiCService;
-import eu.europa.ec.markt.dss.validation102853.AdvancedSignature;
+import eu.europa.ec.markt.dss.signature.validation.AdvancedSignature;
+import eu.europa.ec.markt.dss.validation102853.CertificateToken;
import eu.europa.ec.markt.dss.validation102853.SignaturePolicy;
import eu.europa.ec.markt.dss.validation102853.SignedDocumentValidator;
import eu.europa.ec.markt.dss.validation102853.asic.ASiCContainerValidator;
@@ -542,10 +543,15 @@ public void removeSignature(int index) {
signedDocument = null;
do {
- dssSignatureParameters.aSiC().setSignatureFileName(getSignatureFileName(signature));
- signedDocument = ((ASiCService) asicService).buildASiCContainer(signingDocument, signedDocument,
- dssSignatureParameters, createBareDocument(signature));
- signature = signature.getNextDocument();
+ try {
+ dssSignatureParameters.aSiC().setSignatureFileName(getSignatureFileName(signature));
+ signedDocument = ((ASiCService) asicService).buildASiCContainer(signingDocument, signedDocument,
+ dssSignatureParameters, createBareDocument(signature));
+ signature = signature.getNextDocument();
+ } catch (IOException e) {
+ logger.error("Error building asic container: " + e.getMessage());
+ throw new TechnicalException("Error building asic container", e);
+ }
} while (signature != null);
validationReport = null;
@@ -571,7 +577,12 @@ private String getSignatureFileName(DSSDocument signature) {
public void save(String path) {
logger.debug("Path: " + path);
documentMustBeInitializedCheck();
- signedDocument.save(path);
+ try {
+ signedDocument.save(path);
+ } catch (IOException e) {
+ logger.error("Error saving path: " + e.getMessage());
+ throw new TechnicalException("Error saving path " + path, e);
+ }
}
@Override
@@ -615,7 +626,7 @@ private byte[] getDataToSign(String setSignatureId, X509Certificate signerCertif
dssSignatureParameters.clearCertificateChain();
dssSignatureParameters.setDeterministicId(setSignatureId);
dssSignatureParameters.aSiC().setSignatureFileName("signatures" + signatures.size() + ".xml");
- dssSignatureParameters.setSigningCertificate(signerCertificate);
+ dssSignatureParameters.setSigningCertificate(new CertificateToken(signerCertificate));
DSSDocument attachment = getAttachment();
dssSignatureParameters.setDetachedContent(attachment);
diff --git a/src/org/digidoc4j/impl/BDocSignature.java b/src/org/digidoc4j/impl/BDocSignature.java
index 5e8e71be6..e6befc482 100644
--- a/src/org/digidoc4j/impl/BDocSignature.java
+++ b/src/org/digidoc4j/impl/BDocSignature.java
@@ -14,8 +14,8 @@
import eu.europa.ec.markt.dss.DSSXMLUtils;
import eu.europa.ec.markt.dss.signature.SignatureLevel;
import eu.europa.ec.markt.dss.signature.asic.ASiCService;
+import eu.europa.ec.markt.dss.signature.validation.TimestampToken;
import eu.europa.ec.markt.dss.validation102853.CertificateToken;
-import eu.europa.ec.markt.dss.validation102853.TimestampToken;
import eu.europa.ec.markt.dss.validation102853.bean.SignatureProductionPlace;
import eu.europa.ec.markt.dss.validation102853.xades.XAdESSignature;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
diff --git a/src/org/digidoc4j/impl/ManifestValidator.java b/src/org/digidoc4j/impl/ManifestValidator.java
index 3ec97c1d6..11ba09f93 100644
--- a/src/org/digidoc4j/impl/ManifestValidator.java
+++ b/src/org/digidoc4j/impl/ManifestValidator.java
@@ -13,7 +13,7 @@
import eu.europa.ec.markt.dss.DSSXMLUtils;
import eu.europa.ec.markt.dss.signature.DSSDocument;
import eu.europa.ec.markt.dss.signature.InMemoryDocument;
-import eu.europa.ec.markt.dss.validation102853.AdvancedSignature;
+import eu.europa.ec.markt.dss.signature.validation.AdvancedSignature;
import eu.europa.ec.markt.dss.validation102853.SignedDocumentValidator;
import org.apache.xml.security.signature.Reference;
import org.apache.xml.security.signature.reference.ReferenceOctetStreamData;
diff --git a/src/org/digidoc4j/signers/PKCS12Signer.java b/src/org/digidoc4j/signers/PKCS12Signer.java
index 664c4123d..a4c5e6b43 100644
--- a/src/org/digidoc4j/signers/PKCS12Signer.java
+++ b/src/org/digidoc4j/signers/PKCS12Signer.java
@@ -46,7 +46,7 @@ public PKCS12Signer(String fileName, char[] password) {
@Override
public X509Certificate getCertificate() {
logger.debug("");
- return keyEntry.getCertificate();
+ return keyEntry.getCertificate().getCertificate();
}
@Override
diff --git a/src/org/digidoc4j/utils/DigestInfoPrefix.java b/src/org/digidoc4j/utils/DigestInfoPrefix.java
new file mode 100644
index 000000000..0b1b0c20e
--- /dev/null
+++ b/src/org/digidoc4j/utils/DigestInfoPrefix.java
@@ -0,0 +1,31 @@
+/* DigiDoc4J library
+*
+* This software is released under either the GNU Library General Public
+* License (see LICENSE.LGPL).
+*
+* Note that the only valid version of the LGPL license as far as this
+* project is concerned is the original GNU Library General Public License
+* Version 2.1, February 1999
+*/
+
+package org.digidoc4j.utils;
+
+public class DigestInfoPrefix{
+ public static final byte[] SHA1 = new byte[] { 0x30, 0x1f, 0x30, 0x07, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x04, 0x14 };
+
+ public static final byte[] SHA224 = new byte[] { 0x30, 0x2b, 0x30, 0x0b, 0x06, 0x09, 0x60, (byte) 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x04, 0x04, 0x1c };
+
+ public static final byte[] SHA256 = new byte[] { 0x30, 0x2f, 0x30, 0x0b, 0x06, 0x09, 0x60, (byte) 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x04, 0x20 };
+
+ public static final byte[] SHA384 = new byte[] { 0x30, 0x3f, 0x30, 0x0b, 0x06, 0x09, 0x60, (byte) 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x02, 0x04, 0x30 };
+
+ public static final byte[] SHA512 = new byte[] { 0x30, 0x4f, 0x30, 0x0b, 0x06, 0x09, 0x60, (byte) 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x03, 0x04, 0x40 };
+
+ public static final byte[] RIPEMD160 = new byte[] { 0x30, 0x1f, 0x30, 0x07, 0x06, 0x05, 0x2b, 0x24, 0x03, 0x02, 0x01, 0x04, 0x14 };
+
+ public static final byte[] RIPEMD128 = new byte[] { 0x30, 0x1b, 0x30, 0x07, 0x06, 0x05, 0x2b, 0x24, 0x03, 0x02, 0x02, 0x04, 0x10 };
+
+ public static final byte[] RIPEMD256 = new byte[] { 0x30, 0x2b, 0x30, 0x07, 0x06, 0x05, 0x2b, 0x24, 0x03, 0x02, 0x03, 0x04, 0x20 };
+
+ public static final byte[] MD5 = new byte[] { 0x30, 0x20, 0x30, 0x0c, 0x06, 0x08, 0x2a, (byte) 0x86, 0x48, (byte) 0x86, (byte) 0xf7, 0x0d, 0x02, 0x05, 0x05, 0x00, 0x04, 0x10 };
+}
diff --git a/src/prototype/AlwaysValidOcspSource.java b/src/prototype/AlwaysValidOcspSource.java
index cec46bc9c..54796f00a 100644
--- a/src/prototype/AlwaysValidOcspSource.java
+++ b/src/prototype/AlwaysValidOcspSource.java
@@ -94,7 +94,7 @@ public AlwaysValidOcspSource(final String signerPkcs12Name, final String passwor
if (LOG.isTraceEnabled()) {
final CommonCertificateSource certificateSource = new CommonCertificateSource();
- final CertificateToken certificateToken = certificateSource.addCertificate(signingCert);
+ final CertificateToken certificateToken = certificateSource.addCertificate(new CertificateToken(signingCert));
LOG.trace("OCSP mockup with signing certificate:\n" + certificateToken);
}
} catch (Exception e) {
diff --git a/src/prototype/PKCS11Signer.java b/src/prototype/PKCS11Signer.java
index 36c23345b..172e704ce 100644
--- a/src/prototype/PKCS11Signer.java
+++ b/src/prototype/PKCS11Signer.java
@@ -42,7 +42,7 @@ public PKCS11Signer(char[] password) {
@Override
public X509Certificate getCertificate() {
- return keyEntry.getCertificate();
+ return keyEntry.getCertificate().getCertificate();
}
@Override
diff --git a/src/prototype/TestSigner.java b/src/prototype/TestSigner.java
index d5fc5d28b..4becc05b2 100644
--- a/src/prototype/TestSigner.java
+++ b/src/prototype/TestSigner.java
@@ -11,9 +11,9 @@
package prototype;
import eu.europa.ec.markt.dss.DSSUtils;
-import eu.europa.ec.markt.dss.signature.token.Constants;
import org.apache.commons.lang.ArrayUtils;
import org.digidoc4j.signers.PKCS12Signer;
+import org.digidoc4j.utils.DigestInfoPrefix;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -37,6 +37,6 @@ public byte[] sign(byte[] digest) {
}
private byte[] addPadding(byte []digest) {
- return ArrayUtils.addAll(Constants.SHA256_DIGEST_INFO_PREFIX, digest);
+ return ArrayUtils.addAll(DigestInfoPrefix.SHA256, digest);
}
}
diff --git a/src/prototype/samples/AsyncSigning.java b/src/prototype/samples/AsyncSigning.java
index 99b0123ff..f8c62c909 100644
--- a/src/prototype/samples/AsyncSigning.java
+++ b/src/prototype/samples/AsyncSigning.java
@@ -11,13 +11,13 @@
package prototype.samples;
import eu.europa.ec.markt.dss.DSSUtils;
-import eu.europa.ec.markt.dss.signature.token.Constants;
import org.apache.commons.lang.ArrayUtils;
import org.digidoc4j.Container;
import org.digidoc4j.SignedInfo;
import org.digidoc4j.Signer;
import org.digidoc4j.exceptions.DigiDoc4JException;
import org.digidoc4j.signers.ExternalSigner;
+import org.digidoc4j.utils.DigestInfoPrefix;
import java.io.*;
import java.security.KeyStore;
@@ -70,7 +70,7 @@ public byte[] sign(Container container, byte[] dataToSign) {
}
}
private byte[] addPadding(byte[] digest) {
- return ArrayUtils.addAll(Constants.SHA256_DIGEST_INFO_PREFIX, digest);
+ return ArrayUtils.addAll(DigestInfoPrefix.SHA256, digest);
}
};
diff --git a/src/prototype/samples/ExternalSigning.java b/src/prototype/samples/ExternalSigning.java
index 1c827b161..d0ed8b1bd 100644
--- a/src/prototype/samples/ExternalSigning.java
+++ b/src/prototype/samples/ExternalSigning.java
@@ -11,7 +11,6 @@
package prototype.samples;
import eu.europa.ec.markt.dss.DSSUtils;
-import eu.europa.ec.markt.dss.signature.token.Constants;
import org.apache.commons.lang.ArrayUtils;
import org.digidoc4j.Configuration;
import org.digidoc4j.Container;
@@ -19,6 +18,7 @@
import org.digidoc4j.Signer;
import org.digidoc4j.exceptions.DigiDoc4JException;
import org.digidoc4j.signers.ExternalSigner;
+import org.digidoc4j.utils.DigestInfoPrefix;
import java.io.FileInputStream;
import java.security.KeyStore;
@@ -64,7 +64,7 @@ public byte[] sign(Container container, byte[] dataToSign) {
}
private byte[] addPadding(byte[] digest) {
- return ArrayUtils.addAll(Constants.SHA256_DIGEST_INFO_PREFIX, digest);
+ return ArrayUtils.addAll(DigestInfoPrefix.SHA256, digest);
}
};
diff --git a/test/org/digidoc4j/ConfigurationTest.java b/test/org/digidoc4j/ConfigurationTest.java
index acd5e14e7..5f0b84108 100644
--- a/test/org/digidoc4j/ConfigurationTest.java
+++ b/test/org/digidoc4j/ConfigurationTest.java
@@ -86,7 +86,7 @@ public void clearTSLLoadsFromConfiguration() {
public void setTSL() throws IOException, CertificateException {
TSLCertificateSource trustedListsCertificateSource = new TSLCertificateSource();
FileInputStream fileInputStream = new FileInputStream("testFiles/Juur-SK.pem.crt");
- X509Certificate certificate = DSSUtils.loadCertificate(fileInputStream);
+ X509Certificate certificate = DSSUtils.loadCertificate(fileInputStream).getCertificate();
trustedListsCertificateSource.addTSLCertificate(certificate);
configuration.setTSL(trustedListsCertificateSource);
@@ -152,7 +152,7 @@ public void policyFileIsReadFromNonDefaultFileLocation() {
private void addFromFileToTSLCertificate(String fileName) throws IOException, CertificateException {
FileInputStream fileInputStream = new FileInputStream(fileName);
- X509Certificate certificate = DSSUtils.loadCertificate(fileInputStream);
+ X509Certificate certificate = DSSUtils.loadCertificate(fileInputStream).getCertificate();
configuration.getTSL().addTSLCertificate(certificate);
fileInputStream.close();
}
diff --git a/test/org/digidoc4j/impl/BDocContainerTest.java b/test/org/digidoc4j/impl/BDocContainerTest.java
index d13b58101..326e1167e 100644
--- a/test/org/digidoc4j/impl/BDocContainerTest.java
+++ b/test/org/digidoc4j/impl/BDocContainerTest.java
@@ -14,15 +14,16 @@
import eu.europa.ec.markt.dss.exception.DSSException;
import eu.europa.ec.markt.dss.signature.DSSDocument;
import eu.europa.ec.markt.dss.signature.asic.ASiCService;
-import eu.europa.ec.markt.dss.signature.token.Constants;
import eu.europa.ec.markt.dss.validation102853.CommonCertificateVerifier;
import eu.europa.ec.markt.dss.validation102853.rules.MessageTag;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.ArrayUtils;
+import org.apache.commons.lang.StringUtils;
import org.digidoc4j.*;
import org.digidoc4j.exceptions.*;
import org.digidoc4j.signers.ExternalSigner;
import org.digidoc4j.signers.PKCS12Signer;
+import org.digidoc4j.utils.DigestInfoPrefix;
import org.digidoc4j.utils.Helper;
import org.junit.AfterClass;
import org.junit.Before;
@@ -1076,10 +1077,10 @@ private byte[] addPadding(byte[] digest) {
byte[] signatureDigest;
switch (digestAlgorithm) {
case SHA512:
- signatureDigest = Constants.SHA512_DIGEST_INFO_PREFIX;
+ signatureDigest = DigestInfoPrefix.SHA512;
break;
case SHA256:
- signatureDigest = Constants.SHA256_DIGEST_INFO_PREFIX;
+ signatureDigest = DigestInfoPrefix.SHA256;
break;
default:
throw new NotYetImplementedException();
@@ -1539,9 +1540,10 @@ public void noSignedPropRefTM() {
Container container = Container.open("testFiles/REF-03_bdoc21-TM-no-signedpropref.bdoc", configuration);
ValidationResult result = container.validate();
List