eu.europa.esig.dss.asic.validation.AbstractASiCContainerValidator Maven / Gradle / Ivy
package eu.europa.esig.dss.asic.validation;
import java.util.ArrayList;
import java.util.List;
import eu.europa.esig.dss.ASiCContainerType;
import eu.europa.esig.dss.DSSDocument;
import eu.europa.esig.dss.DSSException;
import eu.europa.esig.dss.DSSUnsupportedOperationException;
import eu.europa.esig.dss.DSSUtils;
import eu.europa.esig.dss.asic.ASiCExtractResult;
import eu.europa.esig.dss.asic.ASiCUtils;
import eu.europa.esig.dss.asic.AbstractASiCContainerExtractor;
import eu.europa.esig.dss.utils.Utils;
import eu.europa.esig.dss.validation.AdvancedSignature;
import eu.europa.esig.dss.validation.ContainerInfo;
import eu.europa.esig.dss.validation.DocumentValidator;
import eu.europa.esig.dss.validation.ManifestFile;
import eu.europa.esig.dss.validation.SignedDocumentValidator;
import eu.europa.esig.dss.validation.ValidationContext;
public abstract class AbstractASiCContainerValidator extends SignedDocumentValidator {
protected List validators;
private ASiCExtractResult extractResult;
private ASiCContainerType containerType;
/**
* Default constructor used with reflexion (see SignedDocumentValidator)
*/
private AbstractASiCContainerValidator() {
super(null);
this.document = null;
}
protected AbstractASiCContainerValidator(final DSSDocument document) {
super(null);
this.document = document;
}
protected void analyseEntries() {
AbstractASiCContainerExtractor extractor = getArchiveExtractor();
extractResult = extractor.extract();
containerType = ASiCUtils.getContainerType(document, extractResult.getMimeTypeDocument(), extractResult.getZipComment(),
extractResult.getSignedDocuments());
}
abstract AbstractASiCContainerExtractor getArchiveExtractor();
public ASiCContainerType getContainerType() {
return containerType;
}
@Override
public List processSignaturesValidation(final ValidationContext validationContext, boolean structuralValidation) {
List allSignatures = new ArrayList();
List currentValidators = getValidators();
for (DocumentValidator documentValidator : currentValidators) { // CAdES / XAdES
allSignatures.addAll(documentValidator.processSignaturesValidation(validationContext, structuralValidation));
}
attachExternalTimestamps(allSignatures);
return allSignatures;
}
protected void attachExternalTimestamps(List allSignatures) {
}
/**
* This method allows to retrieve the container information (ASiC Container)
*
* @return
*/
@Override
protected ContainerInfo getContainerInfo() {
ContainerInfo containerInfo = new ContainerInfo();
containerInfo.setContainerType(containerType);
containerInfo.setZipComment(extractResult.getZipComment());
DSSDocument mimeTypeDocument = extractResult.getMimeTypeDocument();
if (mimeTypeDocument != null) {
String mimeTypeContent = new String(DSSUtils.toByteArray(mimeTypeDocument));
containerInfo.setMimeTypeFilePresent(true);
containerInfo.setMimeTypeContent(mimeTypeContent);
} else {
containerInfo.setMimeTypeFilePresent(false);
}
List signedDocuments = extractResult.getSignedDocuments();
if (Utils.isCollectionNotEmpty(signedDocuments)) {
List signedDocumentFilenames = new ArrayList();
for (DSSDocument dssDocument : signedDocuments) {
signedDocumentFilenames.add(dssDocument.getName());
}
containerInfo.setSignedDocumentFilenames(signedDocumentFilenames);
}
containerInfo.setManifestFiles(getManifestFilesDecriptions());
return containerInfo;
}
protected abstract List getManifestFilesDecriptions();
@Override
public List getSignatures() {
List allSignatures = new ArrayList();
List currentValidators = getValidators();
for (DocumentValidator documentValidator : currentValidators) {
allSignatures.addAll(documentValidator.getSignatures());
}
return allSignatures;
}
abstract List getValidators();
protected List getSignatureDocuments() {
return extractResult.getSignatureDocuments();
}
protected List getSignedDocuments() {
return extractResult.getSignedDocuments();
}
protected List getManifestDocuments() {
return extractResult.getManifestDocuments();
}
protected List getTimestampDocuments() {
return extractResult.getTimestampDocuments();
}
protected List getArchiveManifestDocuments() {
return extractResult.getArchiveManifestDocuments();
}
@Override
public List getOriginalDocuments(String signatureId) throws DSSException {
// TODO
throw new DSSUnsupportedOperationException("This method is not applicable for this kind of file!");
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy