package eu.europa.esig.dss.validation.process.bbb.sav; import java.util.Date; import eu.europa.esig.dss.jaxb.detailedreport.XmlSAV; import eu.europa.esig.dss.validation.policy.Context; import eu.europa.esig.dss.validation.policy.ValidationPolicy; import eu.europa.esig.dss.validation.process.ChainItem; import eu.europa.esig.dss.validation.process.bbb.sav.checks.CryptographicCheck; import eu.europa.esig.dss.validation.process.bbb.sav.checks.TimestampMessageImprintDataFoundCheck; import eu.europa.esig.dss.validation.process.bbb.sav.checks.TimestampMessageImprintDataIntactCheck; import eu.europa.esig.dss.validation.reports.wrapper.DiagnosticData; import eu.europa.esig.dss.validation.reports.wrapper.TimestampWrapper; import eu.europa.esig.jaxb.policy.CryptographicConstraint; import eu.europa.esig.jaxb.policy.LevelConstraint; /** * 5.2.8 Signature acceptance validation (SAV) This building block covers any * additional verification to be performed on the signature itself or on the * attributes of the signature ETSI EN 319 132-1 */ public class TimestampAcceptanceValidation extends AbstractAcceptanceValidation<TimestampWrapper> { public TimestampAcceptanceValidation(DiagnosticData diagnosticData, Date currentTime, TimestampWrapper timestamp, ValidationPolicy validationPolicy) { super(diagnosticData, timestamp, currentTime, validationPolicy); } @Override protected void initChain() { ChainItem<XmlSAV> item = firstItem = timestampCryptographic(); // PVA : best place to validate MessageImprintData here // This allows to configure the validation with policy and to get a feedback in the UI item = item.setNextItem(messageImprintDataFound()); item = item.setNextItem(messageImprintDataIntact()); } private ChainItem<XmlSAV> timestampCryptographic() { CryptographicConstraint constraint = validationPolicy.getSignatureCryptographicConstraint(Context.TIMESTAMP); return new CryptographicCheck<XmlSAV>(result, token, currentTime, constraint); } private ChainItem<XmlSAV> messageImprintDataFound() { LevelConstraint constraint = validationPolicy.getMessageImprintDataFoundConstraint(); return new TimestampMessageImprintDataFoundCheck(result, token, constraint); } private ChainItem<XmlSAV> messageImprintDataIntact() { LevelConstraint constraint = validationPolicy.getMessageImprintDataIntactConstraint(); return new TimestampMessageImprintDataIntactCheck(result, token, constraint); } }