package eu.europa.esig.dss.validation.process.qmatrix; import java.util.Date; import java.util.List; import java.util.Set; import eu.europa.esig.dss.jaxb.detailedreport.XmlConclusion; import eu.europa.esig.dss.jaxb.detailedreport.XmlQMatrixBlock; import eu.europa.esig.dss.jaxb.diagnostic.XmlTrustedList; import eu.europa.esig.dss.utils.Utils; import eu.europa.esig.dss.validation.policy.ValidationPolicy; import eu.europa.esig.dss.validation.process.qmatrix.qualification.SignatureQualificationBlock; import eu.europa.esig.dss.validation.process.qmatrix.tl.TLValidationBlock; import eu.europa.esig.dss.validation.reports.wrapper.DiagnosticData; import eu.europa.esig.dss.validation.reports.wrapper.SignatureWrapper; public class QMatrixBlock { private final XmlConclusion etsi319102Conclusion; private final DiagnosticData diagnosticData; private final ValidationPolicy policy; private final Date currentTime; public QMatrixBlock(XmlConclusion etsi319102Conclusion, DiagnosticData diagnosticData, ValidationPolicy policy, Date currentTime) { this.etsi319102Conclusion = etsi319102Conclusion; this.diagnosticData = diagnosticData; this.policy = policy; this.currentTime = currentTime; } public XmlQMatrixBlock execute() { XmlQMatrixBlock block = new XmlQMatrixBlock(); // Validate the LOTL XmlTrustedList listOfTrustedLists = diagnosticData.getListOfTrustedLists(); if (listOfTrustedLists != null) { TLValidationBlock tlValidation = new TLValidationBlock(listOfTrustedLists, currentTime, policy); block.getTLAnalysis().add(tlValidation.execute()); } // Validate used trusted lists List<XmlTrustedList> trustedLists = diagnosticData.getTrustedLists(); if (Utils.isCollectionNotEmpty(trustedLists)) { for (XmlTrustedList xmlTrustedList : trustedLists) { TLValidationBlock tlValidation = new TLValidationBlock(xmlTrustedList, currentTime, policy); block.getTLAnalysis().add(tlValidation.execute()); } } // foreach signature, determine the qualification Set<SignatureWrapper> allSignatures = diagnosticData.getAllSignatures(); if (Utils.isCollectionNotEmpty(allSignatures)) { for (SignatureWrapper signature : allSignatures) { SignatureQualificationBlock sigQualBlock = new SignatureQualificationBlock(etsi319102Conclusion, block.getTLAnalysis(), signature, diagnosticData, policy); block.getSignatureAnalysis().add(sigQualBlock.execute()); } } return block; } }