Skip to content

Commit c34528b

Browse files
authored
Fixes JSON Serialization Issues (#448)
* fixed json serialization issue * updated bom version * fixed api changes from bom update * removed duplicate json serialization * removed duplicate json serialization and fixed duplicate method
1 parent cb50226 commit c34528b

File tree

9 files changed

+48
-26
lines changed

9 files changed

+48
-26
lines changed

TLS-Client-Scanner/src/main/java/de/rub/nds/tlsscanner/clientscanner/Main.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717
import de.rub.nds.tlsscanner.clientscanner.execution.TlsClientScanner;
1818
import de.rub.nds.tlsscanner.clientscanner.report.ClientContainerReportCreator;
1919
import de.rub.nds.tlsscanner.clientscanner.report.ClientReport;
20-
import de.rub.nds.tlsscanner.clientscanner.report.ClientReportSerializer;
21-
import java.io.File;
2220
import java.io.IOException;
2321
import org.apache.logging.log4j.LogManager;
2422
import org.apache.logging.log4j.Logger;
@@ -54,10 +52,6 @@ public static void main(String[] args) throws IOException {
5452
+ ((System.currentTimeMillis() - time) / 1000)
5553
+ "s\n"
5654
+ builder);
57-
if (config.getExecutorConfig().isWriteReportToFile()) {
58-
File outputFile = new File(config.getExecutorConfig().getOutputFile());
59-
ClientReportSerializer.serialize(outputFile, report);
60-
}
6155
} catch (ConfigurationException e) {
6256
LOGGER.error("Encountered a ConfigurationException aborting.", e);
6357
}

TLS-Client-Scanner/src/main/java/de/rub/nds/tlsscanner/clientscanner/probe/DtlsFragmentationProbe.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,8 @@ private TestResult supportsFragmentationAfterCookieExchange(
108108
SendAction action = new SendAction(new CertificateMessage());
109109
action.setConfiguredDtlsHandshakeMessageFragments(
110110
List.of(
111-
new DtlsHandshakeMessageFragment(config, 20),
112-
new DtlsHandshakeMessageFragment(config, 20)));
111+
new DtlsHandshakeMessageFragment(20),
112+
new DtlsHandshakeMessageFragment(20)));
113113
trace.addTlsAction(action);
114114
trace.addTlsAction(new SendAction(new CertificateMessage()));
115115
trace.addTlsAction(new SendDynamicServerKeyExchangeAction());
@@ -144,8 +144,8 @@ private TestResult supportsFragmentationWithExtension(boolean individualTranspor
144144
SendAction action = new SendAction(new CertificateMessage());
145145
action.setConfiguredDtlsHandshakeMessageFragments(
146146
List.of(
147-
new DtlsHandshakeMessageFragment(config, 20),
148-
new DtlsHandshakeMessageFragment(config, 20)));
147+
new DtlsHandshakeMessageFragment(20),
148+
new DtlsHandshakeMessageFragment(20)));
149149
trace.addTlsAction(action);
150150
trace.addTlsAction(new SendAction(new CertificateMessage()));
151151
trace.addTlsAction(new SendDynamicServerKeyExchangeAction());

TLS-Client-Scanner/src/main/java/de/rub/nds/tlsscanner/clientscanner/report/ClientReport.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,21 @@
1414
import com.fasterxml.jackson.datatype.joda.JodaModule;
1515
import de.rub.nds.scanner.core.probe.result.ListResult;
1616
import de.rub.nds.scanner.core.probe.result.SetResult;
17-
import de.rub.nds.tlsattacker.core.constants.*;
17+
import de.rub.nds.tlsattacker.core.constants.CipherSuite;
18+
import de.rub.nds.tlsattacker.core.constants.CompressionMethod;
19+
import de.rub.nds.tlsattacker.core.constants.ECPointFormat;
20+
import de.rub.nds.tlsattacker.core.constants.ExtensionType;
21+
import de.rub.nds.tlsattacker.core.constants.NamedGroup;
22+
import de.rub.nds.tlsattacker.core.constants.SignatureAndHashAlgorithm;
1823
import de.rub.nds.tlsscanner.core.constants.TlsAnalyzedProperty;
19-
import de.rub.nds.tlsscanner.core.converter.*;
24+
import de.rub.nds.tlsscanner.core.converter.PointSerializer;
25+
import de.rub.nds.tlsscanner.core.converter.ResponseFingerprintSerializer;
26+
import de.rub.nds.tlsscanner.core.converter.VectorSerializer;
2027
import de.rub.nds.tlsscanner.core.report.TlsScanReport;
2128
import jakarta.xml.bind.annotation.XmlAccessType;
2229
import jakarta.xml.bind.annotation.XmlAccessorType;
2330
import jakarta.xml.bind.annotation.XmlRootElement;
31+
import java.io.OutputStream;
2432
import java.util.List;
2533
import java.util.Set;
2634

@@ -43,6 +51,11 @@ public ClientReport() {
4351
super();
4452
}
4553

54+
@Override
55+
public void serializeToJson(OutputStream outputStream) {
56+
ClientReportSerializer.serialize(outputStream, this);
57+
}
58+
4659
public synchronized List<CompressionMethod> getClientAdvertisedCompressions() {
4760
ListResult<CompressionMethod> listResult =
4861
getListResult(

TLS-Client-Scanner/src/main/java/de/rub/nds/tlsscanner/clientscanner/report/ClientReportSerializer.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@
1313
import com.fasterxml.jackson.databind.ObjectMapper;
1414
import com.fasterxml.jackson.databind.SerializationFeature;
1515
import java.io.File;
16+
import java.io.FileOutputStream;
1617
import java.io.IOException;
18+
import java.io.OutputStream;
1719
import java.math.BigDecimal;
1820
import org.apache.logging.log4j.LogManager;
1921
import org.apache.logging.log4j.Logger;
@@ -26,7 +28,7 @@ private ClientReportSerializer() {
2628
throw new IllegalStateException("Utility class");
2729
}
2830

29-
public static void serialize(File outputFile, ClientReport scanReport) {
31+
public static void serialize(OutputStream stream, ClientReport scanReport) {
3032
try {
3133
ObjectMapper mapper = new ObjectMapper();
3234
for (Module modules : ClientReport.getSerializerModules()) {
@@ -35,9 +37,18 @@ public static void serialize(File outputFile, ClientReport scanReport) {
3537
mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
3638
mapper.configOverride(BigDecimal.class)
3739
.setFormat(JsonFormat.Value.forShape(JsonFormat.Shape.STRING));
38-
mapper.writeValue(outputFile, scanReport);
40+
mapper.writeValue(stream, scanReport);
3941
} catch (IOException ex) {
4042
LOGGER.error(ex);
4143
}
4244
}
45+
46+
public static void serialize(File outputFile, ClientReport scanReport) {
47+
try {
48+
serialize(new FileOutputStream(outputFile), scanReport);
49+
} catch (IOException ex) {
50+
throw new RuntimeException(
51+
"Could not serialize report to file: " + outputFile.getAbsolutePath(), ex);
52+
}
53+
}
4354
}

TLS-Scanner-Core/src/test/java/de/rub/nds/tlsscanner/core/TlsCoreTestReport.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,9 @@
99
package de.rub.nds.tlsscanner.core;
1010

1111
import de.rub.nds.tlsscanner.core.report.TlsScanReport;
12+
import java.io.OutputStream;
1213

13-
public class TlsCoreTestReport extends TlsScanReport {}
14+
public class TlsCoreTestReport extends TlsScanReport {
15+
@Override
16+
public void serializeToJson(OutputStream stream) {}
17+
}

TLS-Server-Scanner/src/main/java/de/rub/nds/tlsscanner/serverscanner/Main.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@
1818
import de.rub.nds.tlsscanner.serverscanner.execution.TlsServerScanner;
1919
import de.rub.nds.tlsscanner.serverscanner.report.ServerReport;
2020
import de.rub.nds.tlsscanner.serverscanner.report.ServerReportPrinter;
21-
import de.rub.nds.tlsscanner.serverscanner.report.ServerReportSerializer;
22-
import java.io.File;
2321
import java.io.IOException;
2422
import org.apache.logging.log4j.LogManager;
2523
import org.apache.logging.log4j.Logger;
@@ -53,10 +51,6 @@ public static void main(String[] args) throws IOException {
5351
DefaultPrintingScheme.getDefaultPrintingScheme(),
5452
!config.getExecutorConfig().isNoColor())
5553
.getFullReport());
56-
if (config.getExecutorConfig().isWriteReportToFile()) {
57-
File outputFile = new File(config.getExecutorConfig().getOutputFile());
58-
ServerReportSerializer.serialize(outputFile, report);
59-
}
6054
} catch (ConfigurationException e) {
6155
LOGGER.error("Encountered a ConfigurationException aborting.", e);
6256
}

TLS-Server-Scanner/src/main/java/de/rub/nds/tlsscanner/serverscanner/probe/DtlsFragmentationProbe.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,8 @@ private TestResult supportsFragmentationAfterCookieExchange(
100100
SendDynamicClientKeyExchangeAction action = new SendDynamicClientKeyExchangeAction();
101101
action.setConfiguredFragmentList(
102102
List.of(
103-
new DtlsHandshakeMessageFragment(config, 20),
104-
new DtlsHandshakeMessageFragment(config, 20)));
103+
new DtlsHandshakeMessageFragment(20),
104+
new DtlsHandshakeMessageFragment(20)));
105105
trace.addTlsAction(action);
106106
trace.addTlsAction(new SendAction(new ChangeCipherSpecMessage(), new FinishedMessage()));
107107
trace.addTlsAction(new ReceiveAction(new ChangeCipherSpecMessage(), new FinishedMessage()));
@@ -131,8 +131,8 @@ private TestResult supportsFragmentationWithExtension(boolean individualTranspor
131131
SendDynamicClientKeyExchangeAction action = new SendDynamicClientKeyExchangeAction();
132132
action.setConfiguredFragmentList(
133133
List.of(
134-
new DtlsHandshakeMessageFragment(config, 20),
135-
new DtlsHandshakeMessageFragment(config, 20)));
134+
new DtlsHandshakeMessageFragment(20),
135+
new DtlsHandshakeMessageFragment(20)));
136136
trace.addTlsAction(action);
137137
trace.addTlsAction(new SendAction(new ChangeCipherSpecMessage(), new FinishedMessage()));
138138
trace.addTlsAction(new ReceiveAction(new ChangeCipherSpecMessage(), new FinishedMessage()));

TLS-Server-Scanner/src/main/java/de/rub/nds/tlsscanner/serverscanner/report/ServerReport.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
import de.rub.nds.tlsscanner.serverscanner.probe.namedgroup.NamedGroupWitness;
4343
import de.rub.nds.tlsscanner.serverscanner.probe.result.hpkp.HpkpPin;
4444
import de.rub.nds.tlsscanner.serverscanner.probe.result.raccoonattack.RaccoonAttackProbabilities;
45+
import java.io.OutputStream;
4546
import java.util.List;
4647
import java.util.Map;
4748
import java.util.Set;
@@ -91,6 +92,11 @@ public ServerReport(String sniHostname, String host, Integer port) {
9192
this.port = port;
9293
}
9394

95+
@Override
96+
public void serializeToJson(OutputStream outputStream) {
97+
ServerReportSerializer.serialize(outputStream, this);
98+
}
99+
94100
@Override
95101
public String getRemoteName() {
96102
if (sniHostname != null) {

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>de.rub.nds</groupId>
66
<artifactId>protocol-toolkit-bom</artifactId>
7-
<version>4.2.7</version>
7+
<version>4.4.0</version>
88
</parent>
99

1010
<groupId>de.rub.nds.tls.scanner</groupId>

0 commit comments

Comments
 (0)