package eu.europa.esig.dss.validation.process.vpftsp.checks; import eu.europa.esig.dss.jaxb.detailedreport.XmlBasicBuildingBlocks; import eu.europa.esig.dss.jaxb.detailedreport.XmlCV; import eu.europa.esig.dss.jaxb.detailedreport.XmlConclusion; import eu.europa.esig.dss.jaxb.detailedreport.XmlISC; import eu.europa.esig.dss.jaxb.detailedreport.XmlSAV; import eu.europa.esig.dss.jaxb.detailedreport.XmlValidationProcessTimestamps; import eu.europa.esig.dss.jaxb.detailedreport.XmlXCV; 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 TimestampBasicBuildingBlocksCheck extends ChainItem<XmlValidationProcessTimestamps> { private final XmlBasicBuildingBlocks timestampBBB; private Indication indication; private SubIndication subIndication; public TimestampBasicBuildingBlocksCheck(XmlValidationProcessTimestamps result, XmlBasicBuildingBlocks timestampBBB, LevelConstraint constraint) { super(result, constraint, timestampBBB.getId()); this.timestampBBB = timestampBBB; } @Override protected boolean process() { // Format check is skipped XmlISC isc = timestampBBB.getISC(); XmlConclusion iscConclusion = isc.getConclusion(); if (!Indication.PASSED.equals(iscConclusion.getIndication())) { indication = iscConclusion.getIndication(); subIndication = iscConclusion.getSubIndication(); return false; } // VCI is skipped XmlCV cv = timestampBBB.getCV(); XmlConclusion cvConclusion = cv.getConclusion(); if (!Indication.PASSED.equals(cvConclusion.getIndication())) { indication = cvConclusion.getIndication(); subIndication = cvConclusion.getSubIndication(); return false; } XmlXCV xcv = timestampBBB.getXCV(); XmlConclusion xcvConclusion = xcv.getConclusion(); if (!Indication.PASSED.equals(xcvConclusion.getIndication())) { indication = xcvConclusion.getIndication(); subIndication = xcvConclusion.getSubIndication(); return false; } XmlSAV sav = timestampBBB.getSAV(); XmlConclusion savConclusion = sav.getConclusion(); if (!Indication.PASSED.equals(savConclusion.getIndication())) { indication = savConclusion.getIndication(); subIndication = savConclusion.getSubIndication(); return false; } return true; } @Override protected MessageTag getMessageTag() { return MessageTag.ADEST_ROTVPIIC; } @Override protected MessageTag getErrorMessageTag() { return MessageTag.ADEST_ROTVPIIC_ANS; } @Override protected Indication getFailedIndicationForConclusion() { return indication; } @Override protected SubIndication getFailedSubIndicationForConclusion() { return subIndication; } }