public static String emptyWhenNull(String value) { return value != null ? value : valueNotPresent(); }
public static String getValidationTime() { return getFormattedTimeValue(ZonedDateTime.now(ZoneId.of("GMT"))); }
private String parseClaimedSigningTime(String signatureId) { Date signingDate = dssReports.getSimpleReport().getSigningTime(signatureId); if (signingDate == null) return valueNotKnown(); return emptyWhenNull(ReportBuilderUtils.getDateFormatterWithGMTZone().format(signingDate)); }
private ValidationConclusion getValidationConclusion() { ValidationConclusion validationConclusion = new ValidationConclusion(); validationConclusion.setPolicy(createReportPolicy(validationPolicy)); validationConclusion.setValidationTime(getValidationTime()); validationConclusion.setSignatureForm(ASICS_SIGNATURE_FORMAT); List<TimeStampTokenValidationData> timeStampTokenValidationDataList = new ArrayList<>(); timeStampTokenValidationDataList.add(timeStampTokenValidationData); validationConclusion.setTimeStampTokens(timeStampTokenValidationDataList); validationConclusion.setValidatedDocument(ReportBuilderUtils.createValidatedDocument(isReportSignatureEnabled, validationDocument.getName(), validationDocument.getBytes())); return validationConclusion; }
static ValidationWarning createValidationWarning(String content) { ValidationWarning validationWarning = new ValidationWarning(); validationWarning.setContent(emptyWhenNull(content)); return validationWarning; }
private Info parseSignatureInfo(String signatureFormat, String signatureId) { Date bestSignatureTime = getBestSignatureTime(signatureFormat, signatureId); Info info = new Info(); info.setBestSignatureTime(bestSignatureTime == null ? "" : ReportBuilderUtils.getDateFormatterWithGMTZone().format(bestSignatureTime)); return info; }
public Reports build() { ValidationConclusion validationConclusion = getValidationConclusion(); if (!(container instanceof DDocContainer)) { processSignatureIndications(validationConclusion, validationPolicy.getName()); } SimpleReport simpleReport = new SimpleReport(validationConclusion); DetailedReport detailedReport = new DetailedReport(validationConclusion, null); return new Reports(simpleReport, detailedReport); }
public static void processSignatureIndications(ValidationConclusion validationConclusion, String policyName) { if (QES_POLICY.equals(policyName)) { for (SignatureValidationData signature : validationConclusion.getSignatures()) { if (SignatureValidationData.Indication.TOTAL_PASSED.toString().equals(signature.getIndication())) { String signatureLevel = signature.getSignatureLevel(); if (SignatureQualification.ADESEAL_QC.name().equals(signatureLevel) || SignatureQualification.QES.name().equals(signatureLevel) || SignatureQualification.QESIG.name().equals(signatureLevel) || SignatureQualification.QESEAL.name().equals(signatureLevel)) { continue; } else if (SignatureQualification.ADESIG_QC.name().equals(signatureLevel)) { signature.getWarnings().add(getSignatureLevelWarning()); continue; } signature.setIndication(SignatureValidationData.Indication.TOTAL_FAILED); signature.getErrors().add(getSignatureLevelNotAcceptedError()); validationConclusion.setValidSignaturesCount(validationConclusion.getValidSignaturesCount() - 1); } } } }
private ValidationConclusion getValidationConclusion() { ValidationConclusion validationConclusion = new ValidationConclusion(); validationConclusion.setPolicy(createReportPolicy(validationPolicy)); validationConclusion.setValidationTime(getValidationTime()); validationConclusion.setSignatureForm(getContainerType()); validationConclusion.setValidationWarnings(Collections.emptyList()); validationConclusion.setSignatures(buildSignatureValidationDataList()); validationConclusion.setSignaturesCount(validationConclusion.getSignatures().size()); validationConclusion.setValidatedDocument(ReportBuilderUtils.createValidatedDocument(isReportSignatureEnabled, validationDocument.getName(), validationDocument.getBytes())); validationConclusion.setValidSignaturesCount(validationConclusion.getSignatures() .stream() .filter(vd -> StringUtils.equals(vd.getIndication(), SignatureValidationData.Indication.TOTAL_PASSED.toString())) .collect(Collectors.toList()) .size()); return validationConclusion; }
private Error mapDssError(String dssError) { Error error = new Error(); error.setContent(emptyWhenNull(dssError)); return error; }
private Info getInfo(Signature signature) { Info info = new Info(); Date trustedTime = signature.getTrustedSigningTime(); if (trustedTime != null) { info.setBestSignatureTime(ReportBuilderUtils.getDateFormatterWithGMTZone().format(trustedTime)); } else { info.setBestSignatureTime(""); } return info; }
public Reports build() { ValidationConclusion validationConclusion = getValidationConclusion(); processSignatureIndications(validationConclusion, validationPolicy.getName()); SimpleReport simpleReport = new SimpleReport(validationConclusion); validationConclusion.setValidationLevel(validationLevel.name()); DetailedReport detailedReport = new DetailedReport(validationConclusion, dssReports.getDetailedReportJaxb()); return new Reports(simpleReport, detailedReport); }
private Warning mapDssWarning(String dssWarning) { Warning warning = new Warning(); warning.setContent(emptyWhenNull(dssWarning)); return warning; }
private TimeStampTokenValidationData generateTimeStampTokenData(Date signedTime, String signedBy, List<Error> errors) { TimeStampTokenValidationData timeStampTokenValidationData = new TimeStampTokenValidationData(); timeStampTokenValidationData.setSignedBy(signedBy); timeStampTokenValidationData.setSignedTime(getDateFormatterWithGMTZone().format(signedTime)); if (!errors.isEmpty()) { timeStampTokenValidationData.setError(errors); timeStampTokenValidationData.setIndication(TimeStampTokenValidationData.Indication.TOTAL_FAILED); } else { timeStampTokenValidationData.setIndication(TimeStampTokenValidationData.Indication.TOTAL_PASSED); } return timeStampTokenValidationData; }
private Error mapError(String content) { Error error = new Error(); error.setContent(emptyWhenNull(content)); return error; }
private SignatureValidationData createSignatureValidationData(Signature signature, List<String> dataFilenames) { SignatureValidationData signatureValidationData = new SignatureValidationData(); signatureValidationData.setId(signature.getId()); signatureValidationData.setSignatureFormat(getSignatureFormat(signature.getProfile())); signatureValidationData.setSignatureLevel(getSignatureLevel(signature)); signatureValidationData.setSignedBy(removeQuotes(signature.getSigningCertificate().getSubjectName(CN))); signatureValidationData.setErrors(getErrors(signature)); signatureValidationData.setSignatureScopes(getSignatureScopes(signature, dataFilenames)); signatureValidationData.setClaimedSigningTime(ReportBuilderUtils.getDateFormatterWithGMTZone().format(signature.getClaimedSigningTime())); signatureValidationData.setWarnings(getWarnings(signature)); signatureValidationData.setInfo(getInfo(signature)); signatureValidationData.setIndication(getIndication(signature)); signatureValidationData.setSubIndication(getSubIndication(signature)); signatureValidationData.setCountryCode(getCountryCode(signature)); return signatureValidationData; }
private String parseSignedBy(String signatureId) { return emptyWhenNull(dssReports.getSimpleReport().getSignedBy(signatureId)); }
private static Error mapDigidoc4JException(DigiDoc4JException digiDoc4JException) { Error error = new Error(); error.setContent(emptyWhenNull(digiDoc4JException.getMessage())); return error; }
private static Warning mapDigidoc4JWarning(DigiDoc4JException digiDoc4JException) { Warning warning = new Warning(); warning.setContent(emptyWhenNull(digiDoc4JException.getMessage())); return warning; }
private SignatureScope parseSignatureScope(XmlSignatureScope dssSignatureScope) { SignatureScope signatureScope = new SignatureScope(); signatureScope.setContent(emptyWhenNull(dssSignatureScope.getValue())); signatureScope.setName(emptyWhenNull(dssSignatureScope.getName())); signatureScope.setScope(emptyWhenNull(dssSignatureScope.getScope())); if (CollectionUtils.isNotEmpty(validationDocument.getDatafiles())) { Optional<Datafile> dataFile = validationDocument.getDatafiles() .stream() .filter(datafile -> datafile.getFilename().equals(dssSignatureScope.getName())) .findFirst(); if (dataFile.isPresent()) { signatureScope.setHash(dataFile.get().getHash()); signatureScope.setHashAlgo(dataFile.get().getHashAlgo()); } } return signatureScope; }