Skip to content

Commit 93a19a8

Browse files
committed
default Config is now cached to prevent constant deserialisation
1 parent 84ab045 commit 93a19a8

File tree

5 files changed

+43
-4
lines changed

5 files changed

+43
-4
lines changed

TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/config/Config.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,16 @@ public class Config implements Serializable {
8686
*/
8787
private static final String DEFAULT_CONFIG_FILE = "/default_config.xml";
8888

89+
private static final ConfigCache DEFAULT_CONFIG_CACHE;
90+
91+
static {
92+
DEFAULT_CONFIG_CACHE = new ConfigCache(createConfig());
93+
}
94+
8995
public static Config createConfig() {
96+
if (DEFAULT_CONFIG_CACHE != null) {
97+
return DEFAULT_CONFIG_CACHE.getCachedCopy();
98+
}
9099
InputStream stream = Config.class.getResourceAsStream(DEFAULT_CONFIG_FILE);
91100
return ConfigIO.read(stream);
92101

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/**
2+
* TLS-Attacker - A Modular Penetration Testing Framework for TLS
3+
*
4+
* Copyright 2014-2017 Ruhr University Bochum / Hackmanit GmbH
5+
*
6+
* Licensed under Apache License 2.0
7+
* http://www.apache.org/licenses/LICENSE-2.0
8+
*/
9+
package de.rub.nds.tlsattacker.core.config;
10+
11+
import org.apache.commons.lang3.SerializationUtils;
12+
13+
/**
14+
*
15+
* @author robert
16+
*/
17+
public class ConfigCache {
18+
19+
private final Config cachedConfig;
20+
21+
public ConfigCache(Config cachedConfig) {
22+
this.cachedConfig = cachedConfig;
23+
}
24+
25+
public Config getCachedCopy() {
26+
return SerializationUtils.clone(cachedConfig);
27+
}
28+
29+
}

TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/connection/AliasedConnection.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,14 @@
1212
import de.rub.nds.tlsattacker.transport.Connection;
1313
import de.rub.nds.tlsattacker.transport.ConnectionEndType;
1414
import de.rub.nds.tlsattacker.transport.TransportHandlerType;
15-
import java.io.Serializable;
1615
import java.util.Collection;
1716
import java.util.HashSet;
1817
import java.util.Objects;
1918
import java.util.Set;
2019
import javax.xml.bind.annotation.XmlType;
2120

2221
@XmlType(propOrder = { "alias", "port", "hostname", "timeout", "transportHandlerType" })
23-
public abstract class AliasedConnection extends Connection implements Aliasable, Serializable {
22+
public abstract class AliasedConnection extends Connection implements Aliasable {
2423

2524
public static final String DEFAULT_CONNECTION_ALIAS = "defaultConnection";
2625
public static final TransportHandlerType DEFAULT_TRANSPORT_HANDLER_TYPE = TransportHandlerType.TCP;

TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/protocol/message/extension/KS/KeyShareStoreEntry.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import de.rub.nds.modifiablevariable.util.ByteArrayAdapter;
1212
import de.rub.nds.tlsattacker.core.constants.NamedGroup;
13+
import java.io.Serializable;
1314
import java.util.Arrays;
1415
import javax.xml.bind.annotation.XmlAccessType;
1516
import javax.xml.bind.annotation.XmlAccessorType;
@@ -18,7 +19,7 @@
1819

1920
@XmlRootElement
2021
@XmlAccessorType(XmlAccessType.FIELD)
21-
public class KeyShareStoreEntry {
22+
public class KeyShareStoreEntry implements Serializable {
2223

2324
private NamedGroup group;
2425

Transport/src/main/java/de/rub/nds/tlsattacker/transport/Connection.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,15 @@
88
*/
99
package de.rub.nds.tlsattacker.transport;
1010

11+
import java.io.Serializable;
1112
import java.util.Objects;
1213
import javax.xml.bind.annotation.XmlAccessType;
1314
import javax.xml.bind.annotation.XmlAccessorType;
1415
import javax.xml.bind.annotation.XmlTransient;
1516

1617
@XmlTransient
1718
@XmlAccessorType(XmlAccessType.FIELD)
18-
public abstract class Connection {
19+
public abstract class Connection implements Serializable {
1920

2021
protected Integer port = null;
2122
protected String hostname = null;

0 commit comments

Comments
 (0)