package eu.europa.esig.dss.validation;
import java.util.ArrayList;
import java.util.List;
import eu.europa.esig.dss.DSSDocument;
import eu.europa.esig.dss.InMemoryDocument;
import eu.europa.esig.dss.RemoteDocument;
import eu.europa.esig.dss.utils.Utils;
import eu.europa.esig.dss.validation.reports.Reports;
import eu.europa.esig.dss.validation.reports.dto.ReportsDTO;
import eu.europa.esig.jaxb.policy.ConstraintsParameters;
public class RemoteDocumentValidationService {
private CertificateVerifier verifier;
public void setVerifier(CertificateVerifier verifier) {
this.verifier = verifier;
}
public ReportsDTO validateDocument(RemoteDocument signedFile, RemoteDocument originalFile, ConstraintsParameters policy) {
DSSDocument signedDocument = new InMemoryDocument(signedFile.getBytes(), signedFile.getName(), signedFile.getMimeType());
SignedDocumentValidator signedDocValidator = SignedDocumentValidator.fromDocument(signedDocument);
signedDocValidator.setCertificateVerifier(verifier);
if (originalFile != null && Utils.isArrayNotEmpty(originalFile.getBytes())) {
List<DSSDocument> list = new ArrayList<DSSDocument>();
DSSDocument orignalDocument = new InMemoryDocument(originalFile.getBytes(), originalFile.getName(), originalFile.getMimeType());
list.add(orignalDocument);
signedDocValidator.setDetachedContents(list);
}
Reports reports = policy != null ? signedDocValidator.validateDocument(policy) : signedDocValidator.validateDocument();
ReportsDTO result = new ReportsDTO(reports.getDiagnosticDataJaxb(), reports.getSimpleReportJaxb(), reports.getDetailedReportJaxb());
return result;
}
}