diff --git a/TLS-Server-Scanner/src/main/java/de/rub/nds/tlsscanner/serverscanner/report/ServerReport.java b/TLS-Server-Scanner/src/main/java/de/rub/nds/tlsscanner/serverscanner/report/ServerReport.java index 2ff67dd15..15b4ae29c 100644 --- a/TLS-Server-Scanner/src/main/java/de/rub/nds/tlsscanner/serverscanner/report/ServerReport.java +++ b/TLS-Server-Scanner/src/main/java/de/rub/nds/tlsscanner/serverscanner/report/ServerReport.java @@ -20,6 +20,7 @@ import de.rub.nds.scanner.core.probe.result.ObjectResult; import de.rub.nds.scanner.core.probe.result.SetResult; import de.rub.nds.scanner.core.probe.result.StringResult; +import de.rub.nds.scanner.core.probe.result.TestResult; import de.rub.nds.scanner.core.probe.result.TestResults; import de.rub.nds.scanner.core.report.rating.ScoreReport; import de.rub.nds.tlsattacker.core.constants.NamedGroup; @@ -357,4 +358,16 @@ public synchronized String getIpv6Address() { StringResult stringResult = getStringResult(QuicAnalyzedProperty.IPV6_ADDRESS); return stringResult == null ? null : stringResult.getValue(); } + + public synchronized TestResult getSupportsOcspStapling() { + return getResult(TlsAnalyzedProperty.SUPPORTS_OCSP_STAPLING); + } + + public synchronized TestResult getIssuesTls13SessionTicketsAfterHandshake() { + return getResult(TlsAnalyzedProperty.ISSUES_TLS13_SESSION_TICKETS_AFTER_HANDSHAKE); + } + + public synchronized TestResult getIssuesTls13SessionTicketsWithApplicationData() { + return getResult(TlsAnalyzedProperty.ISSUES_TLS13_SESSION_TICKETS_WITH_APPLICATION_DATA); + } } diff --git a/TLS-Server-Scanner/src/test/java/de/rub/nds/tlsscanner/serverscanner/report/ServerReportSerializerTest.java b/TLS-Server-Scanner/src/test/java/de/rub/nds/tlsscanner/serverscanner/report/ServerReportSerializerTest.java index c7635bd71..e12fb1d8d 100644 --- a/TLS-Server-Scanner/src/test/java/de/rub/nds/tlsscanner/serverscanner/report/ServerReportSerializerTest.java +++ b/TLS-Server-Scanner/src/test/java/de/rub/nds/tlsscanner/serverscanner/report/ServerReportSerializerTest.java @@ -134,4 +134,27 @@ void testSerializeFullReport() { ServerReportSerializer.serialize(new ByteArrayOutputStream(), report); // This should not throw an exception } + + @Test + void testSerializeOcspAndSessionTicketProperties() { + ServerReport report = new ServerReport(); + report.putResult(TlsAnalyzedProperty.SUPPORTS_OCSP_STAPLING, TestResults.TRUE); + report.putResult( + TlsAnalyzedProperty.ISSUES_TLS13_SESSION_TICKETS_AFTER_HANDSHAKE, TestResults.TRUE); + report.putResult( + TlsAnalyzedProperty.ISSUES_TLS13_SESSION_TICKETS_WITH_APPLICATION_DATA, + TestResults.FALSE); + + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + ServerReportSerializer.serialize(outputStream, report); + + String jsonOutput = outputStream.toString(); + // Verify that the properties are included in the JSON output + assert jsonOutput.contains("SUPPORTS_OCSP_STAPLING") + : "JSON doesn't contain SUPPORTS_OCSP_STAPLING"; + assert jsonOutput.contains("ISSUES_TLS13_SESSION_TICKETS_AFTER_HANDSHAKE") + : "JSON doesn't contain ISSUES_TLS13_SESSION_TICKETS_AFTER_HANDSHAKE"; + assert jsonOutput.contains("ISSUES_TLS13_SESSION_TICKETS_WITH_APPLICATION_DATA") + : "JSON doesn't contain ISSUES_TLS13_SESSION_TICKETS_WITH_APPLICATION_DATA"; + } }