![JAR search and dependency download from the Maven repository](/logo.png)
eu.europa.esig.dss.asic.signature.asice.AbstractDataToSignASiCEWithCAdES Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of dss-asic-cades Show documentation
Show all versions of dss-asic-cades Show documentation
DSS ASiC with CAdES contains the code for the creation and validation of ASiC containers with CAdES signature(s).
package eu.europa.esig.dss.asic.signature.asice;
import java.io.ByteArrayOutputStream;
import java.util.List;
import eu.europa.esig.dss.DSSDocument;
import eu.europa.esig.dss.DomUtils;
import eu.europa.esig.dss.InMemoryDocument;
import eu.europa.esig.dss.MimeType;
import eu.europa.esig.dss.asic.ASiCParameters;
import eu.europa.esig.dss.asic.ASiCWithCAdESSignatureParameters;
import eu.europa.esig.dss.utils.Utils;
public abstract class AbstractDataToSignASiCEWithCAdES {
private static final String META_INF = "META-INF/";
private static final String ZIP_ENTRY_ASICE_METAINF_CADES_SIGNATURE = META_INF + "signature001.p7s";
protected DSSDocument getASiCManifest(List documents, List signatures, List manifests,
ASiCWithCAdESSignatureParameters parameters) {
ASiCEWithCAdESManifestBuilder manifestBuilder = new ASiCEWithCAdESManifestBuilder(documents, parameters.getDigestAlgorithm(),
getSignatureFileName(parameters.aSiC(), signatures));
DSSDocument manifest = null;
ByteArrayOutputStream baos = null;
try {
baos = new ByteArrayOutputStream();
DomUtils.writeDocumentTo(manifestBuilder.build(), baos);
String name = getASiCManifestFilename(manifests);
manifest = new InMemoryDocument(baos.toByteArray(), name, MimeType.XML);
} finally {
Utils.closeQuietly(baos);
}
return manifest;
}
protected String getSignatureFileName(final ASiCParameters asicParameters, List existingSignatures) {
if (Utils.isStringNotBlank(asicParameters.getSignatureFileName())) {
return META_INF + asicParameters.getSignatureFileName();
}
if (Utils.isCollectionNotEmpty(existingSignatures)) {
return ZIP_ENTRY_ASICE_METAINF_CADES_SIGNATURE.replace("001", getSignatureNumber(existingSignatures));
} else {
return ZIP_ENTRY_ASICE_METAINF_CADES_SIGNATURE;
}
}
private String getSignatureNumber(List existingSignatures) {
int signatureNumbre = existingSignatures.size() + 1;
String sigNumberStr = String.valueOf(signatureNumbre);
String zeroPad = "000";
return zeroPad.substring(sigNumberStr.length()) + sigNumberStr; // 2 -> 002
}
private String getASiCManifestFilename(List existingManifests) {
String suffix = Utils.isCollectionEmpty(existingManifests) ? Utils.EMPTY_STRING : String.valueOf(existingManifests.size());
return META_INF + "ASiCManifest" + suffix + ".xml";
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy