private boolean validateTslSignature(final List<X509Certificate> signingCertList, final byte[] bytes) { boolean coreValidity = false; if (signingCertList != null) { final XMLDocumentValidator xmlDocumentValidator = prepareSignatureValidation(signingCertList, bytes); final List<AdvancedSignature> signatures = xmlDocumentValidator.getSignatures(); if (signatures.size() == 0) { throw new DSSException("Not ETSI compliant signature. The Xml is not signed."); } final Reports reports = xmlDocumentValidator.validateDocument(); final SimpleReport simpleReport = reports.getSimpleReport(); final List<String> signatureIdList = simpleReport.getSignatureIdList(); final String signatureId = signatureIdList.get(0); final String indication = simpleReport.getIndication(signatureId); coreValidity = Indication.VALID.equals(indication); LOG.info("The TSL signature validity: " + coreValidity); if (!coreValidity) { LOG.info("The TSL signature validity details:\n" + simpleReport); throw new DSSException("Not ETSI compliant signature. The signature is not valid."); } } return coreValidity; }
/** * For debug purpose. */ public void print() { String reportDeep = "#"; Reports currentReports = this; do { System.out.println("[" + reportDeep + "] ----------------Diagnostic data-----------------"); System.out.println(currentReports.diagnosticData); System.out.println("[" + reportDeep + "] ----------------Validation report---------------"); System.out.println(currentReports.detailedReport); System.out.println("[" + reportDeep + "] ----------------Simple report-------------------"); System.out.println(currentReports.simpleReport); System.out.println("[" + reportDeep + "] END ------------------------------------------------"); reportDeep += "#"; currentReports = currentReports.getNextReports(); } while (currentReports != null); } }
final Reports reports = validator.validateDocument(inputStream); final SimpleReport simpleReport = reports.getSimpleReport(); final String simpleReportXml = simpleReport.toString(); final DetailedReport detailedReport = reports.getDetailedReport(); final String detailedReportXml = detailedReport.toString(); if (diagnosticDataToBeReturned) { final DiagnosticData diagnosticData = reports.getDiagnosticData(); final String diagnosticDataXml = diagnosticData.toString(); wsValidationReport.setXmlDiagnosticData(diagnosticDataXml);
firstReport = currentReports; } else { lastReports.setNextReport(currentReports);
/** * This method executes the long term validation processes. The underlying processes are automatically executed. */ @Override public Reports execute() { processParams = new ProcessParameters(); diagnosticData = new DiagnosticData(diagnosticDataDom); processParams.setDiagnosticData(diagnosticData); processParams.setValidationPolicy(validationPolicy); processParams.setCountersignatureValidationPolicy(countersignatureValidationPolicy); processParams.setCurrentTime(currentTime); final XmlDom usedCertificates = diagnosticData.getElement("/DiagnosticData/UsedCertificates"); processParams.setCertPool(usedCertificates); final XmlNode mainNode = new XmlNode(NodeName.VALIDATION_DATA); mainNode.setNameSpace(XmlDom.NAMESPACE); final LongTermValidation ltv = new LongTermValidation(); ltv.run(mainNode, processParams); final Document validationReportDocument = mainNode.toDocument(); detailedReport = new DetailedReport(validationReportDocument); final SimpleReportBuilder simpleReportBuilder = new SimpleReportBuilder(validationPolicy, diagnosticData); simpleReport = simpleReportBuilder.build(processParams); final Reports reports = new Reports(diagnosticData, detailedReport, simpleReport); return reports; }