Skip to content

Commit 8a1006a

Browse files
c-southwestkostis
andauthored
Bump TLS-Attacker from 5.3.0 to v6.3.4 (#159)
* update dependency TLS-Attacker from 5.3.0 to 6.1.4 * WIP 5.3.0 to 6.1.4: fix generics errors (Reference TLS-Attacker Commit 49af57bb871219fa2427dc33621e4e2cae42d10c) * WIP 5.3.0 to 6.1.4: LayerStack receiveData parameter requires generics (Reference TLS-Attacker Commit 6b0c072fdeec33b41d44031c19b21e6f4dd1db61) * WIP 5.3.0 to 6.1.4: Connection removed firstTimeout (Reference TLS-Attacker Commit a4fab98ea9b5856d3fab218dc6d34bbc5cdb4560) * WIP 5.3.0 to 6.1.4: Rename LayerConfiguration to StackConfiguration (Reference TLS-Attacker Commit 30260caf1fa15ce2ed061191dc8c6c1a0e321dac) * WIP 5.3.0 to 6.1.4: Update modifiable-variable dependency (Reference TLS-Attacker Commit 2adb191ffb001abe609228c71f77af5da1d3da5a) * WIP 5.3.0 to 6.1.4: Use official CertificateDelegate type * WIP 5.3.0 to 6.1.4: replace CertificateKeyType with x509attacker (Reference TLS-Attacker Commit 8a75161ea63160b4a1dac620c9407715f80785ea) * WIP 5.3.0 to 6.1.4: replace setCertificateListConfig with setCertificateEntryList (Reference TLS-Attacker Commit 8cbdfa82067eae9c9159c13fc42b278fc93fe55c, 1e40faa3f2cd411a8e5fc33bf89930a8f8c09227) * WIP 5.3.0 to 6.1.4: fix getCertSignatureTypeString function (Reference TLS-Attacker Commit 1e40faa3f2cd411a8e5fc33bf89930a8f8c09227) * WIP 5.3.0 to 6.1.4: fix sul.config (Reference TLS-Attacker Commit 8f3bba03adb36dd04f4dae8ed6a3e4b1749de22c, 8cbdfa82067eae9c9159c13fc42b278fc93fe55c) * WIP 6.1.4 to 6.3.3: change version number fix maven dependency:analyze And can fix runtime error "Exception in thread "main" java.lang.NoClassDefFoundError: org/xbill/DNS/TextParseException" without adding extra dependency * WIP 6.1.4 to 6.3.3: stop unwanted logs and added a logger for easier debug * WIP 6.1.4 to 6.3.3: fix compile error * WIP 6.1.4 to 6.3.3: fix runtime null exception * WIP 6.1.4 to 6.3.3: add patch so RSA private and public keys can be correctly set. * WIP 6.1.4 to 6.3.3: fix initializeTransportHandler So when we test Client implementations, the socket client address and port will be set (Reference TLS-Attacker Commit 6f663747dc4ad109e229020e1489e2ff66393319, since they removed similar logic inside ServerUdpTransportHandler.java) * fix: add patch for TLS-Attacker so EMPTY_CERTIFICATE will be correctly generated. And also stop the warning logs from protocol.preparator.CertificateMessagePreparator. * fix: map SignatureAlgorithm items to CertificateKeyType After this fix, we can learn output RSA_CERTIFICATE instead of RSA_PKCS1_CERTIFICATE * fix: add disable reordering patch for TLS-Attacker just like TLS-Attacker-v5.3.0.patch * fix: update scandium.config so TLS-Attacker v6.3.3 can read without runtime error * fix: add enum mapping for ECDSA signature algorithm * add TLS-Attacker patch so ECDSA certificate configuration can be correctly set, and prevent unexpected X509Context reset. * fix tinydtls_client.config format, so no runtime error * fix client fuzzing: make udp layer behave as before, which will consume the first arrived ClientHello. * fix: RSAClientKeyExchangePreparator.java uses wrong RSA private key, therefore we will get wrong decrypted PreMaster Secret. * fix: PionDTLS-2-0-9_Client_psk regression test * upgrade TLS-Attacker dependency from 6.3.3 to 6.3.4 Removed patches for RSAClientKeyExchangePreparator.java, TlsContext.java and Context.java * Delete experiments/patches/TLS-Attacker-v6.3.3.patch * Remove redundant casts from TlsStepContext.java * Remove redundant casts from DtlsOutputMapper.java * update patch for CertificateMessagePreparator.java * remove redundant @SuppressWarnings("rawtypes") * Remove BouncyCastle * Remove org,bouncycastle:bcprov-jdk15on * Revert BouncyCastle removal [ci skip] * Revert BouncyCastle removal --------- Co-authored-by: Kostis Sagonas <kostis@it.uu.se>
1 parent 8893778 commit 8a1006a

24 files changed

+454
-272
lines changed

experiments/configs/scandium.config

Lines changed: 50 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -30,53 +30,54 @@
3030
<defaultPSKKey>1234</defaultPSKKey>
3131

3232
<!-- Note: this fixes any certificate input -->
33-
<autoSelectCertificate>false</autoSelectCertificate>
34-
<defaultExplicitCertificateKeyPair>
35-
<certPublicKeyType>ECDH</certPublicKeyType>
36-
<certSignatureType>ECDSA</certSignatureType>
37-
<signatureAndHashAlgorithm>ECDSA_SHA256</signatureAndHashAlgorithm>
38-
<certificateBytes>00 01 90 00 01 8D 30 82 01 89 30 82 01 2F A0 03 02 01
39-
02 02 14 0A 0C 65 9A 72 DA 6E B8 94 E2 AD D6 05 3F F1 34 6C 85 0B 5C
40-
30 0A 06 08 2A 86 48 CE 3D 04 03 02 30 1A 31 18 30 16 06 03 55 04 03
41-
0C 0F 64 74 6C 73 2D 66 75 7A 7A 65 72 2E 63 6F 6D 30 1E 17 0D 32 34
42-
30 36 30 36 31 32 31 33 30 38 5A 17 0D 33 38 30 32 31 33 31 32 31 33
43-
30 38 5A 30 1A 31 18 30 16 06 03 55 04 03 0C 0F 64 74 6C 73 2D 66 75
44-
7A 7A 65 72 2E 63 6F 6D 30 59 30 13 06 07 2A 86 48 CE 3D 02 01 06 08
45-
2A 86 48 CE 3D 03 01 07 03 42 00 04 6A 83 DF 69 81 D8 13 65 47 B9 EC
46-
FA 48 DD B0 CD C4 E2 72 01 E0 28 30 95 7D BE FB 64 AE 3A 98 66 05 F7
47-
2E 1E 95 2E FF 01 E5 07 D7 A5 6E 76 4D 91 3C AC 2C 89 D8 B7 41 38 03
48-
C1 7B A6 F9 AE D2 33 A3 53 30 51 30 1D 06 03 55 1D 0E 04 16 04 14 F6
49-
A5 32 E0 73 F5 25 70 A5 41 36 CB 22 8E 12 E4 F9 BD F3 D3 30 1F 06 03
50-
55 1D 23 04 18 30 16 80 14 F6 A5 32 E0 73 F5 25 70 A5 41 36 CB 22 8E
51-
12 E4 F9 BD F3 D3 30 0F 06 03 55 1D 13 01 01 FF 04 05 30 03 01 01 FF
52-
30 0A 06 08 2A 86 48 CE 3D 04 03 02 03 48 00 30 45 02 21 00 D0 36 BC
53-
32 EF 96 8F 25 81 D1 41 70 BC D4 72 66 0F 55 FB F2 4B E1 E1 C2 C9 02
54-
B4 B6 49 83 E5 CC 02 20 44 0C D3 51 68 12 5C B2 C4 08 D5 B1 F2 31 BB
55-
60 AE 6D FB 88 0F B2 ED E7 18 33 01 1A 49 5A D6 2C</certificateBytes>
56-
<EcPublicKey>
57-
<point>
58-
<xFieldElementFp>
59-
<data>
60-
48178160849216113900197610826518050538097581403529018892565414719684416804966</data>
61-
<modulus>
62-
115792089210356248762697446949407573530086143415290314195533631308867097853951</modulus>
63-
</xFieldElementFp>
64-
<yFieldElementFp>
65-
<data>
66-
2698293772757809793845528399156327847751712523799934234434860240672436179507</data>
67-
<modulus>
68-
115792089210356248762697446949407573530086143415290314195533631308867097853951</modulus>
69-
</yFieldElementFp>
70-
<infinity>false</infinity>
71-
</point>
72-
<group>SECP256R1</group>
73-
</EcPublicKey>
74-
<EcPrivateKey>
75-
<privateKey>
76-
44246452000829000853874228044685165133258626323421979906338042734026795974264</privateKey>
77-
<group>SECP256R1</group>
78-
</EcPrivateKey>
79-
<signatureGroup>SECP256R1</signatureGroup>
80-
<publicKeyGroup>SECP256R1</publicKeyGroup>
81-
</defaultExplicitCertificateKeyPair>
33+
<autoAdjustCertificate>false</autoAdjustCertificate>
34+
<defaultExplicitCertificateChain>
35+
<certificateBytes>
36+
<bytes>30 82 01 89 30 82 01 2F A0 03 02 01
37+
02 02 14 0A 0C 65 9A 72 DA 6E B8 94 E2 AD D6 05 3F F1 34 6C 85 0B 5C
38+
30 0A 06 08 2A 86 48 CE 3D 04 03 02 30 1A 31 18 30 16 06 03 55 04 03
39+
0C 0F 64 74 6C 73 2D 66 75 7A 7A 65 72 2E 63 6F 6D 30 1E 17 0D 32 34
40+
30 36 30 36 31 32 31 33 30 38 5A 17 0D 33 38 30 32 31 33 31 32 31 33
41+
30 38 5A 30 1A 31 18 30 16 06 03 55 04 03 0C 0F 64 74 6C 73 2D 66 75
42+
7A 7A 65 72 2E 63 6F 6D 30 59 30 13 06 07 2A 86 48 CE 3D 02 01 06 08
43+
2A 86 48 CE 3D 03 01 07 03 42 00 04 6A 83 DF 69 81 D8 13 65 47 B9 EC
44+
FA 48 DD B0 CD C4 E2 72 01 E0 28 30 95 7D BE FB 64 AE 3A 98 66 05 F7
45+
2E 1E 95 2E FF 01 E5 07 D7 A5 6E 76 4D 91 3C AC 2C 89 D8 B7 41 38 03
46+
C1 7B A6 F9 AE D2 33 A3 53 30 51 30 1D 06 03 55 1D 0E 04 16 04 14 F6
47+
A5 32 E0 73 F5 25 70 A5 41 36 CB 22 8E 12 E4 F9 BD F3 D3 30 1F 06 03
48+
55 1D 23 04 18 30 16 80 14 F6 A5 32 E0 73 F5 25 70 A5 41 36 CB 22 8E
49+
12 E4 F9 BD F3 D3 30 0F 06 03 55 1D 13 01 01 FF 04 05 30 03 01 01 FF
50+
30 0A 06 08 2A 86 48 CE 3D 04 03 02 03 48 00 30 45 02 21 00 D0 36 BC
51+
32 EF 96 8F 25 81 D1 41 70 BC D4 72 66 0F 55 FB F2 4B E1 E1 C2 C9 02
52+
B4 B6 49 83 E5 CC 02 20 44 0C D3 51 68 12 5C B2 C4 08 D5 B1 F2 31 BB
53+
60 AE 6D FB 88 0F B2 ED E7 18 33 01 1A 49 5A D6 2C
54+
</bytes>
55+
</certificateBytes>
56+
</defaultExplicitCertificateChain>
57+
58+
<certificateChainConfig>
59+
<certificateConfig>
60+
<signatureAlgorithm>ECDSA_WITH_SHA256</signatureAlgorithm>
61+
<publicKeyType>ECDH_ECDSA</publicKeyType>
62+
<ecPublicKey>
63+
<xFieldElementFp>
64+
<data>
65+
48178160849216113900197610826518050538097581403529018892565414719684416804966</data>
66+
<modulus>
67+
115792089210356248762697446949407573530086143415290314195533631308867097853951</modulus>
68+
</xFieldElementFp>
69+
<yFieldElementFp>
70+
<data>
71+
2698293772757809793845528399156327847751712523799934234434860240672436179507</data>
72+
<modulus>
73+
115792089210356248762697446949407573530086143415290314195533631308867097853951</modulus>
74+
</yFieldElementFp>
75+
<infinity>false</infinity>
76+
</ecPublicKey>
77+
<ecPrivateKey>
78+
44246452000829000853874228044685165133258626323421979906338042734026795974264
79+
</ecPrivateKey>
80+
<defaultSubjectNamedCurve>SECP256R1</defaultSubjectNamedCurve>
81+
</certificateConfig>
82+
</certificateChainConfig>
8283
</config>

experiments/configs/tinydtls_client.config

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -53,32 +53,27 @@
5353
<clientCertificateTypeExtensionMessageState>false</clientCertificateTypeExtensionMessageState>
5454

5555
<!-- Note: this fixes any certificate input -->
56-
<autoSelectCertificate>false</autoSelectCertificate>
56+
<autoAdjustCertificate>false</autoAdjustCertificate>
5757
<autoAdjustSignatureAndHashAlgorithm>false</autoAdjustSignatureAndHashAlgorithm>
5858

5959
<!-- Warning: this key pair might not work / has not been tested. A similar configuration used to work with an old version of TLS-Attacker (e.g., 3.2b). -->
60-
<defaultExplicitCertificateKeyPair>
61-
<certPublicKeyType>ECDSA</certPublicKeyType>
62-
<certSignatureType>ECDSA</certSignatureType>
63-
<EcPublicKey>
64-
<point>
65-
<xFieldElementFp>
66-
<data>94232897661529392044308082597636544403139625602616773737240455601462877679514</data>
67-
<modulus>115792089210356248762697446949407573530086143415290314195533631308867097853951</modulus>
68-
</xFieldElementFp>
69-
<yFieldElementFp>
70-
<data>81459975214215857114679354058384353873712640061964199410870538408465338855024</data>
71-
<modulus>115792089210356248762697446949407573530086143415290314195533631308867097853951</modulus>
72-
</yFieldElementFp>
73-
<infinity>true</infinity>
74-
</point>
75-
<group>SECP256R1</group>
76-
</EcPublicKey>
77-
<EcPrivateKey>
78-
<privateKey>98551971876008506686539909602944300163494952408899058323320387266902340541396</privateKey>
79-
<group>SECP256R1</group>
80-
</EcPrivateKey>
81-
<signatureGroup>SECP256R1</signatureGroup>
82-
<publicKeyGroup>SECP256R1</publicKeyGroup>
83-
</defaultExplicitCertificateKeyPair>
60+
<certificateChainConfig>
61+
<certificateConfig>
62+
<signatureAlgorithm>ECDSA_WITH_SHA256</signatureAlgorithm>
63+
<publicKeyType>ECDH_ECDSA</publicKeyType>
64+
<ecPublicKey>
65+
<xFieldElementFp>
66+
<data>94232897661529392044308082597636544403139625602616773737240455601462877679514</data>
67+
<modulus>115792089210356248762697446949407573530086143415290314195533631308867097853951</modulus>
68+
</xFieldElementFp>
69+
<yFieldElementFp>
70+
<data>81459975214215857114679354058384353873712640061964199410870538408465338855024</data>
71+
<modulus>115792089210356248762697446949407573530086143415290314195533631308867097853951</modulus>
72+
</yFieldElementFp>
73+
<infinity>true</infinity>
74+
</ecPublicKey>
75+
<ecPrivateKey>98551971876008506686539909602944300163494952408899058323320387266902340541396</ecPrivateKey>
76+
<defaultSubjectNamedCurve>SECP256R1</defaultSubjectNamedCurve>
77+
</certificateConfig>
78+
</certificateChainConfig>
8479
</config>
Lines changed: 213 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,213 @@
1+
diff -ruN TLS-Attacker/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/dtls/FragmentManager.java TLS-Attacker_patched/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/dtls/FragmentManager.java
2+
--- TLS-Attacker/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/dtls/FragmentManager.java 2025-02-20 15:19:04.898118063 +0100
3+
+++ TLS-Attacker_patched/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/dtls/FragmentManager.java 2025-02-20 15:38:12.424092502 +0100
4+
@@ -23,7 +23,6 @@
5+
6+
private Map<FragmentKey, FragmentCollector> fragments;
7+
private Config config;
8+
- private int lastInterpretedMessageSeq = -1;
9+
10+
public FragmentManager(Config config) {
11+
fragments = new HashMap<>();
12+
@@ -69,21 +68,6 @@
13+
boolean onlyIfComplete, boolean skipMessageSequences) {
14+
List<DtlsHandshakeMessageFragment> handshakeFragmentList = new LinkedList<>();
15+
List<FragmentKey> orderedFragmentKeys = new ArrayList<>(fragments.keySet());
16+
- orderedFragmentKeys.sort(
17+
- new Comparator<FragmentKey>() {
18+
- @Override
19+
- public int compare(FragmentKey fragmentKey1, FragmentKey fragmentKey2) {
20+
- if (fragmentKey1.getEpoch() > fragmentKey2.getEpoch()) {
21+
- return -1;
22+
- } else if (fragmentKey1.getEpoch() < fragmentKey2.getEpoch()) {
23+
- return 1;
24+
- } else {
25+
- return fragmentKey1
26+
- .getMessageSeq()
27+
- .compareTo(fragmentKey2.getMessageSeq());
28+
- }
29+
- }
30+
- });
31+
32+
for (FragmentKey key : orderedFragmentKeys) {
33+
FragmentCollector fragmentCollector = fragments.get(key);
34+
@@ -100,11 +84,6 @@
35+
}
36+
}
37+
if (!fragmentCollector.isInterpreted()) {
38+
- if (!skipMessageSequences
39+
- && key.getMessageSeq() != lastInterpretedMessageSeq + 1
40+
- && !fragmentCollector.isRetransmission()) {
41+
- break;
42+
- }
43+
if (onlyIfComplete && !fragmentCollector.isMessageComplete()) {
44+
LOGGER.debug(
45+
"Incomplete message. Not processing: msg_sqn: "
46+
@@ -114,7 +93,7 @@
47+
} else {
48+
handshakeFragmentList.add(fragmentCollector.buildCombinedFragment());
49+
fragmentCollector.setInterpreted(true);
50+
- lastInterpretedMessageSeq = key.getMessageSeq();
51+
+ clearFragmentedMessage(key.getMessageSeq(), key.getEpoch());
52+
}
53+
}
54+
}
55+
diff -ruN TLS-Attacker/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/layer/LayerStackFactory.java TLS-Attacker_patched/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/layer/LayerStackFactory.java
56+
--- TLS-Attacker/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/layer/LayerStackFactory.java 2025-02-20 15:19:04.907853961 +0100
57+
+++ TLS-Attacker_patched/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/layer/LayerStackFactory.java 2025-02-20 15:38:28.834162918 +0100
58+
@@ -32,7 +32,7 @@
59+
new MessageLayer(context),
60+
new DtlsFragmentLayer(context),
61+
new RecordLayer(context),
62+
- new UdpLayer(context));
63+
+ new FirstCachedUdpLayer(context));
64+
case QUIC:
65+
return new LayerStack(
66+
context,
67+
diff -ruN TLS-Attacker/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/layer/impl/FirstCachedUdpLayer.java TLS-Attacker_patched/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/layer/impl/FirstCachedUdpLayer.java
68+
--- TLS-Attacker/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/layer/impl/FirstCachedUdpLayer.java 1970-01-01 01:00:00.000000000 +0100
69+
+++ TLS-Attacker_patched/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/layer/impl/FirstCachedUdpLayer.java 2025-02-20 15:40:32.718070889 +0100
70+
@@ -0,0 +1,64 @@
71+
+/*
72+
+ * TLS-Attacker - A Modular Penetration Testing Framework for TLS
73+
+ *
74+
+ * Copyright 2014-2023 Ruhr University Bochum, Paderborn University, Technology Innovation Institute, and Hackmanit GmbH
75+
+ *
76+
+ * Licensed under Apache License, Version 2.0
77+
+ * http://www.apache.org/licenses/LICENSE-2.0.txt
78+
+ */
79+
+package de.rub.nds.tlsattacker.core.layer.impl;
80+
+
81+
+import de.rub.nds.tlsattacker.core.layer.hints.LayerProcessingHint;
82+
+import de.rub.nds.tlsattacker.core.layer.stream.HintedLayerInputStream;
83+
+import de.rub.nds.tlsattacker.core.state.Context;
84+
+import de.rub.nds.tlsattacker.core.udp.UdpDataPacket;
85+
+import java.io.ByteArrayInputStream;
86+
+import java.io.IOException;
87+
+
88+
+/**
89+
+ * The UDP layer is a wrapper around an underlying UDP socket. It forwards the sockets InputStream
90+
+ * for reading and sends any data over the UDP layer without modifications.
91+
+ */
92+
+public class FirstCachedUdpLayer extends UdpLayer {
93+
+
94+
+ private byte[] firstClientHello = null;
95+
+ private boolean isFirstClientHelloConsumed = false;
96+
+
97+
+ public boolean isFuzzingClient = false;
98+
+
99+
+ public FirstCachedUdpLayer(Context context) {
100+
+ super(context);
101+
+ }
102+
+
103+
+ public void setFirstClientHelo(byte[] bytes) {
104+
+ this.firstClientHello = bytes;
105+
+ }
106+
+
107+
+ public byte[] getFirstClientHelo() {
108+
+ return this.firstClientHello;
109+
+ }
110+
+
111+
+ @Override
112+
+ public void receiveMoreDataForHint(LayerProcessingHint hint) throws IOException {
113+
+ byte[] receivedPacket = null;
114+
+ if (!isFirstClientHelloConsumed && isFuzzingClient) {
115+
+ receivedPacket = firstClientHello;
116+
+ isFirstClientHelloConsumed = true;
117+
+ } else {
118+
+ receivedPacket = getTransportHandler().fetchData();
119+
+ }
120+
+ UdpDataPacket udpDataPacket = new UdpDataPacket();
121+
+ udpDataPacket
122+
+ .getParser(context, new ByteArrayInputStream(receivedPacket))
123+
+ .parse(udpDataPacket);
124+
+ udpDataPacket.getPreparator(context).prepareAfterParse();
125+
+ udpDataPacket.getHandler(context).adjustContext(udpDataPacket);
126+
+ addProducedContainer(udpDataPacket);
127+
+ if (currentInputStream == null) {
128+
+ currentInputStream = new HintedLayerInputStream(null, this);
129+
+ currentInputStream.extendStream(receivedPacket);
130+
+ } else {
131+
+ currentInputStream.extendStream(receivedPacket);
132+
+ }
133+
+ }
134+
+}
135+
diff -ruN TLS-Attacker/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/layer/impl/UdpLayer.java TLS-Attacker_patched/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/layer/impl/UdpLayer.java
136+
--- TLS-Attacker/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/layer/impl/UdpLayer.java 2025-02-20 15:19:04.907853961 +0100
137+
+++ TLS-Attacker_patched/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/layer/impl/UdpLayer.java 2025-02-20 15:42:08.984094197 +0100
138+
@@ -26,7 +26,7 @@
139+
*/
140+
public class UdpLayer extends ProtocolLayer<LayerProcessingHint, UdpDataPacket> {
141+
142+
- private final Context context;
143+
+ protected final Context context;
144+
145+
public UdpLayer(Context context) {
146+
super(ImplementedLayers.UDP);
147+
@@ -88,7 +88,7 @@
148+
return new LayerProcessingResult<UdpDataPacket>(null, getLayerType(), true);
149+
}
150+
151+
- private UdpTransportHandler getTransportHandler() {
152+
+ protected UdpTransportHandler getTransportHandler() {
153+
if (context.getTransportHandler() == null) {
154+
throw new RuntimeException("TransportHandler is not set in context!");
155+
}
156+
diff -ruN TLS-Attacker/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/protocol/preparator/CertificateMessagePreparator.java TLS-Attacker_patched/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/protocol/preparator/CertificateMessagePreparator.java
157+
--- TLS-Attacker/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/protocol/preparator/CertificateMessagePreparator.java 2025-02-20 15:19:04.917589863 +0100
158+
+++ TLS-Attacker_patched/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/protocol/preparator/CertificateMessagePreparator.java 2025-02-24 17:22:35.965169130 +0100
159+
@@ -147,13 +147,20 @@
160+
}
161+
prepareFromEntryList(msg);
162+
} else {
163+
- entryList = new LinkedList<>();
164+
- for (CertificateBytes certificateBytes :
165+
- chooser.getConfig().getDefaultExplicitCertificateChain()) {
166+
- CertificateEntry entry = new CertificateEntry(certificateBytes.getBytes());
167+
- entryList.add(entry);
168+
+ if (entryList != null) {
169+
+ // Generate EMPTY_CERTIFICATE
170+
+ preparePredefinedCerts(entryList);
171+
+ } else {
172+
+ // Generate CERTIFICATE
173+
+ entryList = new LinkedList<>();
174+
+ for (CertificateBytes certificateBytes :
175+
+ chooser.getConfig().getDefaultExplicitCertificateChain()) {
176+
+ CertificateEntry entry =
177+
+ new CertificateEntry(certificateBytes.getBytes());
178+
+ entryList.add(entry);
179+
+ }
180+
+ msg.setCertificateEntryList(entryList);
181+
}
182+
- msg.setCertificateEntryList(entryList);
183+
prepareFromEntryList(msg);
184+
}
185+
LOGGER.debug(
186+
@@ -223,7 +230,6 @@
187+
prepareCert(entryList, x509Context, certConfig, i);
188+
}
189+
}
190+
- chooser.getContext().getTlsContext().setTalkingX509Context(x509Context);
191+
}
192+
193+
private void prepareCert(
194+
diff -ruN TLS-Attacker/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/record/crypto/RecordDecryptor.java TLS-Attacker_patched/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/record/crypto/RecordDecryptor.java
195+
--- TLS-Attacker/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/record/crypto/RecordDecryptor.java 2025-02-20 15:19:04.927325762 +0100
196+
+++ TLS-Attacker_patched/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/record/crypto/RecordDecryptor.java 2025-02-20 15:48:31.109280624 +0100
197+
@@ -8,6 +8,7 @@
198+
*/
199+
package de.rub.nds.tlsattacker.core.record.crypto;
200+
201+
+import de.rub.nds.protocol.exception.EndOfStreamException;
202+
import de.rub.nds.protocol.exception.ParserException;
203+
import de.rub.nds.tlsattacker.core.constants.ProtocolMessageType;
204+
import de.rub.nds.tlsattacker.core.constants.ProtocolVersion;
205+
@@ -55,7 +56,7 @@
206+
|| record.getContentMessageType() != ProtocolMessageType.CHANGE_CIPHER_SPEC) {
207+
try {
208+
recordCipher.decrypt(record);
209+
- } catch (ParserException | CryptoException ex) {
210+
+ } catch (ParserException | CryptoException | EndOfStreamException ex) {
211+
if (recordCipherList.indexOf(recordCipher) > 0) {
212+
LOGGER.warn(
213+
"Failed to decrypt record, will try to process with previous cipher");

0 commit comments

Comments
 (0)