Skip to content

Commit 7dad567

Browse files
committed
Add TlsOutputBuilder, use it where needed and fill in method stubs in TlsSul
1 parent 2e19694 commit 7dad567

File tree

5 files changed

+88
-75
lines changed

5 files changed

+88
-75
lines changed

src/main/java/se/uu/it/dtlsfuzzer/MultiBuilder.java

Lines changed: 38 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -38,48 +38,51 @@
3838
import se.uu.it.dtlsfuzzer.components.sul.mapper.symbols.outputs.TlsOutput;
3939

4040
public class MultiBuilder implements StateFuzzerConfigBuilder,
41-
StateFuzzerBuilder<MealyMachineWrapper<TlsInput, TlsOutput>>, TestRunnerBuilder, TimingProbeBuilder {
41+
StateFuzzerBuilder<MealyMachineWrapper<TlsInput, TlsOutput>>, TestRunnerBuilder, TimingProbeBuilder {
4242

43-
private AlphabetBuilder<TlsInput> alphabetBuilder = new AlphabetBuilderStandard<TlsInput>(
44-
new AlphabetSerializerXml<Tlsinput, TlsAlphabetPojoXml>(TlsInput.class, TlsAlphabetPojoXml.class));
43+
private AlphabetBuilder<TlsInput> alphabetBuilder = new AlphabetBuilderStandard<TlsInput>(
44+
new AlphabetSerializerXml<TlsInput, TlsAlphabetPojoXml>(TlsInput.class,
45+
TlsAlphabetPojoXml.class));
4546

46-
// SulBuilderImpl needs to be implemented
47-
private SulBuilder<TlsInput, TlsOutput, TlsExecutionContext> sulBuilder = new TlsSulBuilder();
48-
private SulWrapper<TlsInput, TlsOutput, TlsExecutionContext> sulWrapper = new SulWrapperStandard<TlsInput, TlsOutput, TlsExecutionContext>();
47+
// SulBuilderImpl needs to be implemented
48+
private SulBuilder<TlsInput, TlsOutput, TlsExecutionContext> sulBuilder = new TlsSulBuilder();
49+
private SulWrapper<TlsInput, TlsOutput, TlsExecutionContext> sulWrapper = new SulWrapperStandard<TlsInput, TlsOutput, TlsExecutionContext>();
4950

50-
MultiBuilder() {
51-
}
51+
MultiBuilder() {
52+
}
5253

53-
@Override
54-
public TimingProbe build(TimingProbeEnabler timingProbeEnabler) {
55-
return new TimingProbeStandard<TlsInput, TlsOutput, TlsProtocolMessage, TlsExecutionContext>(timingProbeEnabler,
56-
alphabetBuilder, sulBuilder, sulWrapper);
57-
}
54+
@Override
55+
public TimingProbe build(TimingProbeEnabler timingProbeEnabler) {
56+
return new TimingProbeStandard<TlsInput, TlsOutput, TlsProtocolMessage, TlsExecutionContext>(
57+
timingProbeEnabler,
58+
alphabetBuilder, sulBuilder, sulWrapper);
59+
}
5860

59-
@Override
60-
public TestRunner build(TestRunnerEnabler testRunnerEnabler) {
61-
return new TestRunnerStandard<TlsInput, TlsOutput, TlsProtocolMessage, TlsExecutionContext>(testRunnerEnabler,
62-
alphabetBuilder, sulBuilder, sulWrapper);
63-
}
61+
@Override
62+
public TestRunner build(TestRunnerEnabler testRunnerEnabler) {
63+
return new TestRunnerStandard<TlsInput, TlsOutput, TlsProtocolMessage, TlsExecutionContext>(
64+
testRunnerEnabler,
65+
alphabetBuilder, sulBuilder, sulWrapper);
66+
}
6467

65-
@Override
66-
public StateFuzzer<MealyMachineWrapper<TlsInput, TlsOutput>> build(StateFuzzerEnabler stateFuzzerEnabler) {
67-
StateFuzzerComposerStandard<TlsInput, TlsOutput, TlsExecutionContext> composer = new StateFuzzerComposerStandard<TlsInput, TlsOutput, TlsExecutionContext>(
68-
stateFuzzerEnabler, alphabetBuilder, sulBuilder, sulWrapper);
69-
composer.initialize();
70-
return new StateFuzzerStandard<>(composer);
71-
}
68+
@Override
69+
public StateFuzzer<MealyMachineWrapper<TlsInput, TlsOutput>> build(StateFuzzerEnabler stateFuzzerEnabler) {
70+
StateFuzzerComposerStandard<TlsInput, TlsOutput, TlsExecutionContext> composer = new StateFuzzerComposerStandard<TlsInput, TlsOutput, TlsExecutionContext>(
71+
stateFuzzerEnabler, alphabetBuilder, sulBuilder, sulWrapper);
72+
composer.initialize();
73+
return new StateFuzzerStandard<>(composer);
74+
}
7275

73-
@Override
74-
public StateFuzzerClientConfig buildClientConfig() {
75-
return new StateFuzzerClientConfigStandard(new LearnerConfigStandard(), new TlsSulClientConfig(),
76-
new TestRunnerConfigStandard(), new TimingProbeConfigStandard());
77-
}
76+
@Override
77+
public StateFuzzerClientConfig buildClientConfig() {
78+
return new StateFuzzerClientConfigStandard(new LearnerConfigStandard(), new TlsSulClientConfig(),
79+
new TestRunnerConfigStandard(), new TimingProbeConfigStandard());
80+
}
7881

79-
@Override
80-
public StateFuzzerServerConfig buildServerConfig() {
81-
return new StateFuzzerServerConfigStandard(new LearnerConfigStandard(), new TlsSulServerConfig(),
82-
new TestRunnerConfigStandard(), new TimingProbeConfigStandard());
83-
}
82+
@Override
83+
public StateFuzzerServerConfig buildServerConfig() {
84+
return new StateFuzzerServerConfigStandard(new LearnerConfigStandard(), new TlsSulServerConfig(),
85+
new TestRunnerConfigStandard(), new TimingProbeConfigStandard());
86+
}
8487

8588
}

src/main/java/se/uu/it/dtlsfuzzer/components/sul/core/TlsSul.java

Lines changed: 21 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,7 @@
1010
import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.core.config.SulConfig;
1111
import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.core.sulwrappers.DynamicPortProvider;
1212
import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.mapper.Mapper;
13-
import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.mapper.abstractsymbols.AbstractOutput;
14-
import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.mapper.abstractsymbols.OutputBuilder;
15-
import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.mapper.abstractsymbols.OutputChecker;
1613
import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.mapper.config.MapperConfig;
17-
import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.mapper.mappers.OutputMapper;
1814
import com.github.protocolfuzzing.protocolstatefuzzer.utils.CleanupTasks;
1915
import de.rub.nds.tlsattacker.core.config.Config;
2016
import de.rub.nds.tlsattacker.core.connection.InboundConnection;
@@ -37,7 +33,6 @@
3733
import se.uu.it.dtlsfuzzer.components.sul.mapper.DtlsMapperComposer;
3834
import se.uu.it.dtlsfuzzer.components.sul.mapper.DtlsOutputMapper;
3935
import se.uu.it.dtlsfuzzer.components.sul.mapper.TlsExecutionContext;
40-
import se.uu.it.dtlsfuzzer.components.sul.mapper.TlsProtocolMessage;
4136
import se.uu.it.dtlsfuzzer.components.sul.mapper.TlsState;
4237
import se.uu.it.dtlsfuzzer.components.sul.mapper.symbols.inputs.TlsInput;
4338
import se.uu.it.dtlsfuzzer.components.sul.mapper.symbols.outputs.TlsOutput;
@@ -100,6 +95,10 @@ public class TlsSul implements AbstractSul<TlsInput, TlsOutput, TlsExecutionCont
10095

10196
private CleanupTasks cleanupTasks;
10297

98+
private SulAdapter sulAdapter;
99+
100+
private DynamicPortProvider dynamicPortProvider;
101+
103102
public TlsSul(TlsSulConfig sulConfig, MapperConfig mapperConfig,
104103
DtlsMapperComposer mapperComposer,
105104
CleanupTasks cleanupTasks) {
@@ -129,10 +128,6 @@ public void run() {
129128
}
130129
}
131130

132-
void setSulAdapter(SulAdapter sulAdapter) {
133-
this.sulAdapter = sulAdapter;
134-
}
135-
136131
@Override
137132
public void pre() {
138133
Config config = getNewSulConfig(configDelegate);
@@ -240,10 +235,11 @@ public TlsOutput step(TlsInput in) {
240235

241236
private TlsOutput doStep(TlsInput in) {
242237
context.addStepContext();
243-
Mapper mapper = in.getPreferredMapper(sulConfig);
244-
if (mapper == null) {
245-
mapper = this.mapper;
246-
}
238+
// Mapper<TlsInput, TlsOutput, TlsExecutionContext> mapper = this.getMapper();
239+
// if (mapper == null) { todo: dead store according to spotbugs, see if this is
240+
// needed.
241+
// mapper = this.mapper;
242+
// }
247243

248244
if (sulConfig.isFuzzingClient() && !receivedClientHello) {
249245
receiveClientHello();
@@ -335,37 +331,35 @@ private void exportEffectiveSulConfig(Config config, String path) {
335331

336332
@Override
337333
public SulConfig getSulConfig() {
338-
// TODO Auto-generated method stub
339-
throw new UnsupportedOperationException("Unimplemented method 'getSulConfig'");
334+
return this.sulConfig;
340335
}
341336

342337
@Override
343338
public CleanupTasks getCleanupTasks() {
344-
// TODO Auto-generated method stub
345-
throw new UnsupportedOperationException("Unimplemented method 'getCleanupTasks'");
339+
return cleanupTasks;
346340
}
347341

348342
@Override
349-
public void setDynamicPortProvider(DynamicPortProvider dynamicPortProvider) {
350-
// TODO Auto-generated method stub
351-
throw new UnsupportedOperationException("Unimplemented method 'setDynamicPortProvider'");
343+
public DynamicPortProvider getDynamicPortProvider() {
344+
return dynamicPortProvider;
352345
}
353346

354347
@Override
355-
public DynamicPortProvider getDynamicPortProvider() {
356-
// TODO Auto-generated method stub
357-
throw new UnsupportedOperationException("Unimplemented method 'getDynamicPortProvider'");
348+
public void setDynamicPortProvider(DynamicPortProvider dynamicPortProvider) {
349+
this.dynamicPortProvider = dynamicPortProvider;
358350
}
359351

360352
@Override
361353
public Mapper<TlsInput, TlsOutput, TlsExecutionContext> getMapper() {
362-
// TODO Auto-generated method stub
363-
throw new UnsupportedOperationException("Unimplemented method 'getMapper'");
354+
return this.mapperComposer;
364355
}
365356

366357
@Override
367358
public SulAdapter getSulAdapter() {
368-
// TODO Auto-generated method stub
369-
throw new UnsupportedOperationException("Unimplemented method 'getSulAdapter'");
359+
return this.sulAdapter;
360+
}
361+
362+
void setSulAdapter(SulAdapter sulAdapter) {
363+
this.sulAdapter = sulAdapter;
370364
}
371365
}

src/main/java/se/uu/it/dtlsfuzzer/components/sul/core/TlsSulBuilder.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,14 @@
22

33
import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.core.SulBuilder;
44
import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.core.config.SulConfig;
5-
import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.mapper.mappers.MapperComposer;
65
import se.uu.it.dtlsfuzzer.components.sul.core.config.TlsSulConfig;
76
import se.uu.it.dtlsfuzzer.components.sul.mapper.DtlsInputMapper;
7+
import se.uu.it.dtlsfuzzer.components.sul.mapper.DtlsMapperComposer;
88
import se.uu.it.dtlsfuzzer.components.sul.mapper.DtlsOutputMapper;
99
import se.uu.it.dtlsfuzzer.components.sul.mapper.TlsExecutionContext;
10-
import se.uu.it.dtlsfuzzer.components.sul.mapper.TlsProtocolMessage;
11-
import se.uu.it.dtlsfuzzer.components.sul.mapper.TlsState;
1210
import se.uu.it.dtlsfuzzer.components.sul.mapper.symbols.inputs.TlsInput;
1311
import se.uu.it.dtlsfuzzer.components.sul.mapper.symbols.outputs.TlsOutput;
12+
import se.uu.it.dtlsfuzzer.components.sul.mapper.symbols.outputs.TlsOutputBuilder;
1413
import se.uu.it.dtlsfuzzer.components.sul.mapper.symbols.outputs.TlsOutputChecker;
1514

1615
public class TlsSulBuilder implements SulBuilder<TlsInput, TlsOutput, TlsExecutionContext> {
@@ -23,11 +22,17 @@ public TlsSulBuilder() {
2322
@Override
2423
public TlsSul build(SulConfig sulConfig,
2524
com.github.protocolfuzzing.protocolstatefuzzer.utils.CleanupTasks cleanupTasks) {
26-
DtlsOutputMapper outputMapper = new DtlsOutputMapper(sulConfig.getMapperConfig(), new TlsOutputBuilder());
27-
TlsSul tlsSul = new TlsSul((TlsSulConfig) sulConfig, sulConfig.getMapperConfig(),
28-
new MapperComposer<TlsInput, TlsOutput, TlsProtocolMessage, TlsExecutionContext, TlsState>(
29-
new DtlsInputMapper(sulConfig.getMapperConfig(), new TlsOutputChecker()), outputMapper),
30-
cleanupTasks);
25+
26+
TlsOutputBuilder outputBuilder = new TlsOutputBuilder();
27+
TlsOutputChecker outputChecker = new TlsOutputChecker();
28+
29+
DtlsOutputMapper outputMapper = new DtlsOutputMapper(sulConfig.getMapperConfig(), outputBuilder, outputChecker);
30+
DtlsInputMapper inputMapper = new DtlsInputMapper(sulConfig.getMapperConfig(), outputChecker);
31+
32+
DtlsMapperComposer mapperComposer = new DtlsMapperComposer(inputMapper, outputMapper);
33+
34+
TlsSul tlsSul = new TlsSul((TlsSulConfig) sulConfig, sulConfig.getMapperConfig(), mapperComposer, cleanupTasks);
35+
3136
if (sulConfig.getSulAdapterConfig().getAdapterPort() != null) {
3237
if (sulAdapter == null) {
3338
sulAdapter = new TlsSulAdapter(sulConfig.getSulAdapterConfig(), cleanupTasks,
Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package se.uu.it.dtlsfuzzer.components.sul.mapper;
22

33
import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.mapper.mappers.MapperComposer;
4-
54
import se.uu.it.dtlsfuzzer.components.sul.mapper.symbols.inputs.TlsInput;
65
import se.uu.it.dtlsfuzzer.components.sul.mapper.symbols.outputs.TlsOutput;
6+
import se.uu.it.dtlsfuzzer.components.sul.mapper.symbols.outputs.TlsOutputBuilder;
7+
import se.uu.it.dtlsfuzzer.components.sul.mapper.symbols.outputs.TlsOutputChecker;
78

89
public class DtlsMapperComposer
910
extends MapperComposer<TlsInput, TlsOutput, TlsProtocolMessage, TlsExecutionContext, TlsState> {
@@ -12,12 +13,12 @@ public DtlsMapperComposer(DtlsInputMapper inputMapper, DtlsOutputMapper outputMa
1213
}
1314

1415
@Override
15-
public DtlsOutputChecker getOutputChecker() {
16-
return (DtlsOutputChecker) super.getOutputChecker();
16+
public TlsOutputChecker getOutputChecker() {
17+
return (TlsOutputChecker) super.getOutputChecker();
1718
}
1819

1920
@Override
20-
public DtlsOutputBuilder getOutputBuilder() {
21-
return (DtlsOutputBuilder) super.getOutputBuilder();
21+
public TlsOutputBuilder getOutputBuilder() {
22+
return (TlsOutputBuilder) super.getOutputBuilder();
2223
}
2324
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package se.uu.it.dtlsfuzzer.components.sul.mapper.symbols.outputs;
2+
3+
import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.mapper.abstractsymbols.OutputBuilder;
4+
5+
public class TlsOutputBuilder implements OutputBuilder<TlsOutput> {
6+
public TlsOutput buildOutput(String name) {
7+
return new TlsOutput(name);
8+
}
9+
10+
}

0 commit comments

Comments
 (0)