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 .protocol .serializer ;
10+
11+ import static org .junit .Assert .*;
12+
13+ import java .math .BigInteger ;
14+ import java .util .Arrays ;
15+ import java .util .Collection ;
16+
17+ import org .junit .Test ;
18+ import org .junit .runner .RunWith ;
19+ import org .junit .runners .Parameterized ;
20+
21+ import de .rub .nds .modifiablevariable .util .ArrayConverter ;
22+ import de .rub .nds .tlsattacker .core .constants .HandshakeMessageType ;
23+ import de .rub .nds .tlsattacker .core .constants .ProtocolVersion ;
24+ import de .rub .nds .tlsattacker .core .constants .SSL2CipherSuite ;
25+ import de .rub .nds .tlsattacker .core .protocol .message .SSL2ClientMasterKeyMessage ;
26+
27+ @ RunWith (Parameterized .class )
28+ public class SSL2ClientMasterKeySerializerTest {
29+
30+ private final ProtocolVersion version = ProtocolVersion .SSL2 ;
31+ private SSL2ClientMasterKeyMessage message ;
32+ private byte [] expectedClientMasterKeyMessage ;
33+
34+ @ Parameterized .Parameters
35+ public static Collection <Object []> generateData () {
36+ byte [] expectedClientMasterKeyMessage = ArrayConverter
37+ .hexStringToByteArray ("808a02010080000000800000b28367d5b44f6f585096540ab798705ecb6ce66336d5068952db71542701870754fdc25da8414d0977ec0401b5ff4cc853779d6069be867bf65a2250d14a189d74c608f4f76a9aa8a4f1a909370b86f5fd0740d368083e78e1034e38573b32799cf59ea52a771633ffdbd0e8123ada764f677cd09b05106ea9af8168a71249d4" );
38+ byte [] encryptedKey = ArrayConverter
39+ .hexStringToByteArray ("b28367d5b44f6f585096540ab798705ecb6ce66336d5068952db71542701870754fdc25da8414d0977ec0401b5ff4cc853779d6069be867bf65a2250d14a189d74c608f4f76a9aa8a4f1a909370b86f5fd0740d368083e78e1034e38573b32799cf59ea52a771633ffdbd0e8123ada764f677cd09b05106ea9af8168a71249d4" );
40+ byte [] cipher = BigInteger .valueOf (SSL2CipherSuite .SSL_CK_RC4_128_WITH_MD5 .getValue ()).toByteArray ();
41+
42+ return Arrays .asList (new Object [][] { { 138 , HandshakeMessageType .SSL2_CLIENT_MASTER_KEY .getValue (), cipher , 0 ,
43+ 128 , 0 , new byte [0 ], encryptedKey , expectedClientMasterKeyMessage } });
44+ }
45+
46+ public SSL2ClientMasterKeySerializerTest (int messageLength , byte messageType , byte [] cipher , int clearKeyLength ,
47+ int encryptedKeyLength , int keyArgLength , byte [] clearKeyData , byte [] encryptedKey ,
48+ byte [] expectedClientMasterKeyMessage ) {
49+ this .expectedClientMasterKeyMessage = expectedClientMasterKeyMessage ;
50+ this .message = new SSL2ClientMasterKeyMessage ();
51+ this .message .setMessageLength (messageLength );
52+ this .message .setType (messageType );
53+ this .message .setCipherKind (cipher );
54+ this .message .setClearKeyLength (clearKeyLength );
55+ this .message .setEncryptedKeyLength (encryptedKeyLength );
56+ this .message .setKeyArgLength (keyArgLength );
57+ this .message .setClearKeyData (clearKeyData );
58+ this .message .setEncryptedKeyData (encryptedKey );
59+ }
60+
61+ @ Test
62+ public void test () {
63+ SSL2ClientMasterKeySerializer serializer = new SSL2ClientMasterKeySerializer (this .message , this .version );
64+ byte [] result = serializer .serializeProtocolMessageContent ();
65+ assertArrayEquals (this .expectedClientMasterKeyMessage , result );
66+ }
67+ }
0 commit comments