Skip to content

Commit 711a3ec

Browse files
authored
Merge branch 'master' into ocsp-last3.3.1
2 parents 038a647 + 2c3fee2 commit 711a3ec

File tree

169 files changed

+1460
-367
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

169 files changed

+1460
-367
lines changed

Attacks/src/main/java/de/rub/nds/tlsattacker/attacks/impl/BleichenbacherAttacker.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ public State executeTlsFlow(BleichenbacherWorkflowType type, byte[] encryptedPMS
109109
@Override
110110
public Boolean isVulnerable() {
111111
errorType = getEqualityError();
112-
if (errorType != EqualityError.NONE) {
112+
if (errorType != null && errorType != EqualityError.NONE) {
113113
vulnerableType = config.getWorkflowType();
114114
return true;
115115
}

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

Lines changed: 66 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,7 @@
7272
import java.math.BigInteger;
7373
import java.nio.charset.Charset;
7474
import java.security.PrivateKey;
75-
import java.util.ArrayList;
76-
import java.util.Arrays;
77-
import java.util.LinkedList;
78-
import java.util.List;
75+
import java.util.*;
7976
import javax.xml.bind.annotation.XmlAccessType;
8077
import javax.xml.bind.annotation.XmlAccessorType;
8178
import javax.xml.bind.annotation.XmlRootElement;
@@ -517,6 +514,11 @@ public static Config createEmptyConfig() {
517514
*/
518515
private Boolean addSessionTicketTLSExtension = false;
519516

517+
/***
518+
* If we generate ClientHello with extended Random Extension
519+
*/
520+
private Boolean addExtendedRandomExtension = false;
521+
520522
/**
521523
* If we generate ClientHello with SignedCertificateTimestamp extension
522524
*/
@@ -883,6 +885,14 @@ public static Config createEmptyConfig() {
883885
@XmlJavaTypeAdapter(UnformattedByteArrayAdapter.class)
884886
private byte[] defaultPreMasterSecret = new byte[0];
885887

888+
@XmlJavaTypeAdapter(UnformattedByteArrayAdapter.class)
889+
private byte[] defaultClientExtendedRandom = ArrayConverter
890+
.hexStringToByteArray("AABBCCDDEEFFAABBCCDDEEFFAABBCCDDEEFFAABBCCDDEEFFAABBCCDDEEFFAABB");
891+
892+
@XmlJavaTypeAdapter(UnformattedByteArrayAdapter.class)
893+
private byte[] defaultServerExtendedRandom = ArrayConverter
894+
.hexStringToByteArray("AABBCCDDEEFFAABBCCDDEEFFAABBCCDDEEFFAABBCCDDEEFFAABBCCDDEEFFAABB");
895+
886896
@XmlJavaTypeAdapter(UnformattedByteArrayAdapter.class)
887897
private byte[] defaultClientRandom = ArrayConverter
888898
.hexStringToByteArray("00112233445566778899AABBCCDDEEFFFFEEDDCCBBAA99887766554433221100");
@@ -891,6 +901,10 @@ public static Config createEmptyConfig() {
891901
private byte[] defaultServerRandom = ArrayConverter
892902
.hexStringToByteArray("00112233445566778899AABBCCDDEEFFFFEEDDCCBBAA99887766554433221100");
893903

904+
// Parse Extensions of Type 40 as key share extension instead of
905+
// Extended Random like in TLS13-Drafts 14 - 22.
906+
private Boolean parseKeyShareOld = true;
907+
894908
@XmlJavaTypeAdapter(UnformattedByteArrayAdapter.class)
895909
private byte[] defaultClientSessionId = new byte[0];
896910

@@ -1126,6 +1140,13 @@ public static Config createEmptyConfig() {
11261140

11271141
private ECPointFormat defaultSelectedPointFormat = ECPointFormat.UNCOMPRESSED;
11281142

1143+
/**
1144+
* Private Key of the Client for the EncryptedServerNameIndication
1145+
* extension.
1146+
*/
1147+
private BigInteger defaultEsniClientPrivateKey = new BigInteger(
1148+
"191991257030464195512760799659436374116556484140110877679395918219072292938297573720808302564562486757422301181089761");
1149+
11291150
/**
11301151
* Supported Ciphersuites for EncryptedServerNameIndication extension.
11311152
*/
@@ -1408,6 +1429,14 @@ public void setUseFreshRandom(Boolean useFreshRandom) {
14081429
this.useFreshRandom = useFreshRandom;
14091430
}
14101431

1432+
public Boolean isParseKeyShareOld() {
1433+
return parseKeyShareOld;
1434+
}
1435+
1436+
public void setParseKeyShareOld(boolean parseKeyShareOld) {
1437+
this.parseKeyShareOld = parseKeyShareOld;
1438+
}
1439+
14111440
public Boolean isUseAllProvidedRecords() {
14121441
return useAllProvidedRecords;
14131442
}
@@ -1853,6 +1882,30 @@ public void setDefaultSelectedCompressionMethod(CompressionMethod defaultSelecte
18531882
this.defaultSelectedCompressionMethod = defaultSelectedCompressionMethod;
18541883
}
18551884

1885+
public boolean isAddExtendedRandomExtension() {
1886+
return this.addExtendedRandomExtension;
1887+
}
1888+
1889+
public void setAddExtendedRandomExtension(boolean addExtendedRandomExtension) {
1890+
this.addExtendedRandomExtension = addExtendedRandomExtension;
1891+
}
1892+
1893+
public byte[] getDefaultClientExtendedRandom() {
1894+
return Arrays.copyOf(defaultClientExtendedRandom, defaultClientExtendedRandom.length);
1895+
}
1896+
1897+
public byte[] getDefaultServerExtendedRandom() {
1898+
return Arrays.copyOf(defaultServerExtendedRandom, defaultServerExtendedRandom.length);
1899+
}
1900+
1901+
public void setDefaultClientExtendedRandom(byte[] defaultClientExtendedRandom) {
1902+
this.defaultClientExtendedRandom = defaultClientExtendedRandom;
1903+
}
1904+
1905+
public void setDefaultServerExtendedRandom(byte[] defaultServerExtendedRandom) {
1906+
this.defaultServerExtendedRandom = defaultServerExtendedRandom;
1907+
}
1908+
18561909
public byte[] getDefaultServerRandom() {
18571910
return Arrays.copyOf(defaultServerRandom, defaultServerRandom.length);
18581911
}
@@ -3599,4 +3652,13 @@ public String getKeylogFilePath() {
35993652
public void setKeylogFilePath(String keylogFilePath) {
36003653
this.keylogFilePath = keylogFilePath;
36013654
}
3655+
3656+
public BigInteger getDefaultEsniClientPrivateKey() {
3657+
return defaultEsniClientPrivateKey;
3658+
}
3659+
3660+
public void setDefaultEsniClientPrivateKey(BigInteger defaultEsniClientPrivateKey) {
3661+
this.defaultEsniClientPrivateKey = defaultEsniClientPrivateKey;
3662+
}
3663+
36023664
}

TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/constants/ExtensionByteLength.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@ public class ExtensionByteLength {
5151
* ServerNameListLength in the ServerNameIndicationExtension
5252
*/
5353
public static final int SERVER_NAME_LIST = 2;
54+
/**
55+
* ExtendedRandomLength in the ExtendedRandomExtension
56+
*/
57+
public static final int EXTENDED_RANDOM_LENGTH = 2;
5458
/**
5559
* KeyShareGroup length in the KeySahreExtension
5660
*/

TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/constants/ExtensionType.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ public enum ExtensionType {
4646
PWD_CLEAR(new byte[] { (byte) 0, (byte) 30 }),
4747
PASSWORD_SALT(new byte[] { (byte) 0, (byte) 31 }),
4848
SESSION_TICKET(new byte[] { (byte) 0, (byte) 35 }),
49+
EXTENDED_RANDOM(new byte[] { (byte) 0, (byte) 40 }), // Shares same IANA ID
50+
// as old keyshare
51+
// extension.
4952
KEY_SHARE_OLD(new byte[] { (byte) 0, (byte) 40 }), // This is the keyshare
5053
// extension before TLS
5154
// 1.3 Draft 23
@@ -139,6 +142,7 @@ public static List<ExtensionType> getSendable() {
139142
list.add(EXTENDED_MASTER_SECRET);
140143
list.add(HEARTBEAT);
141144
list.add(KEY_SHARE);
145+
list.add(EXTENDED_RANDOM);
142146
list.add(MAX_FRAGMENT_LENGTH);
143147
list.add(PADDING);
144148
list.add(PRE_SHARED_KEY);
@@ -177,6 +181,7 @@ public static List<ExtensionType> getReceivable() {
177181
list.add(EXTENDED_MASTER_SECRET);
178182
list.add(HEARTBEAT);
179183
list.add(KEY_SHARE);
184+
list.add(EXTENDED_RANDOM);
180185
list.add(MAX_FRAGMENT_LENGTH);
181186
list.add(PADDING);
182187
list.add(PRE_SHARED_KEY);
@@ -217,6 +222,7 @@ public static List<ExtensionType> getImplemented() {
217222
list.add(TOKEN_BINDING);
218223
list.add(RENEGOTIATION_INFO);
219224
list.add(HEARTBEAT);
225+
list.add(EXTENDED_RANDOM);
220226
return list;
221227
}
222228
}

TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/constants/ProtocolVersion.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,8 @@
1111

1212
import de.rub.nds.modifiablevariable.util.ArrayConverter;
1313
import de.rub.nds.tlsattacker.core.exceptions.UnknownProtocolVersionException;
14-
import java.util.Arrays;
15-
import java.util.HashMap;
16-
import java.util.LinkedList;
17-
import java.util.List;
18-
import java.util.Map;
19-
import java.util.Random;
14+
15+
import java.util.*;
2016

2117
public enum ProtocolVersion {
2218

@@ -181,4 +177,5 @@ public boolean usesExplicitIv() {
181177
return this == ProtocolVersion.TLS11 || this == ProtocolVersion.TLS12 || this == ProtocolVersion.DTLS10
182178
|| this == ProtocolVersion.DTLS12;
183179
}
180+
184181
}

TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/https/HttpsRequestHandler.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ public HttpsRequestHandler(TlsContext tlsContext) {
2020

2121
@Override
2222
public HttpsRequestParser getParser(byte[] message, int pointer) {
23-
return new HttpsRequestParser(pointer, message, tlsContext.getChooser().getSelectedProtocolVersion());
23+
return new HttpsRequestParser(pointer, message, tlsContext.getChooser().getSelectedProtocolVersion(),
24+
tlsContext.getConfig());
2425
}
2526

2627
@Override

TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/https/HttpsRequestParser.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
*/
1010
package de.rub.nds.tlsattacker.core.https;
1111

12+
import de.rub.nds.tlsattacker.core.config.Config;
1213
import de.rub.nds.tlsattacker.core.constants.ProtocolVersion;
1314
import de.rub.nds.tlsattacker.core.exceptions.ParserException;
1415
import de.rub.nds.tlsattacker.core.https.header.HttpsHeader;
@@ -22,8 +23,8 @@ public class HttpsRequestParser extends ProtocolMessageParser<HttpsRequestMessag
2223

2324
private static final Logger LOGGER = LogManager.getLogger();
2425

25-
public HttpsRequestParser(int pointer, byte[] array, ProtocolVersion version) {
26-
super(pointer, array, version);
26+
public HttpsRequestParser(int pointer, byte[] array, ProtocolVersion version, Config config) {
27+
super(pointer, array, version, config);
2728
}
2829

2930
@Override

TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/https/HttpsResponseHandler.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ public HttpsResponseHandler(TlsContext tlsContext) {
2020

2121
@Override
2222
public HttpsResponseParser getParser(byte[] message, int pointer) {
23-
return new HttpsResponseParser(pointer, message, tlsContext.getChooser().getSelectedProtocolVersion());
23+
return new HttpsResponseParser(pointer, message, tlsContext.getChooser().getSelectedProtocolVersion(),
24+
tlsContext.getConfig());
2425
}
2526

2627
@Override

TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/https/HttpsResponseParser.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
*/
1010
package de.rub.nds.tlsattacker.core.https;
1111

12+
import de.rub.nds.tlsattacker.core.config.Config;
1213
import de.rub.nds.tlsattacker.core.constants.ProtocolVersion;
1314
import de.rub.nds.tlsattacker.core.exceptions.ParserException;
1415
import de.rub.nds.tlsattacker.core.https.header.HttpsHeader;
@@ -22,8 +23,8 @@ public class HttpsResponseParser extends ProtocolMessageParser<HttpsResponseMess
2223

2324
private static final Logger LOGGER = LogManager.getLogger();
2425

25-
public HttpsResponseParser(int pointer, byte[] array, ProtocolVersion version) {
26-
super(pointer, array, version);
26+
public HttpsResponseParser(int pointer, byte[] array, ProtocolVersion version, Config config) {
27+
super(pointer, array, version, config);
2728
}
2829

2930
@Override

TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/protocol/handler/AlertHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public AlertHandler(TlsContext tlsContext) {
2828

2929
@Override
3030
public AlertParser getParser(byte[] message, int pointer) {
31-
return new AlertParser(pointer, message, tlsContext.getChooser().getLastRecordVersion());
31+
return new AlertParser(pointer, message, tlsContext.getChooser().getLastRecordVersion(), tlsContext.getConfig());
3232
}
3333

3434
@Override

0 commit comments

Comments
 (0)