Skip to content

Commit

Permalink
Merge tag '4.6.RC1'
Browse files Browse the repository at this point in the history
  • Loading branch information
naramski committed Oct 23, 2015
2 parents f18fc8f + 9f72847 commit 36d7ae2
Show file tree
Hide file tree
Showing 750 changed files with 103,323 additions and 12,790 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
dss-demo-webapp/etc/
pom.xml.versionsBackup
dependency-reduced-pom.xml
.*
Expand Down
2 changes: 1 addition & 1 deletion dss-asic/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<parent>
<groupId>eu.europa.ec.joinup.sd-dss</groupId>
<artifactId>sd-dss</artifactId>
<version>4.5.0</version>
<version>4.6.RC1</version>
</parent>

<artifactId>dss-asic</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
import java.io.Serializable;

import eu.europa.esig.dss.DSSDocument;
import eu.europa.esig.dss.x509.SignatureForm;
import eu.europa.esig.dss.SignatureForm;

/**
* This class regroups the signature parameters related to ASiC form.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,11 @@
import eu.europa.esig.dss.DigestAlgorithm;
import eu.europa.esig.dss.InMemoryDocument;
import eu.europa.esig.dss.MimeType;
import eu.europa.esig.dss.SignatureForm;
import eu.europa.esig.dss.SignatureLevel;
import eu.europa.esig.dss.SignaturePackaging;
import eu.europa.esig.dss.SignatureValue;
import eu.europa.esig.dss.SigningOperation;
import eu.europa.esig.dss.ToBeSigned;
import eu.europa.esig.dss.asic.ASiCParameters;
import eu.europa.esig.dss.asic.ASiCSignatureParameters;
Expand All @@ -66,11 +69,9 @@
import eu.europa.esig.dss.cades.signature.CAdESService;
import eu.europa.esig.dss.signature.AbstractSignatureService;
import eu.europa.esig.dss.signature.DocumentSignatureService;
import eu.europa.esig.dss.signature.SignaturePackaging;
import eu.europa.esig.dss.validation.CertificateVerifier;
import eu.europa.esig.dss.validation.DocumentValidator;
import eu.europa.esig.dss.validation.SignedDocumentValidator;
import eu.europa.esig.dss.x509.SignatureForm;
import eu.europa.esig.dss.xades.XAdESSignatureParameters;
import eu.europa.esig.dss.xades.signature.XAdESService;

Expand All @@ -90,8 +91,6 @@ public class ASiCService extends AbstractSignatureService<ASiCSignatureParameter
private final static String ZIP_ENTRY_ASICS_METAINF_CADES_SIGNATURE = META_INF + "signature.p7s";
private final static String ZIP_ENTRY_ASICE_METAINF_CADES_SIGNATURE = META_INF + "signature001.p7s";

private final static String ASICS_EXTENSION = ".asics"; // can be ".scs"
private final static String ASICE_EXTENSION = ".asice"; // can be ".sce"
public final static String ASICS_NS = "asic:XAdESSignatures";

private DocumentSignatureService underlyingASiCService;
Expand Down Expand Up @@ -168,13 +167,13 @@ public DSSDocument signDocument(final DSSDocument toSignDocument, final ASiCSign
}
if (isAsice(asicParameters) && isCAdESForm(asicParameters)) {
if (!signingContainer) {

contextToSignDocument = toSignDocument;
} else {
contextToSignDocument = parameters.getDetachedContent();
}
}
final InMemoryDocument asicSignature = buildASiCContainer(contextToSignDocument, asicContainer, parameters, signature);
asicSignature.setName(DSSUtils.getFinalFileName(toSignDocument, SigningOperation.SIGN, parameters.getSignatureLevel()));
parameters.reinitDeterministicId();
return asicSignature;

Expand All @@ -192,12 +191,12 @@ public DSSDocument extendDocument(final DSSDocument toExtendDocument, final ASiC
final DocumentSignatureService specificService = getSpecificService(parameters.aSiC().getUnderlyingForm());
specificService.setTspSource(tspSource);

final AbstractSignatureParameters xadesParameters = getParameters(parameters);
final AbstractSignatureParameters underlyingParameters = getParameters(parameters);
final DSSDocument detachedContent = parameters.getDetachedContent();
final DSSDocument detachedContents = getDetachedContents(subordinatedValidator, detachedContent);
xadesParameters.setDetachedContent(detachedContents);
underlyingParameters.setDetachedContent(detachedContents);
final DSSDocument signature = subordinatedValidator.getDocument();
final DSSDocument signedDocument = specificService.extendDocument(signature, xadesParameters);
final DSSDocument signedDocument = specificService.extendDocument(signature, underlyingParameters);

final ByteArrayOutputStream output = new ByteArrayOutputStream();
final ZipOutputStream zipOutputStream = new ZipOutputStream(output);
Expand All @@ -224,7 +223,9 @@ public DSSDocument extendDocument(final DSSDocument toExtendDocument, final ASiC
}
IOUtils.closeQuietly(zipInputStream);
IOUtils.closeQuietly(zipOutputStream);
return new InMemoryDocument(output.toByteArray(), getName(toExtendDocument.getName(), parameters.aSiC().getContainerForm()), getMimeType(parameters.aSiC().getContainerForm()));
DSSDocument asicSignature = new InMemoryDocument(output.toByteArray(), null, getMimeType(parameters.aSiC().getContainerForm()));
asicSignature.setName(DSSUtils.getFinalFileName(toExtendDocument, SigningOperation.EXTEND, parameters.getSignatureLevel()));
return asicSignature;
} catch(IOException e) {
throw new DSSException(e);
}
Expand Down Expand Up @@ -294,7 +295,7 @@ private InMemoryDocument buildASiCContainer(final DSSDocument toSignDocument, DS
}
DSSUtils.close(zipOutputStream);

final InMemoryDocument asicContainer = createASiCContainer(asicParameters, outBytes, toSignDocumentName);
final InMemoryDocument asicContainer = createASiCContainer(asicParameters, outBytes);
return asicContainer;
}

Expand Down Expand Up @@ -337,8 +338,7 @@ private void buildAsicManifest(final ASiCSignatureParameters underlyingParameter
final Element sigReferenceDom = DSSXMLUtils.addElement(documentDom, asicManifestDom, ASiCNamespaces.ASiC, "asic:SigReference");
final String signatureName = getSignatureFileName(asicParameters);
sigReferenceDom.setAttribute("URI", signatureName);
final String signatureMimeType = getSignatureMimeType(asicParameters);
sigReferenceDom.setAttribute("MimeType", signatureMimeType);
sigReferenceDom.setAttribute("MimeType", MimeType.PKCS7.getMimeTypeString()); // only CAdES form

DSSDocument currentDetachedDocument = detachedDocument;
do {
Expand Down Expand Up @@ -371,15 +371,9 @@ private void createZipEntry(final ZipOutputStream outZip, final ZipEntry entrySi
}
}

private InMemoryDocument createASiCContainer(final ASiCParameters asicParameters, final ByteArrayOutputStream outBytes, final String toSignDocumentName) {
private InMemoryDocument createASiCContainer(final ASiCParameters asicParameters, final ByteArrayOutputStream outBytes) {
SignatureForm containerForm = asicParameters.getContainerForm();
return new InMemoryDocument(outBytes.toByteArray(), getName(toSignDocumentName, containerForm), getMimeType(containerForm));
}

private String getName(String toSignDocumentName, SignatureForm containerForm) {
final boolean asics = SignatureForm.ASiC_S.equals(containerForm);
final String extension = asics ? ASICS_EXTENSION : ASICE_EXTENSION;
return toSignDocumentName != null ? toSignDocumentName + extension : null;
return new InMemoryDocument(outBytes.toByteArray(), null, getMimeType(containerForm));
}

private MimeType getMimeType(SignatureForm containerForm) {
Expand Down Expand Up @@ -585,6 +579,11 @@ private void initCommonFields(AbstractSignatureParameters originalParameters, Ab
parameters.setSignWithExpiredCertificate(originalParameters.isSignWithExpiredCertificate());
parameters.setDetachedContent(originalParameters.getDetachedContent());
parameters.setBLevelParams(originalParameters.bLevel());
parameters.setDigestAlgorithm(originalParameters.getDigestAlgorithm());
parameters.setContentTimestampParameters(originalParameters.getContentTimestampParameters());
parameters.setContentTimestamps(originalParameters.getContentTimestamps());
parameters.setSignatureTimestampParameters(originalParameters.getSignatureTimestampParameters());
parameters.setArchiveTimestampParameters(originalParameters.getArchiveTimestampParameters());
}

private void buildCAdES(final ASiCParameters asicParameters, final DSSDocument signature, final ZipOutputStream outZip) throws DSSException {
Expand Down Expand Up @@ -622,16 +621,6 @@ private String getSignatureFileName(final ASiCParameters asicParameters) {
}
}

private String getSignatureMimeType(final ASiCParameters asicParameters) {
if (isXAdESForm(asicParameters)) {
return MimeType.PKCS7.getMimeTypeString();
} else if (isCAdESForm(asicParameters)) {
return MimeType.PKCS7.getMimeTypeString();
} else {
throw new DSSException("ASiC signature form must be XAdES or CAdES!");
}
}

private void storeMimetype(final ASiCParameters asicParameters, final ZipOutputStream outZip) throws DSSException {
final byte[] mimeTypeBytes = getMimeTypeBytes(asicParameters).getBytes();
final ZipEntry entryMimetype = getZipEntryMimeType(mimeTypeBytes);
Expand Down Expand Up @@ -759,4 +748,5 @@ protected DocumentSignatureService getSpecificService(SignatureForm signatureFor
}
return underlyingASiCService;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -25,19 +25,19 @@
import eu.europa.esig.dss.DSSDocument;
import eu.europa.esig.dss.InMemoryDocument;
import eu.europa.esig.dss.SignatureAlgorithm;
import eu.europa.esig.dss.SignatureForm;
import eu.europa.esig.dss.SignaturePackaging;
import eu.europa.esig.dss.SignatureValue;
import eu.europa.esig.dss.ToBeSigned;
import eu.europa.esig.dss.asic.ASiCSignatureParameters;
import eu.europa.esig.dss.asic.signature.ASiCService;
import eu.europa.esig.dss.extension.AbstractTestExtension;
import eu.europa.esig.dss.signature.DocumentSignatureService;
import eu.europa.esig.dss.signature.SignaturePackaging;
import eu.europa.esig.dss.test.gen.CertificateService;
import eu.europa.esig.dss.test.mock.MockPrivateKeyEntry;
import eu.europa.esig.dss.test.mock.MockTSPSource;
import eu.europa.esig.dss.validation.CertificateVerifier;
import eu.europa.esig.dss.validation.CommonCertificateVerifier;
import eu.europa.esig.dss.x509.SignatureForm;

public abstract class AbstractTestASiCwithCAdESExtension extends AbstractTestExtension {

Expand All @@ -60,7 +60,7 @@ protected DSSDocument getSignedDocument() throws Exception {
ASiCService service = new ASiCService(certificateVerifier);
service.setTspSource(new MockTSPSource(certificateService.generateTspCertificate(SignatureAlgorithm.RSA_SHA1), new Date()));

ToBeSigned dataToSign = service.getDataToSign(document, signatureParameters);;
ToBeSigned dataToSign = service.getDataToSign(document, signatureParameters);
SignatureValue signatureValue = sign(signatureParameters.getSignatureAlgorithm(), entryUserA, dataToSign);
final DSSDocument signedDocument = service.signDocument(document, signatureParameters, signatureValue);
return signedDocument;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,19 +25,19 @@
import eu.europa.esig.dss.DSSDocument;
import eu.europa.esig.dss.InMemoryDocument;
import eu.europa.esig.dss.SignatureAlgorithm;
import eu.europa.esig.dss.SignatureForm;
import eu.europa.esig.dss.SignaturePackaging;
import eu.europa.esig.dss.SignatureValue;
import eu.europa.esig.dss.ToBeSigned;
import eu.europa.esig.dss.asic.ASiCSignatureParameters;
import eu.europa.esig.dss.asic.signature.ASiCService;
import eu.europa.esig.dss.extension.AbstractTestExtension;
import eu.europa.esig.dss.signature.DocumentSignatureService;
import eu.europa.esig.dss.signature.SignaturePackaging;
import eu.europa.esig.dss.test.gen.CertificateService;
import eu.europa.esig.dss.test.mock.MockPrivateKeyEntry;
import eu.europa.esig.dss.test.mock.MockTSPSource;
import eu.europa.esig.dss.validation.CertificateVerifier;
import eu.europa.esig.dss.validation.CommonCertificateVerifier;
import eu.europa.esig.dss.x509.SignatureForm;

public abstract class AbstractTestASiCwithXAdESExtension extends AbstractTestExtension {

Expand All @@ -60,7 +60,7 @@ protected DSSDocument getSignedDocument() throws Exception {
ASiCService service = new ASiCService(certificateVerifier);
service.setTspSource(new MockTSPSource(certificateService.generateTspCertificate(SignatureAlgorithm.RSA_SHA1), new Date()));

ToBeSigned dataToSign = service.getDataToSign(document, signatureParameters);;
ToBeSigned dataToSign = service.getDataToSign(document, signatureParameters);
SignatureValue signatureValue = sign(signatureParameters.getSignatureAlgorithm(), entryUserA, dataToSign);
final DSSDocument signedDocument = service.signDocument(document, signatureParameters, signatureValue);
return signedDocument;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,90 +18,77 @@
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
package eu.europa.esig.dss.xades.signature;
package eu.europa.esig.dss.asic.signature.asice;

import static org.junit.Assert.assertEquals;

import java.io.File;
import java.io.FileInputStream;
import java.util.Date;

import org.apache.commons.codec.binary.Base64;
import org.apache.commons.io.IOUtils;
import org.junit.Before;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import eu.europa.esig.dss.DSSDocument;
import eu.europa.esig.dss.DSSUtils;
import eu.europa.esig.dss.DigestAlgorithm;
import eu.europa.esig.dss.DigestDocument;
import eu.europa.esig.dss.InMemoryDocument;
import eu.europa.esig.dss.MimeType;
import eu.europa.esig.dss.SignatureAlgorithm;
import eu.europa.esig.dss.SignatureForm;
import eu.europa.esig.dss.SignatureLevel;
import eu.europa.esig.dss.SignaturePackaging;
import eu.europa.esig.dss.asic.ASiCSignatureParameters;
import eu.europa.esig.dss.asic.signature.ASiCService;
import eu.europa.esig.dss.signature.AbstractTestSignature;
import eu.europa.esig.dss.signature.DocumentSignatureService;
import eu.europa.esig.dss.signature.SignaturePackaging;
import eu.europa.esig.dss.test.gen.CertificateService;
import eu.europa.esig.dss.test.mock.MockPrivateKeyEntry;
import eu.europa.esig.dss.validation.CertificateVerifier;
import eu.europa.esig.dss.validation.CommonCertificateVerifier;
import eu.europa.esig.dss.xades.XAdESSignatureParameters;

public class XAdESLevelBEnvelopingDigestDocumentTest extends AbstractTestSignature {
import eu.europa.esig.dss.validation.report.DiagnosticData;

private static final Logger logger = LoggerFactory.getLogger(XAdESLevelBEnvelopingDigestDocumentTest.class);
public class ASiCELevelBCAdESSHA384Test extends AbstractTestSignature {

private DocumentSignatureService<XAdESSignatureParameters> service;
private XAdESSignatureParameters signatureParameters;
private DocumentSignatureService<ASiCSignatureParameters> service;
private ASiCSignatureParameters signatureParameters;
private DSSDocument documentToSign;
private MockPrivateKeyEntry privateKeyEntry;

@Before
public void init() throws Exception {
File file = new File("src/test/resources/sample.xml");
DigestDocument digestDocument = new DigestDocument(file);
FileInputStream fis = new FileInputStream(file);
byte[] bytes= IOUtils.toByteArray(fis);
IOUtils.closeQuietly(fis);
String computedDigest = Base64.encodeBase64String(DSSUtils.digest(DigestAlgorithm.SHA256, bytes));
digestDocument.addDigest(DigestAlgorithm.SHA256, computedDigest);
digestDocument.setBase64Encoded(Base64.encodeBase64String(bytes));

documentToSign = digestDocument;
documentToSign = new InMemoryDocument("Hello Wolrd !".getBytes(), "test.text");

CertificateService certificateService = new CertificateService();
privateKeyEntry = certificateService.generateCertificateChain(SignatureAlgorithm.RSA_SHA256);
privateKeyEntry = certificateService.generateCertificateChain(SignatureAlgorithm.RSA_SHA384);

signatureParameters = new XAdESSignatureParameters();
signatureParameters = new ASiCSignatureParameters();
signatureParameters.bLevel().setSigningDate(new Date());
signatureParameters.setSigningCertificate(privateKeyEntry.getCertificate());
signatureParameters.setCertificateChain(privateKeyEntry.getCertificateChain());
signatureParameters.setSignaturePackaging(SignaturePackaging.ENVELOPING);
signatureParameters.setSignatureLevel(SignatureLevel.XAdES_BASELINE_B);
signatureParameters.setSignatureLevel(SignatureLevel.ASiC_E_BASELINE_B);
signatureParameters.setDigestAlgorithm(DigestAlgorithm.SHA384);
signatureParameters.aSiC().setUnderlyingForm(SignatureForm.CAdES);

CertificateVerifier certificateVerifier = new CommonCertificateVerifier();
service = new XAdESService(certificateVerifier);

service = new ASiCService(certificateVerifier);
}

@Override
protected void onDocumentSigned(byte[] byteArray) {
String xmlContent = new String(byteArray);
logger.info(xmlContent);
protected void checkSignatureLevel(DiagnosticData diagnosticData) {
assertEquals(SignatureLevel.CAdES_BASELINE_B.name(), diagnosticData.getSignatureFormat(diagnosticData.getFirstSignatureId()));
}

@Override
protected DocumentSignatureService<XAdESSignatureParameters> getService() {
protected DocumentSignatureService<ASiCSignatureParameters> getService() {
return service;
}

@Override
protected XAdESSignatureParameters getSignatureParameters() {
protected ASiCSignatureParameters getSignatureParameters() {
return signatureParameters;
}

@Override
protected MimeType getExpectedMime() {
return MimeType.XML;
return MimeType.ASICE;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,18 +30,17 @@
import eu.europa.esig.dss.InMemoryDocument;
import eu.europa.esig.dss.MimeType;
import eu.europa.esig.dss.SignatureAlgorithm;
import eu.europa.esig.dss.SignatureForm;
import eu.europa.esig.dss.SignatureLevel;
import eu.europa.esig.dss.asic.ASiCSignatureParameters;
import eu.europa.esig.dss.asic.signature.ASiCService;
import eu.europa.esig.dss.signature.AbstractTestSignature;
import eu.europa.esig.dss.signature.DocumentSignatureService;
import eu.europa.esig.dss.signature.SignaturePackaging;
import eu.europa.esig.dss.test.gen.CertificateService;
import eu.europa.esig.dss.test.mock.MockPrivateKeyEntry;
import eu.europa.esig.dss.validation.CertificateVerifier;
import eu.europa.esig.dss.validation.CommonCertificateVerifier;
import eu.europa.esig.dss.validation.report.DiagnosticData;
import eu.europa.esig.dss.x509.SignatureForm;

public class ASiCELevelBCAdESTest extends AbstractTestSignature {

Expand All @@ -61,7 +60,6 @@ public void init() throws Exception {
signatureParameters.bLevel().setSigningDate(new Date());
signatureParameters.setSigningCertificate(privateKeyEntry.getCertificate());
signatureParameters.setCertificateChain(privateKeyEntry.getCertificateChain());
signatureParameters.setSignaturePackaging(SignaturePackaging.ENVELOPING);
signatureParameters.setSignatureLevel(SignatureLevel.ASiC_E_BASELINE_B);
signatureParameters.aSiC().setUnderlyingForm(SignatureForm.CAdES);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,11 @@
import eu.europa.esig.dss.MimeType;
import eu.europa.esig.dss.SignatureAlgorithm;
import eu.europa.esig.dss.SignatureLevel;
import eu.europa.esig.dss.SignaturePackaging;
import eu.europa.esig.dss.asic.ASiCSignatureParameters;
import eu.europa.esig.dss.asic.signature.ASiCService;
import eu.europa.esig.dss.signature.AbstractTestSignature;
import eu.europa.esig.dss.signature.DocumentSignatureService;
import eu.europa.esig.dss.signature.SignaturePackaging;
import eu.europa.esig.dss.test.gen.CertificateService;
import eu.europa.esig.dss.test.mock.MockPrivateKeyEntry;
import eu.europa.esig.dss.validation.CertificateVerifier;
Expand Down
Loading

0 comments on commit 36d7ae2

Please sign in to comment.