package eu.europa.esig.dss.validation.process.vpfswatsp.checks.psv.checks; import eu.europa.esig.dss.jaxb.detailedreport.XmlPCV; import eu.europa.esig.dss.jaxb.detailedreport.XmlPSV; import eu.europa.esig.dss.validation.policy.rules.Indication; import eu.europa.esig.dss.validation.policy.rules.SubIndication; import eu.europa.esig.dss.validation.process.ChainItem; import eu.europa.esig.dss.validation.process.MessageTag; import eu.europa.esig.jaxb.policy.LevelConstraint; public class PastCertificateValidationAcceptableCheck extends ChainItem<XmlPSV> { private final XmlPCV pcv; public PastCertificateValidationAcceptableCheck(XmlPSV result, XmlPCV pcv, LevelConstraint constraint) { super(result, constraint); this.pcv = pcv; } @Override protected boolean process() { if ((pcv != null) && (pcv.getConclusion() != null)) { Indication pcvIndication = pcv.getConclusion().getIndication(); SubIndication pcvSubindication = pcv.getConclusion().getSubIndication(); // INDETERMINATE cases are treated in following steps depending of POE return Indication.PASSED.equals(pcvIndication) || (Indication.INDETERMINATE.equals(pcvIndication) && (SubIndication.REVOKED_NO_POE.equals(pcvSubindication) || SubIndication.REVOKED_CA_NO_POE.equals(pcvSubindication) || SubIndication.OUT_OF_BOUNDS_NO_POE.equals(pcvSubindication) || SubIndication.CRYPTO_CONSTRAINTS_FAILURE_NO_POE.equals(pcvSubindication))); } return false; } @Override protected MessageTag getMessageTag() { return MessageTag.PSV_IPCVA; } @Override protected MessageTag getErrorMessageTag() { return MessageTag.PSV_IPCVA_ANS; } @Override protected Indication getFailedIndicationForConclusion() { return pcv.getConclusion().getIndication(); } @Override protected SubIndication getFailedSubIndicationForConclusion() { return pcv.getConclusion().getSubIndication(); } }