private void addSignatures(SimpleReport simpleReport, boolean container) { validSignatureCount = 0; totalSignatureCount = 0; List<SignatureWrapper> signatures = diagnosticData.getSignatures(); for (SignatureWrapper signature : signatures) { addSignature(simpleReport, signature, container); } }
/** * This method returns signatures (not countersignatures) * * @return a set of SignatureWrapper */ public Set<SignatureWrapper> getAllSignatures() { Set<SignatureWrapper> signatures = new HashSet<SignatureWrapper>(); List<SignatureWrapper> mixedSignatures = getSignatures(); for (SignatureWrapper signatureWrapper : mixedSignatures) { if (Utils.isStringEmpty(signatureWrapper.getParentId())) { signatures.add(signatureWrapper); } } return signatures; }
/** * This method retrieves a set of timestamp wrappers * * @return a list of timestamp wrappers */ public Set<TimestampWrapper> getAllTimestamps() { Set<TimestampWrapper> allTimestamps = new HashSet<TimestampWrapper>(); List<SignatureWrapper> signatures = getSignatures(); if (Utils.isCollectionNotEmpty(signatures)) { for (SignatureWrapper signatureWrapper : signatures) { allTimestamps.addAll(signatureWrapper.getTimestampList()); } } return allTimestamps; }
/** * This method returns counter-signatures (not signatures) * * @return a set of SignatureWrapper */ public Set<SignatureWrapper> getAllCounterSignatures() { Set<SignatureWrapper> signatures = new HashSet<SignatureWrapper>(); List<SignatureWrapper> mixedSignatures = getSignatures(); for (SignatureWrapper signatureWrapper : mixedSignatures) { if (Utils.isStringNotEmpty(signatureWrapper.getParentId())) { signatures.add(signatureWrapper); } } return signatures; }
@Override protected boolean process() { boolean foundCountersignature = false; String currentSignatureId = signature.getId(); List<SignatureWrapper> signatures = diagnosticData.getSignatures(); for (SignatureWrapper signatureWrapper : signatures) { if (signatureWrapper.isCounterSignature() && currentSignatureId.equals(signatureWrapper.getParentId())) { foundCountersignature = true; break; } } return foundCountersignature; }
private SignatureWrapper getFirstSignatureNullSafe() { List<SignatureWrapper> signatures = getSignatures(); if (Utils.isCollectionNotEmpty(signatures)) { return signatures.get(0); } return new SignatureWrapper(new XmlSignature()); // TODO improve ? }
/** * This method returns a signature wrapper for the given signature id * * @param id * the signature id * @return a signature wrapper or null */ public SignatureWrapper getSignatureById(String id) { List<SignatureWrapper> signatures = getSignatures(); if (Utils.isCollectionNotEmpty(signatures)) { for (SignatureWrapper xmlSignature : signatures) { if (Utils.areStringsEqual(id, xmlSignature.getId())) { return xmlSignature; } } } return null; }
/** * Returns the TimestampWrapper corresponding to the given id. * * @param id * timestamp id * @return timestamp wrapper or null */ public TimestampWrapper getTimestampById(String id) { List<SignatureWrapper> signatures = getSignatures(); for (SignatureWrapper signatureWrapper : signatures) { List<TimestampWrapper> timestampList = signatureWrapper.getTimestampList(); for (TimestampWrapper timestampWrapper : timestampList) { if (Utils.areStringsEqual(id, timestampWrapper.getId())) { return timestampWrapper; } } } return null; }
private SignatureWrapper getSignatureByIdNullSafe(String id) { List<SignatureWrapper> signatures = getSignatures(); if (Utils.isCollectionNotEmpty(signatures)) { for (SignatureWrapper xmlSignature : signatures) { if (Utils.areStringsEqual(id, xmlSignature.getId())) { return xmlSignature; } } } return new SignatureWrapper(new XmlSignature()); // TODO improve ? }
void validateRevocationFreshness(eu.europa.esig.dss.validation.reports.Reports reports) { DiagnosticData diagnosticData = reports.getDiagnosticData(); if (diagnosticData.getUsedCertificates() != null && diagnosticData.getSigningCertificateId() != null) { for (CertificateWrapper certificateWrapper : diagnosticData.getUsedCertificates()) { for (SignatureWrapper signatureWrapper : diagnosticData.getSignatures()) { if (certificateWrapper.getId().equals(signatureWrapper.getSigningCertificateId()) && !signatureWrapper.getTimestampList().isEmpty()) { TimestampWrapper timeStampWrapper = getFirstTimestamp(signatureWrapper.getTimestampList()); if (timeStampWrapper.getProductionTime() == null) return; boolean revocationFreshnessCheckInvokeError = isRevocationFreshnessCheckInvalid(certificateWrapper, timeStampWrapper); if (revocationFreshnessCheckInvokeError) { reports.getSimpleReport().getErrors(signatureWrapper.getId()).add(REVOCATION_FRESHNESS_FAULT); } else { boolean revocationFreshnessCheckInvokeWarning = certificateWrapper.getRevocationData().stream().anyMatch( r -> !CRL_REVOCATION_SOURCE.equals(r.getSource()) && isInRangeMillis(r.getProductionDate(), timeStampWrapper.getProductionTime(), REVOCATION_FRESHNESS_FIFTEEN_MINUTES_DIFFERENCE)); if (revocationFreshnessCheckInvokeWarning) { reports.getSimpleReport().getWarnings(signatureWrapper.getId()).add(REVOCATION_FRESHNESS_FAULT); } } } } } } }
detailedReport.getBasicBuildingBlocks().addAll(bbbs.values()); for (SignatureWrapper signature : diagnosticData.getSignatures()) {