private void recordConstraint(XmlStatus status) { XmlConstraint xmlConstraint = new XmlConstraint(); xmlConstraint.setName(buildXmlName(getMessageTag())); xmlConstraint.setStatus(status); xmlConstraint.setId(bbbId); if (XmlStatus.NOT_OK.equals(status) || XmlStatus.WARNING.equals(status) || XmlStatus.INFORMATION.equals(status)) { if (XmlStatus.NOT_OK.equals(status)) { xmlConstraint.setError(buildXmlName(getErrorMessageTag())); } else if (XmlStatus.WARNING.equals(status)) { xmlConstraint.setWarning(buildXmlName(getErrorMessageTag())); } else if (XmlStatus.INFORMATION.equals(status)) { xmlConstraint.setInfo(buildXmlName(getErrorMessageTag())); } } xmlConstraint.setAdditionalInfo(getAdditionalInfo()); addConstraint(xmlConstraint); }
private XmlName getMessage(MessageType type, XmlConstraint constraint) { XmlName message = null; switch (type) { case ERROR: message = constraint.getError(); break; case WARN: message = constraint.getWarning(); break; case INFO: message = constraint.getInfo(); break; default: break; } return message; }
private Set<TimestampWrapper> filterValidSignatureTimestamps(List<TimestampWrapper> allTimestamps) { Set<TimestampWrapper> result = new HashSet<TimestampWrapper>(); for (TimestampWrapper timestampWrapper : allTimestamps) { if (!TimestampType.SIGNATURE_TIMESTAMP.name().equals(timestampWrapper.getType())) { break; } boolean foundValidationTSP = false; for (XmlValidationProcessTimestamps timestampValidation : timestampValidations) { List<XmlConstraint> constraints = timestampValidation.getConstraint(); for (XmlConstraint tspValidation : constraints) { if (Utils.areStringsEqual(timestampWrapper.getId(), tspValidation.getId())) { foundValidationTSP = true; // PVA : if OK message imprint is validated in SVA of timestamp (depending of constraint.xml) if (XmlStatus.OK.equals(tspValidation.getStatus())) { result.add(timestampWrapper); break; } } } } if (!foundValidationTSP) { LOG.warn("Cannot find tsp validation info for tsp {}", timestampWrapper.getId()); } } return result; }
@Test public void certificateExpirationCheck() throws Exception { LevelConstraint constraint = new LevelConstraint(); constraint.setLevel(Level.FAIL); Date now = new Date(); long nowMil = now.getTime(); XmlCertificate xc = new XmlCertificate(); xc.setNotAfter(new Date(nowMil + 86400000)); // in 24 hours xc.setNotBefore(new Date(nowMil - 86400000)); // 24 hours ago XmlSubXCV result = new XmlSubXCV(); CertificateExpirationCheck cec = new CertificateExpirationCheck(result, new CertificateWrapper(xc), new Date(), constraint); cec.execute(); List<XmlConstraint> constraints = result.getConstraint(); assertEquals(1, constraints.size()); assertEquals(XmlStatus.OK, constraints.get(0).getStatus()); }
private void updateFinalConclusion(XmlBasicBuildingBlocks result, XmlConstraintsConclusion constraintsAndConclusion) { XmlConclusion finalConclusion = result.getConclusion(); XmlConclusion currentConclusion = constraintsAndConclusion.getConclusion(); List<XmlConstraint> constraints = constraintsAndConclusion.getConstraint(); if (!Indication.PASSED.equals(currentConclusion.getIndication())) { finalConclusion.setIndication(currentConclusion.getIndication()); finalConclusion.setSubIndication(currentConclusion.getSubIndication()); finalConclusion.getErrors().addAll(currentConclusion.getErrors()); } if (Utils.isCollectionNotEmpty(constraints)) { for (XmlConstraint constraint : constraints) { XmlName info = constraint.getInfo(); if (info != null) { finalConclusion.getInfos().add(info); } XmlName warning = constraint.getWarning(); if (warning != null) { finalConclusion.getWarnings().add(warning); } } } }
/** * Create an instance of {@link XmlConstraint } * */ public XmlConstraint createXmlConstraint() { return new XmlConstraint(); }
private void collect(MessageType type, Set<String> result, XmlConstraintsConclusion constraintConclusion) { if (constraintConclusion != null && Utils.isCollectionNotEmpty(constraintConclusion.getConstraint())) { for (XmlConstraint constraint : constraintConclusion.getConstraint()) { XmlName message = getMessage(type, constraint); if (message != null) { result.add(message.getValue()); } if (Utils.isStringNotBlank(constraint.getId())) { collect(type, result, getBasicBuildingBlockById(constraint.getId())); } } } }
@Test public void failedCertificateExpirationCheck() throws Exception { LevelConstraint constraint = new LevelConstraint(); constraint.setLevel(Level.FAIL); Date now = new Date(); long nowMil = now.getTime(); XmlCertificate xc = new XmlCertificate(); xc.setNotAfter(new Date(nowMil - 86400000)); // 24 hours ago xc.setNotBefore(new Date(nowMil - 172800000)); // 48 hours ago XmlSubXCV result = new XmlSubXCV(); CertificateExpirationCheck cec = new CertificateExpirationCheck(result, new CertificateWrapper(xc), new Date(), constraint); cec.execute(); List<XmlConstraint> constraints = result.getConstraint(); assertEquals(1, constraints.size()); assertEquals(XmlStatus.NOT_OK, constraints.get(0).getStatus()); } }
@Test public void idPkixOcspNoCheck() throws Exception { LevelConstraint constraint = new LevelConstraint(); constraint.setLevel(Level.FAIL); XmlSubXCV result = new XmlSubXCV(); IdPkixOcspNoCheck ic = new IdPkixOcspNoCheck(result, constraint); ic.execute(); List<XmlConstraint> constraints = result.getConstraint(); assertEquals(1, constraints.size()); assertEquals(XmlStatus.OK, constraints.get(0).getStatus()); }
protected void collectErrorsWarnsInfos() { XmlConclusion conclusion = result.getConclusion(); List<XmlConstraint> constraints = result.getConstraint(); for (XmlConstraint xmlConstraint : constraints) { XmlName error = xmlConstraint.getError(); if (error != null) { conclusion.getErrors().add(error); } XmlName warning = xmlConstraint.getWarning(); if (warning != null) { conclusion.getWarnings().add(warning); } XmlName info = xmlConstraint.getInfo(); if (info != null) { conclusion.getInfos().add(info); } } }
@Test public void failedRevocationDataAvailableCheck() throws Exception { LevelConstraint constraint = new LevelConstraint(); constraint.setLevel(Level.FAIL); XmlRFC result = new XmlRFC(); RevocationDataAvailableCheck rdac = new RevocationDataAvailableCheck(result, null, constraint); rdac.execute(); List<XmlConstraint> constraints = result.getConstraint(); assertEquals(1, constraints.size()); assertEquals(XmlStatus.NOT_OK, constraints.get(0).getStatus()); }
@Test public void keyUsageCheck() throws Exception { List<String> keyUsageBits = new ArrayList<String>(); keyUsageBits.add("Valid_Key"); MultiValuesConstraint constraint = new MultiValuesConstraint(); constraint.setLevel(Level.FAIL); constraint.getId().add(keyUsageBits.get(0)); XmlCertificate xc = new XmlCertificate(); xc.setKeyUsageBits(keyUsageBits); XmlSubXCV result = new XmlSubXCV(); KeyUsageCheck kuc = new KeyUsageCheck(result, new CertificateWrapper(xc), constraint); kuc.execute(); List<XmlConstraint> constraints = result.getConstraint(); assertEquals(1, constraints.size()); assertEquals(XmlStatus.OK, constraints.get(0).getStatus()); }
@Test public void commitmentTypeIndicationsCheck() throws Exception { List<String> commitmentTypeIndication = new ArrayList<String>(); commitmentTypeIndication.add("1"); commitmentTypeIndication.add("2"); XmlSignature sig = new XmlSignature(); sig.setCommitmentTypeIndication(commitmentTypeIndication); MultiValuesConstraint constraint = new MultiValuesConstraint(); constraint.setLevel(Level.FAIL); constraint.getId().add("1"); constraint.getId().add("2"); constraint.getId().add("3"); XmlSAV result = new XmlSAV(); CommitmentTypeIndicationsCheck ctic = new CommitmentTypeIndicationsCheck(result, new SignatureWrapper(sig), constraint); ctic.execute(); List<XmlConstraint> constraints = result.getConstraint(); assertEquals(1, constraints.size()); assertEquals(XmlStatus.OK, constraints.get(0).getStatus()); }
@Test public void revocationDataFreshCheckWithNullConstraint() throws Exception { LevelConstraint constraint = new LevelConstraint(); constraint.setLevel(Level.FAIL); XmlRevocation xr = new XmlRevocation(); Date now = new Date(); long nowMil = now.getTime(); xr.setThisUpdate(new Date(nowMil - 129600000)); // 36 hours ago xr.setNextUpdate(new Date(nowMil - 43200000)); // 12 hours ago -> max // freshness is 24 hours xr.setProductionDate(new Date(nowMil - 72000000)); // 20 hours ago -> // fresh XmlRFC result = new XmlRFC(); RevocationDataFreshCheckWithNullConstraint rdfwncc = new RevocationDataFreshCheckWithNullConstraint(result, new RevocationWrapper(xr), now, constraint); rdfwncc.execute(); List<XmlConstraint> constraints = result.getConstraint(); assertEquals(1, constraints.size()); assertEquals(XmlStatus.OK, constraints.get(0).getStatus()); }
@Test public void failedCommitmentTypeIndicationsCheck() throws Exception { List<String> commitmentTypeIndication = new ArrayList<String>(); commitmentTypeIndication.add("1"); commitmentTypeIndication.add("4"); XmlSignature sig = new XmlSignature(); sig.setCommitmentTypeIndication(commitmentTypeIndication); MultiValuesConstraint constraint = new MultiValuesConstraint(); constraint.setLevel(Level.FAIL); constraint.getId().add("1"); constraint.getId().add("2"); constraint.getId().add("3"); XmlSAV result = new XmlSAV(); CommitmentTypeIndicationsCheck ctic = new CommitmentTypeIndicationsCheck(result, new SignatureWrapper(sig), constraint); ctic.execute(); List<XmlConstraint> constraints = result.getConstraint(); assertEquals(1, constraints.size()); assertEquals(XmlStatus.NOT_OK, constraints.get(0).getStatus()); }
@Test public void failedRevocationDataFreshCheckWithNullConstraint() throws Exception { LevelConstraint constraint = new LevelConstraint(); constraint.setLevel(Level.FAIL); XmlRevocation xr = new XmlRevocation(); Date now = new Date(); long nowMil = now.getTime(); xr.setThisUpdate(new Date(nowMil - 129600000)); // 36 hours ago xr.setNextUpdate(new Date(nowMil - 43200000)); // 12 hours ago -> max // freshness is 24 hours xr.setProductionDate(new Date(nowMil - 144000000)); // 20 hours ago -> // not fresh XmlRFC result = new XmlRFC(); RevocationDataFreshCheckWithNullConstraint rdfwncc = new RevocationDataFreshCheckWithNullConstraint(result, new RevocationWrapper(xr), now, constraint); rdfwncc.execute(); List<XmlConstraint> constraints = result.getConstraint(); assertEquals(1, constraints.size()); assertEquals(XmlStatus.NOT_OK, constraints.get(0).getStatus()); }
@Test public void failedKeyUsageCheck() throws Exception { List<String> keyUsageBits = new ArrayList<String>(); keyUsageBits.add("Valid_Key"); MultiValuesConstraint constraint = new MultiValuesConstraint(); constraint.setLevel(Level.FAIL); constraint.getId().add("Invalid_Key"); XmlCertificate xc = new XmlCertificate(); xc.setKeyUsageBits(keyUsageBits); XmlSubXCV result = new XmlSubXCV(); KeyUsageCheck kuc = new KeyUsageCheck(result, new CertificateWrapper(xc), constraint); kuc.execute(); List<XmlConstraint> constraints = result.getConstraint(); assertEquals(1, constraints.size()); assertEquals(XmlStatus.NOT_OK, constraints.get(0).getStatus()); }
@Test public void claimedRolesCheck() throws Exception { List<String> claimedRoles = new ArrayList<String>(); claimedRoles.add("Claimed_Role"); XmlSignature sig = new XmlSignature(); sig.setClaimedRoles(claimedRoles); MultiValuesConstraint constraint = new MultiValuesConstraint(); constraint.setLevel(Level.FAIL); constraint.getId().add("Claimed_Role"); XmlSAV result = new XmlSAV(); ClaimedRolesCheck crc = new ClaimedRolesCheck(result, new SignatureWrapper(sig), constraint); crc.execute(); List<XmlConstraint> constraints = result.getConstraint(); assertEquals(1, constraints.size()); assertEquals(XmlStatus.OK, constraints.get(0).getStatus()); }
@Test public void notClaimedRolesCheck() throws Exception { List<String> claimedRoles = new ArrayList<String>(); claimedRoles.add("Unclaimed_Role"); XmlSignature sig = new XmlSignature(); sig.setClaimedRoles(claimedRoles); MultiValuesConstraint constraint = new MultiValuesConstraint(); constraint.setLevel(Level.FAIL); constraint.getId().add("Claimed_Role"); XmlSAV result = new XmlSAV(); ClaimedRolesCheck crc = new ClaimedRolesCheck(result, new SignatureWrapper(sig), constraint); crc.execute(); List<XmlConstraint> constraints = result.getConstraint(); assertEquals(1, constraints.size()); assertEquals(XmlStatus.NOT_OK, constraints.get(0).getStatus()); }
@Test public void failedRevocationDataFreshCheck() throws Exception { TimeConstraint tc = new TimeConstraint(); tc.setUnit(TimeUnit.DAYS); tc.setValue(1); tc.setLevel(Level.FAIL); XmlRevocation xr = new XmlRevocation(); Date now = new Date(); long nowMil = now.getTime(); xr.setProductionDate(new Date(nowMil - 172800000)); // 48 hours ago XmlRFC result = new XmlRFC(); RevocationDataFreshCheck rdec = new RevocationDataFreshCheck(result, new RevocationWrapper(xr), now, tc); rdec.execute(); List<XmlConstraint> constraints = result.getConstraint(); assertEquals(1, constraints.size()); assertEquals(XmlStatus.NOT_OK, constraints.get(0).getStatus()); }