Skip to content

Commit 8348bf4

Browse files
Implement NewSessionTicketParserTest.java (#690)
* Implements NewSessionTicketParserTest Authored-by: CaptivatingCat Co-authored-by: lucebac Co-authored-by: Robert Merget (ic0ns) Co-authored-by: mmaehren
1 parent 6286cfa commit 8348bf4

File tree

1 file changed

+91
-0
lines changed

1 file changed

+91
-0
lines changed
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
/**
2+
* TLS-Attacker - A Modular Penetration Testing Framework for TLS
3+
*
4+
* Copyright 2014-2020 Ruhr University Bochum, Paderborn University,
5+
* and Hackmanit GmbH
6+
*
7+
* Licensed under Apache License 2.0
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*/
10+
package de.rub.nds.tlsattacker.core.protocol.parser;
11+
12+
import de.rub.nds.modifiablevariable.util.ArrayConverter;
13+
import de.rub.nds.tlsattacker.core.config.Config;
14+
import de.rub.nds.tlsattacker.core.constants.ProtocolVersion;
15+
import de.rub.nds.tlsattacker.core.protocol.message.NewSessionTicketMessage;
16+
import org.junit.Test;
17+
import org.junit.runner.RunWith;
18+
import org.junit.runners.Parameterized;
19+
20+
import java.util.Arrays;
21+
import java.util.Collection;
22+
23+
import static org.junit.Assert.*;
24+
25+
@RunWith(Parameterized.class)
26+
public class NewSessionTicketParserTest {
27+
private final byte[] message;
28+
private final int start;
29+
private final byte[] identity;
30+
private final ProtocolVersion version;
31+
private final long lifetime;
32+
private final byte[] ageadd;
33+
private final byte[] nonce;
34+
35+
private final Config config = Config.createConfig();
36+
37+
private static byte[] sessionTicketTls1_1 = ArrayConverter
38+
.hexStringToByteArray("040000a600001c2000a04c1ffe5c9ce499974ccb74375751f927457820fc83573a62c9c878781e0edde8eae72e472948aa05a224a1dbc47f9e9f1e1d93689c2321dcb62d99f6bd7cd8018f3039bb0cf6c2d74f50d81861001bf27f1aa657426293c24a77be9083176cda9fc9de3f0ee3a4b8bb53c6cf41ed4a1af299063c67267eee257c598d885d4a8a322ecf4ad521f787c1a2119d81acd45373f2299f32c2b49b4c583c85eda5e7e3");
39+
private static byte[] sessionTicketTls1_1_identity = ArrayConverter
40+
.hexStringToByteArray("4c1ffe5c9ce499974ccb74375751f927457820fc83573a62c9c878781e0edde8eae72e472948aa05a224a1dbc47f9e9f1e1d93689c2321dcb62d99f6bd7cd8018f3039bb0cf6c2d74f50d81861001bf27f1aa657426293c24a77be9083176cda9fc9de3f0ee3a4b8bb53c6cf41ed4a1af299063c67267eee257c598d885d4a8a322ecf4ad521f787c1a2119d81acd45373f2299f32c2b49b4c583c85eda5e7e3");
41+
private static long sessionTicketTls1_1_lifetime = 7200;
42+
private static byte[] sessionTicketTls1_2 = ArrayConverter
43+
.hexStringToByteArray("040000a600001c2000a0f11456af91d9738d6dc7ece4b8f03430ec511de863c52bced5cfec3791784997ea7aaec9cabf0c6b782cb0f93f92c31111895bd85cf84af0a95ed8e021497cd0a99dbd501a8fb003e013f540e0a76e89aba5b17094f8f5427375fd274d93f4ac84e754a3959091686a9b51eac65d6d5e74adda93274d14d18ee16097f97eb6cce6b423b2474237118aaaf777ddd95b8870de122d4dd0a48a18b27bfa077ad644");
44+
private static byte[] sessionTicketTls1_2_identity = ArrayConverter
45+
.hexStringToByteArray("f11456af91d9738d6dc7ece4b8f03430ec511de863c52bced5cfec3791784997ea7aaec9cabf0c6b782cb0f93f92c31111895bd85cf84af0a95ed8e021497cd0a99dbd501a8fb003e013f540e0a76e89aba5b17094f8f5427375fd274d93f4ac84e754a3959091686a9b51eac65d6d5e74adda93274d14d18ee16097f97eb6cce6b423b2474237118aaaf777ddd95b8870de122d4dd0a48a18b27bfa077ad644");
46+
private static long sessionTicketTls1_2_lifetime = 7200;
47+
private static byte[] sessionTicketTls1_3 = ArrayConverter
48+
.hexStringToByteArray("040000e500001c20bc3dca2b08000000000000000000d0f11456af91d9738d6dc7ece4b8f0343044cbb3c1f1e763c0e80d49010c72c4e5b2ec293432abfaa30caa461237febee09c5a3a8a5df4d5401d5e825e897a388bb4543c635d07cc44f7f4dcf6d0841ec4f4ece40ffd2fbd8435ca361288786211e021c4d70985895962e90952c0755ad2f0bd345e2b84adc1335461e7aa92b71af3e52c46d07543ab08e7ea214c321d6b0b5eb568fa45f8b708cbefa0106c97f4e71117a208510b5e40c0ace15fa533ab5fdde3cca86cff47b4461093270b1e343ddd007b2aba3d321c6b7f3d2e64e1220000");
49+
private static byte[] sessionTicketTls1_3_identity = ArrayConverter
50+
.hexStringToByteArray("f11456af91d9738d6dc7ece4b8f0343044cbb3c1f1e763c0e80d49010c72c4e5b2ec293432abfaa30caa461237febee09c5a3a8a5df4d5401d5e825e897a388bb4543c635d07cc44f7f4dcf6d0841ec4f4ece40ffd2fbd8435ca361288786211e021c4d70985895962e90952c0755ad2f0bd345e2b84adc1335461e7aa92b71af3e52c46d07543ab08e7ea214c321d6b0b5eb568fa45f8b708cbefa0106c97f4e71117a208510b5e40c0ace15fa533ab5fdde3cca86cff47b4461093270b1e343ddd007b2aba3d321c6b7f3d2e64e122");
51+
private static long sessionTicketTls1_3_lifetime = 7200;
52+
private static byte[] sessionTicketTls1_3_AgeAdd = ArrayConverter.hexStringToByteArray("bc3dca2b");
53+
private static byte[] sessionTicketTls1_3_Nonce = ArrayConverter.hexStringToByteArray("0000000000000000");
54+
55+
@Parameterized.Parameters
56+
public static Collection<Object[]> generateData() {
57+
return Arrays.asList(new Object[][] {
58+
{ sessionTicketTls1_1, 0, sessionTicketTls1_1_identity, sessionTicketTls1_1_lifetime, new byte[0],
59+
new byte[0], ProtocolVersion.TLS11 },
60+
{ sessionTicketTls1_2, 0, sessionTicketTls1_2_identity, sessionTicketTls1_2_lifetime, new byte[0],
61+
new byte[0], ProtocolVersion.TLS12 },
62+
{ sessionTicketTls1_3, 0, sessionTicketTls1_3_identity, sessionTicketTls1_3_lifetime,
63+
sessionTicketTls1_3_AgeAdd, sessionTicketTls1_3_Nonce, ProtocolVersion.TLS13 } });
64+
}
65+
66+
public NewSessionTicketParserTest(byte[] message, int start, byte[] identity, long lifetime, byte[] ageadd,
67+
byte[] nonce, ProtocolVersion version) {
68+
this.message = message;
69+
this.start = start;
70+
this.version = version;
71+
this.identity = identity;
72+
this.lifetime = lifetime;
73+
this.ageadd = ageadd;
74+
this.nonce = nonce;
75+
}
76+
77+
@Test
78+
public void testParse() {
79+
NewSessionTicketParser parser = new NewSessionTicketParser(start, message, version, config);
80+
NewSessionTicketMessage msg = parser.parse();
81+
assertArrayEquals(identity, msg.getTicket().getIdentity().getValue());
82+
assertEquals(lifetime, (long) msg.getTicketLifetimeHint().getValue());
83+
// For TLS 1.3 also test Nonce and AgeAdd field which are not present in
84+
// previous versions
85+
if (version.equals(ProtocolVersion.TLS13)) {
86+
assertArrayEquals(ageadd, msg.getTicket().getTicketAgeAdd().getValue());
87+
assertArrayEquals(nonce, msg.getTicket().getTicketNonce().getValue());
88+
}
89+
}
90+
91+
}

0 commit comments

Comments
 (0)