author | iignatyev |
Tue, 30 May 2017 21:14:45 -0700 | |
changeset 45288 | 58be10a068c2 |
parent 41820 | 3d8c88d00c9f |
permissions | -rw-r--r-- |
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1 |
/* |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
2 |
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
3 |
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
4 |
* |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
5 |
* This code is free software; you can redistribute it and/or modify it |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
6 |
* under the terms of the GNU General Public License version 2 only, as |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
7 |
* published by the Free Software Foundation. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
8 |
* |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
9 |
* This code is distributed in the hope that it will be useful, but WITHOUT |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
10 |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
11 |
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
12 |
* version 2 for more details (a copy is included in the LICENSE file that |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
13 |
* accompanied this code). |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
14 |
* |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
15 |
* You should have received a copy of the GNU General Public License version |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
16 |
* 2 along with this work; if not, write to the Free Software Foundation, |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
17 |
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
18 |
* |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
19 |
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
20 |
* or visit www.oracle.com if you need additional information or have any |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
21 |
* questions. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
22 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
23 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
24 |
import javax.net.ssl.KeyManagerFactory; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
25 |
import javax.net.ssl.SNIHostName; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
26 |
import javax.net.ssl.SNIMatcher; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
27 |
import javax.net.ssl.SNIServerName; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
28 |
import javax.net.ssl.SSLContext; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
29 |
import javax.net.ssl.SSLEngine; |
41820 | 30 |
import javax.net.ssl.SSLSession; |
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
31 |
import javax.net.ssl.SSLEngineResult; |
41820 | 32 |
import javax.net.ssl.SSLEngineResult.HandshakeStatus; |
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
33 |
import javax.net.ssl.SSLException; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
34 |
import javax.net.ssl.SSLParameters; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
35 |
import javax.net.ssl.TrustManagerFactory; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
36 |
import java.io.File; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
37 |
import java.io.FileInputStream; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
38 |
import java.io.IOException; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
39 |
import java.nio.ByteBuffer; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
40 |
import java.security.KeyManagementException; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
41 |
import java.security.KeyStore; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
42 |
import java.security.KeyStoreException; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
43 |
import java.security.NoSuchAlgorithmException; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
44 |
import java.security.UnrecoverableKeyException; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
45 |
import java.security.cert.CertificateException; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
46 |
import java.util.ArrayList; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
47 |
import java.util.Arrays; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
48 |
import java.util.HashMap; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
49 |
import java.util.LinkedList; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
50 |
import java.util.List; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
51 |
import java.util.Map; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
52 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
53 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
54 |
* Basic class to inherit SSLEngine test cases from it. Tests apply for |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
55 |
* the TLS or DTLS security protocols and their versions. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
56 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
57 |
abstract public class SSLEngineTestCase { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
58 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
59 |
public enum Ciphers { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
60 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
61 |
/** |
41820 | 62 |
* Ciphers supported by the tested SSLEngine without those with |
63 |
* kerberos authentication. |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
64 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
65 |
SUPPORTED_NON_KRB_CIPHERS(SSLEngineTestCase.SUPPORTED_NON_KRB_CIPHERS, |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
66 |
"Supported non kerberos"), |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
67 |
/** |
41820 | 68 |
* Ciphers supported by the tested SSLEngine without those with |
69 |
* kerberos authentication and without those with SHA256 ans SHA384. |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
70 |
*/ |
41820 | 71 |
SUPPORTED_NON_KRB_NON_SHA_CIPHERS( |
72 |
SSLEngineTestCase.SUPPORTED_NON_KRB_NON_SHA_CIPHERS, |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
73 |
"Supported non kerberos non SHA256 and SHA384"), |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
74 |
/** |
41820 | 75 |
* Ciphers supported by the tested SSLEngine with kerberos |
76 |
* authentication. |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
77 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
78 |
SUPPORTED_KRB_CIPHERS(SSLEngineTestCase.SUPPORTED_KRB_CIPHERS, |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
79 |
"Supported kerberos"), |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
80 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
81 |
* Ciphers enabled by default for the tested SSLEngine without kerberos |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
82 |
* and anon. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
83 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
84 |
ENABLED_NON_KRB_NOT_ANON_CIPHERS( |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
85 |
SSLEngineTestCase.ENABLED_NON_KRB_NOT_ANON_CIPHERS, |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
86 |
"Enabled by default non kerberos not anonymous"), |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
87 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
88 |
* Ciphers unsupported by the tested SSLEngine. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
89 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
90 |
UNSUPPORTED_CIPHERS(SSLEngineTestCase.UNSUPPORTED_CIPHERS, |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
91 |
"Unsupported"); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
92 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
93 |
Ciphers(String[] ciphers, String description) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
94 |
this.ciphers = ciphers; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
95 |
this.description = description; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
96 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
97 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
98 |
final String[] ciphers; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
99 |
final String description; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
100 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
101 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
102 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
103 |
* Enumeration used to distinguish handshake mode in |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
104 |
* {@link SSLEngineTestCase#doHandshake(javax.net.ssl.SSLEngine, |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
105 |
* javax.net.ssl.SSLEngine, int, SSLEngineTestCase.HandshakeMode, boolean) |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
106 |
* SSLEngineTestCase.doHandshake} method. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
107 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
108 |
public enum HandshakeMode { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
109 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
110 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
111 |
* Initial handshake done for the first time: both engines call |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
112 |
* {@link SSLEngine#beginHandshake()} method. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
113 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
114 |
INITIAL_HANDSHAKE, |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
115 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
116 |
* Repeated handshake done by client: client engine calls |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
117 |
* {@link SSLEngine#beginHandshake()} method. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
118 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
119 |
REHANDSHAKE_BEGIN_CLIENT, |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
120 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
121 |
* Repeated handshake done by server: server engine calls |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
122 |
* {@link SSLEngine#beginHandshake()} method. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
123 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
124 |
REHANDSHAKE_BEGIN_SERVER; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
125 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
126 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
127 |
* Security protocol to be tested: "TLS" or "DTLS" or their versions, |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
128 |
* e.g. "TLSv1", "TLSv1.1", "TLSv1.2", "DTLSv1.0", "DTLSv1.2". |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
129 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
130 |
public static final String TESTED_SECURITY_PROTOCOL |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
131 |
= System.getProperty("test.security.protocol", "TLS"); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
132 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
133 |
* Test mode: "norm", "norm_sni" or "krb". |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
134 |
* Modes "norm" and "norm_sni" are used to run |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
135 |
* with all supported non-kerberos ciphers. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
136 |
* Mode "krb" is used to run with kerberos ciphers. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
137 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
138 |
public static final String TEST_MODE |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
139 |
= System.getProperty("test.mode", "norm"); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
140 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
141 |
private static final String FS = System.getProperty("file.separator", "/"); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
142 |
private static final String PATH_TO_STORES = ".." + FS + "etc"; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
143 |
private static final String KEY_STORE_FILE = "keystore"; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
144 |
private static final String TRUST_STORE_FILE = "truststore"; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
145 |
private static final String PASSWD = "passphrase"; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
146 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
147 |
private static final String KEY_FILE_NAME |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
148 |
= System.getProperty("test.src", ".") + FS + PATH_TO_STORES |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
149 |
+ FS + KEY_STORE_FILE; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
150 |
private static final String TRUST_FILE_NAME |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
151 |
= System.getProperty("test.src", ".") + FS + PATH_TO_STORES |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
152 |
+ FS + TRUST_STORE_FILE; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
153 |
|
41820 | 154 |
// Need an enhancement to use none-static mutable global variables. |
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
155 |
private static ByteBuffer net; |
41820 | 156 |
private static boolean doUnwrapForNotHandshakingStatus; |
157 |
private static boolean endHandshakeLoop = false; |
|
158 |
||
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
159 |
private static final int MAX_HANDSHAKE_LOOPS = 100; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
160 |
private static final String EXCHANGE_MSG_SENT = "Hello, peer!"; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
161 |
private static final String TEST_SRC = System.getProperty("test.src", "."); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
162 |
private static final String KTAB_FILENAME = "krb5.keytab.data"; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
163 |
private static final String KRB_REALM = "TEST.REALM"; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
164 |
private static final String KRBTGT_PRINCIPAL = "krbtgt/" + KRB_REALM; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
165 |
private static final String KRB_USER = "USER"; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
166 |
private static final String KRB_USER_PASSWORD = "password"; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
167 |
private static final String KRB_USER_PRINCIPAL = KRB_USER + "@" + KRB_REALM; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
168 |
private static final String KRB5_CONF_FILENAME = "krb5.conf"; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
169 |
private static final String PATH_TO_COMMON = ".." + FS + "TLSCommon"; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
170 |
private static final String JAAS_CONF_FILE = PATH_TO_COMMON |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
171 |
+ FS + "jaas.conf"; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
172 |
private static final int DELAY = 1000; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
173 |
private static final String HOST = "localhost"; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
174 |
private static final String SERVER_NAME = "service.localhost"; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
175 |
private static final String SNI_PATTERN = ".*"; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
176 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
177 |
private static final String[] SUPPORTED_NON_KRB_CIPHERS; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
178 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
179 |
static { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
180 |
try { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
181 |
String[] allSupportedCiphers = getContext() |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
182 |
.createSSLEngine().getSupportedCipherSuites(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
183 |
List<String> supportedCiphersList = new LinkedList<>(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
184 |
for (String cipher : allSupportedCiphers) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
185 |
if (!cipher.contains("KRB5") |
41820 | 186 |
&& !cipher.contains("TLS_EMPTY_RENEGOTIATION_INFO_SCSV")) { |
187 |
||
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
188 |
supportedCiphersList.add(cipher); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
189 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
190 |
} |
41820 | 191 |
SUPPORTED_NON_KRB_CIPHERS = |
192 |
supportedCiphersList.toArray(new String[0]); |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
193 |
} catch (Exception ex) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
194 |
throw new Error("Unexpected issue", ex); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
195 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
196 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
197 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
198 |
private static final String[] SUPPORTED_NON_KRB_NON_SHA_CIPHERS; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
199 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
200 |
static { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
201 |
try { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
202 |
String[] allSupportedCiphers = getContext() |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
203 |
.createSSLEngine().getSupportedCipherSuites(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
204 |
List<String> supportedCiphersList = new LinkedList<>(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
205 |
for (String cipher : allSupportedCiphers) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
206 |
if (!cipher.contains("KRB5") |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
207 |
&& !cipher.contains("TLS_EMPTY_RENEGOTIATION_INFO_SCSV") |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
208 |
&& !cipher.endsWith("_SHA256") |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
209 |
&& !cipher.endsWith("_SHA384")) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
210 |
supportedCiphersList.add(cipher); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
211 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
212 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
213 |
SUPPORTED_NON_KRB_NON_SHA_CIPHERS |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
214 |
= supportedCiphersList.toArray(new String[0]); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
215 |
} catch (Exception ex) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
216 |
throw new Error("Unexpected issue", ex); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
217 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
218 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
219 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
220 |
private static final String[] SUPPORTED_KRB_CIPHERS; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
221 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
222 |
static { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
223 |
try { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
224 |
String[] allSupportedCiphers = getContext() |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
225 |
.createSSLEngine().getSupportedCipherSuites(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
226 |
List<String> supportedCiphersList = new LinkedList<>(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
227 |
for (String cipher : allSupportedCiphers) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
228 |
if (cipher.contains("KRB5") |
41820 | 229 |
&& !cipher.contains("TLS_EMPTY_RENEGOTIATION_INFO_SCSV")) { |
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
230 |
supportedCiphersList.add(cipher); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
231 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
232 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
233 |
SUPPORTED_KRB_CIPHERS = supportedCiphersList.toArray(new String[0]); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
234 |
} catch (Exception ex) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
235 |
throw new Error("Unexpected issue", ex); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
236 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
237 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
238 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
239 |
private static final String[] ENABLED_NON_KRB_NOT_ANON_CIPHERS; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
240 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
241 |
static { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
242 |
try { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
243 |
SSLEngine temporary = getContext().createSSLEngine(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
244 |
temporary.setUseClientMode(true); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
245 |
String[] enabledCiphers = temporary.getEnabledCipherSuites(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
246 |
List<String> enabledCiphersList = new LinkedList<>(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
247 |
for (String cipher : enabledCiphers) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
248 |
if (!cipher.contains("anon") && !cipher.contains("KRB5") |
41820 | 249 |
&& !cipher.contains("TLS_EMPTY_RENEGOTIATION_INFO_SCSV")) { |
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
250 |
enabledCiphersList.add(cipher); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
251 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
252 |
} |
41820 | 253 |
ENABLED_NON_KRB_NOT_ANON_CIPHERS = |
254 |
enabledCiphersList.toArray(new String[0]); |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
255 |
} catch (Exception ex) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
256 |
throw new Error("Unexpected issue", ex); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
257 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
258 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
259 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
260 |
private static final String[] UNSUPPORTED_CIPHERS = { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
261 |
"SSL_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA", |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
262 |
"SSL_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA", |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
263 |
"SSL_DHE_DSS_WITH_RC4_128_SHA", |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
264 |
"SSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA", |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
265 |
"SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA", |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
266 |
"SSL_DH_DSS_WITH_DES_CBC_SHA", |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
267 |
"SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHA", |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
268 |
"SSL_DH_RSA_WITH_3DES_EDE_CBC_SHA", |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
269 |
"SSL_DH_RSA_WITH_DES_CBC_SHA", |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
270 |
"SSL_FORTEZZA_DMS_WITH_FORTEZZA_CBC_SHA", |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
271 |
"SSL_FORTEZZA_DMS_WITH_NULL_SHA", |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
272 |
"SSL_RSA_EXPORT1024_WITH_DES_CBC_SHA", |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
273 |
"SSL_RSA_EXPORT1024_WITH_RC4_56_SHA", |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
274 |
"SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5", |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
275 |
"SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA", |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
276 |
"SSL_RSA_FIPS_WITH_DES_CBC_SHA", |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
277 |
"TLS_KRB5_EXPORT_WITH_RC2_CBC_40_MD5", |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
278 |
"TLS_KRB5_EXPORT_WITH_RC2_CBC_40_SHA", |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
279 |
"TLS_KRB5_WITH_IDEA_CBC_MD5", |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
280 |
"TLS_KRB5_WITH_IDEA_CBC_SHA", |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
281 |
"SSL_RSA_WITH_IDEA_CBC_SHA", |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
282 |
"TLS_DH_RSA_WITH_AES_128_GCM_SHA256", |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
283 |
"TLS_DH_RSA_WITH_AES_256_GCM_SHA384", |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
284 |
"TLS_DH_DSS_WITH_AES_128_GCM_SHA256", |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
285 |
"TLS_DH_DSS_WITH_AES_256_GCM_SHA384" |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
286 |
}; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
287 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
288 |
private final int maxPacketSize; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
289 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
290 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
291 |
* Constructs test case with the given MFLN maxMacketSize. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
292 |
* |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
293 |
* @param maxPacketSize - MLFN extension max packet size. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
294 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
295 |
public SSLEngineTestCase(int maxPacketSize) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
296 |
this.maxPacketSize = maxPacketSize; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
297 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
298 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
299 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
300 |
* Constructs test case with {@code maxPacketSize = 0}. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
301 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
302 |
public SSLEngineTestCase() { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
303 |
this.maxPacketSize = 0; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
304 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
305 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
306 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
307 |
* Wraps data with the specified engine. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
308 |
* |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
309 |
* @param engine - SSLEngine that wraps data. |
41820 | 310 |
* @param wrapper - Set wrapper id, e.g. "server" of "client". |
311 |
* Used for logging only. |
|
312 |
* @param maxPacketSize - Max packet size to check that MFLN extension |
|
313 |
* works or zero for no check. |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
314 |
* @param app - Buffer with data to wrap. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
315 |
* @return - Buffer with wrapped data. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
316 |
* @throws SSLException - thrown on engine errors. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
317 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
318 |
public static ByteBuffer doWrap(SSLEngine engine, String wrapper, |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
319 |
int maxPacketSize, ByteBuffer app) |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
320 |
throws SSLException { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
321 |
return doWrap(engine, wrapper, maxPacketSize, |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
322 |
app, SSLEngineResult.Status.OK, null); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
323 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
324 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
325 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
326 |
* Wraps data with the specified engine. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
327 |
* |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
328 |
* @param engine - SSLEngine that wraps data. |
41820 | 329 |
* @param wrapper - Set wrapper id, e.g. "server" of "client". |
330 |
* Used for logging only. |
|
331 |
* @param maxPacketSize - Max packet size to check that MFLN extension |
|
332 |
* works or zero for no check. |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
333 |
* @param app - Buffer with data to wrap. |
41820 | 334 |
* @param result - Array which first element will be used to |
335 |
* output wrap result object. |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
336 |
* @return - Buffer with wrapped data. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
337 |
* @throws SSLException - thrown on engine errors. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
338 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
339 |
public static ByteBuffer doWrap(SSLEngine engine, String wrapper, |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
340 |
int maxPacketSize, ByteBuffer app, |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
341 |
SSLEngineResult[] result) |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
342 |
throws SSLException { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
343 |
return doWrap(engine, wrapper, maxPacketSize, |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
344 |
app, SSLEngineResult.Status.OK, result); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
345 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
346 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
347 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
348 |
* Wraps data with the specified engine. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
349 |
* |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
350 |
* @param engine - SSLEngine that wraps data. |
41820 | 351 |
* @param wrapper - Set wrapper id, e.g. "server" of "client". |
352 |
* Used for logging only. |
|
353 |
* @param maxPacketSize - Max packet size to check that MFLN extension |
|
354 |
* works or zero for no check. |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
355 |
* @param app - Buffer with data to wrap. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
356 |
* @param wantedStatus - Specifies expected result status of wrapping. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
357 |
* @return - Buffer with wrapped data. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
358 |
* @throws SSLException - thrown on engine errors. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
359 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
360 |
public static ByteBuffer doWrap(SSLEngine engine, String wrapper, |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
361 |
int maxPacketSize, ByteBuffer app, |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
362 |
SSLEngineResult.Status wantedStatus) |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
363 |
throws SSLException { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
364 |
return doWrap(engine, wrapper, maxPacketSize, |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
365 |
app, wantedStatus, null); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
366 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
367 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
368 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
369 |
* Wraps data with the specified engine. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
370 |
* |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
371 |
* @param engine - SSLEngine that wraps data. |
41820 | 372 |
* @param wrapper - Set wrapper id, e.g. "server" of "client". |
373 |
* Used for logging only. |
|
374 |
* @param maxPacketSize - Max packet size to check that MFLN extension |
|
375 |
* works or zero for no check. |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
376 |
* @param app - Buffer with data to wrap. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
377 |
* @param wantedStatus - Specifies expected result status of wrapping. |
41820 | 378 |
* @param result - Array which first element will be used to output |
379 |
* wrap result object. |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
380 |
* @return - Buffer with wrapped data. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
381 |
* @throws SSLException - thrown on engine errors. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
382 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
383 |
public static ByteBuffer doWrap(SSLEngine engine, String wrapper, |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
384 |
int maxPacketSize, ByteBuffer app, |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
385 |
SSLEngineResult.Status wantedStatus, |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
386 |
SSLEngineResult[] result) |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
387 |
throws SSLException { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
388 |
ByteBuffer net = ByteBuffer.allocate(engine.getSession() |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
389 |
.getPacketBufferSize()); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
390 |
SSLEngineResult r = engine.wrap(app, net); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
391 |
net.flip(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
392 |
int length = net.remaining(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
393 |
System.out.println(wrapper + " wrapped " + length + " bytes."); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
394 |
System.out.println(wrapper + " handshake status is " |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
395 |
+ engine.getHandshakeStatus()); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
396 |
if (maxPacketSize < length && maxPacketSize != 0) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
397 |
throw new AssertionError("Handshake wrapped net buffer length " |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
398 |
+ length + " exceeds maximum packet size " |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
399 |
+ maxPacketSize); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
400 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
401 |
checkResult(r, wantedStatus); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
402 |
if (result != null && result.length > 0) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
403 |
result[0] = r; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
404 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
405 |
return net; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
406 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
407 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
408 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
409 |
* Unwraps data with the specified engine. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
410 |
* |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
411 |
* @param engine - SSLEngine that unwraps data. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
412 |
* @param unwrapper - Set unwrapper id, e.g. "server" of "client". Used for |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
413 |
* logging only. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
414 |
* @param net - Buffer with data to unwrap. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
415 |
* @return - Buffer with unwrapped data. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
416 |
* @throws SSLException - thrown on engine errors. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
417 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
418 |
public static ByteBuffer doUnWrap(SSLEngine engine, String unwrapper, |
41820 | 419 |
ByteBuffer net) throws SSLException { |
420 |
return doUnWrap(engine, unwrapper, |
|
421 |
net, SSLEngineResult.Status.OK, null); |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
422 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
423 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
424 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
425 |
* Unwraps data with the specified engine. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
426 |
* |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
427 |
* @param engine - SSLEngine that unwraps data. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
428 |
* @param unwrapper - Set unwrapper id, e.g. "server" of "client". Used for |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
429 |
* logging only. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
430 |
* @param net - Buffer with data to unwrap. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
431 |
* @param result - Array which first element will be used to output wrap |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
432 |
* result object. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
433 |
* @return - Buffer with unwrapped data. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
434 |
* @throws SSLException - thrown on engine errors. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
435 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
436 |
public static ByteBuffer doUnWrap(SSLEngine engine, String unwrapper, |
41820 | 437 |
ByteBuffer net, SSLEngineResult[] result) throws SSLException { |
438 |
return doUnWrap(engine, unwrapper, |
|
439 |
net, SSLEngineResult.Status.OK, result); |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
440 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
441 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
442 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
443 |
* Unwraps data with the specified engine. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
444 |
* |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
445 |
* @param engine - SSLEngine that unwraps data. |
41820 | 446 |
* @param unwrapper - Set unwrapper id, e.g. "server" of "client". |
447 |
* Used for logging only. |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
448 |
* @param net - Buffer with data to unwrap. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
449 |
* @param wantedStatus - Specifies expected result status of wrapping. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
450 |
* @return - Buffer with unwrapped data. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
451 |
* @throws SSLException - thrown on engine errors. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
452 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
453 |
public static ByteBuffer doUnWrap(SSLEngine engine, String unwrapper, |
41820 | 454 |
ByteBuffer net, |
455 |
SSLEngineResult.Status wantedStatus) throws SSLException { |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
456 |
return doUnWrap(engine, unwrapper, net, wantedStatus, null); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
457 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
458 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
459 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
460 |
* Unwraps data with the specified engine. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
461 |
* |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
462 |
* @param engine - SSLEngine that unwraps data. |
41820 | 463 |
* @param unwrapper - Set unwrapper id, e.g. "server" of "client". |
464 |
* Used for logging only. |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
465 |
* @param net - Buffer with data to unwrap. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
466 |
* @param wantedStatus - Specifies expected result status of wrapping. |
41820 | 467 |
* @param result - Array which first element will be used to output |
468 |
* wrap result object. |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
469 |
* @return - Buffer with unwrapped data. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
470 |
* @throws SSLException - thrown on engine errors. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
471 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
472 |
public static ByteBuffer doUnWrap(SSLEngine engine, String unwrapper, |
41820 | 473 |
ByteBuffer net, SSLEngineResult.Status wantedStatus, |
474 |
SSLEngineResult[] result) throws SSLException { |
|
475 |
||
476 |
ByteBuffer app = ByteBuffer.allocate( |
|
477 |
engine.getSession().getApplicationBufferSize()); |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
478 |
int length = net.remaining(); |
41820 | 479 |
System.out.println(unwrapper + " unwrapping " + length + " bytes..."); |
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
480 |
SSLEngineResult r = engine.unwrap(net, app); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
481 |
app.flip(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
482 |
System.out.println(unwrapper + " handshake status is " |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
483 |
+ engine.getHandshakeStatus()); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
484 |
checkResult(r, wantedStatus); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
485 |
if (result != null && result.length > 0) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
486 |
result[0] = r; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
487 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
488 |
return app; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
489 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
490 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
491 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
492 |
* Does the handshake of the two specified engines according to the |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
493 |
* {@code mode} specified. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
494 |
* |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
495 |
* @param clientEngine - Client SSLEngine. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
496 |
* @param serverEngine - Server SSLEngine. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
497 |
* @param maxPacketSize - Maximum packet size for MFLN of zero for no limit. |
41820 | 498 |
* @param mode - Handshake mode according to |
499 |
* {@link HandshakeMode} enum. |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
500 |
* @throws SSLException - thrown on engine errors. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
501 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
502 |
public static void doHandshake(SSLEngine clientEngine, |
41820 | 503 |
SSLEngine serverEngine, |
504 |
int maxPacketSize, HandshakeMode mode) throws SSLException { |
|
505 |
||
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
506 |
doHandshake(clientEngine, serverEngine, maxPacketSize, mode, false); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
507 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
508 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
509 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
510 |
* Does the handshake of the two specified engines according to the |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
511 |
* {@code mode} specified. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
512 |
* |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
513 |
* @param clientEngine - Client SSLEngine. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
514 |
* @param serverEngine - Server SSLEngine. |
41820 | 515 |
* @param maxPacketSize - Maximum packet size for MFLN of zero |
516 |
* for no limit. |
|
517 |
* @param mode - Handshake mode according to |
|
518 |
* {@link HandshakeMode} enum. |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
519 |
* @param enableReplicatedPacks - Set {@code true} to enable replicated |
41820 | 520 |
* packet sending. |
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
521 |
* @throws SSLException - thrown on engine errors. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
522 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
523 |
public static void doHandshake(SSLEngine clientEngine, |
41820 | 524 |
SSLEngine serverEngine, int maxPacketSize, |
525 |
HandshakeMode mode, |
|
526 |
boolean enableReplicatedPacks) throws SSLException { |
|
527 |
||
528 |
System.out.println("============================================="); |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
529 |
System.out.println("Starting handshake " + mode.name()); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
530 |
int loop = 0; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
531 |
if (maxPacketSize < 0) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
532 |
throw new Error("Test issue: maxPacketSize is less than zero!"); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
533 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
534 |
SSLParameters params = clientEngine.getSSLParameters(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
535 |
params.setMaximumPacketSize(maxPacketSize); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
536 |
clientEngine.setSSLParameters(params); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
537 |
params = serverEngine.getSSLParameters(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
538 |
params.setMaximumPacketSize(maxPacketSize); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
539 |
serverEngine.setSSLParameters(params); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
540 |
SSLEngine firstEngine; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
541 |
SSLEngine secondEngine; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
542 |
switch (mode) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
543 |
case INITIAL_HANDSHAKE: |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
544 |
firstEngine = clientEngine; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
545 |
secondEngine = serverEngine; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
546 |
doUnwrapForNotHandshakingStatus = false; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
547 |
clientEngine.beginHandshake(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
548 |
serverEngine.beginHandshake(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
549 |
break; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
550 |
case REHANDSHAKE_BEGIN_CLIENT: |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
551 |
firstEngine = clientEngine; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
552 |
secondEngine = serverEngine; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
553 |
doUnwrapForNotHandshakingStatus = true; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
554 |
clientEngine.beginHandshake(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
555 |
break; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
556 |
case REHANDSHAKE_BEGIN_SERVER: |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
557 |
firstEngine = serverEngine; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
558 |
secondEngine = clientEngine; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
559 |
doUnwrapForNotHandshakingStatus = true; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
560 |
serverEngine.beginHandshake(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
561 |
break; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
562 |
default: |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
563 |
throw new Error("Test issue: unknown handshake mode"); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
564 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
565 |
endHandshakeLoop = false; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
566 |
while (!endHandshakeLoop) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
567 |
if (++loop > MAX_HANDSHAKE_LOOPS) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
568 |
throw new Error("Too much loops for handshaking"); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
569 |
} |
41820 | 570 |
System.out.println("============================================"); |
571 |
System.out.println("Handshake loop " + loop + ": round 1"); |
|
572 |
System.out.println("=========================="); |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
573 |
handshakeProcess(firstEngine, secondEngine, maxPacketSize, |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
574 |
enableReplicatedPacks); |
41820 | 575 |
if (endHandshakeLoop) { |
576 |
break; |
|
577 |
} |
|
578 |
System.out.println("Handshake loop " + loop + ": round 2"); |
|
579 |
System.out.println("=========================="); |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
580 |
handshakeProcess(secondEngine, firstEngine, maxPacketSize, |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
581 |
enableReplicatedPacks); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
582 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
583 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
584 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
585 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
586 |
* Routine to send application data from one SSLEngine to another. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
587 |
* |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
588 |
* @param fromEngine - Sending engine. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
589 |
* @param toEngine - Receiving engine. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
590 |
* @return - Result of unwrap method of the receiving engine. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
591 |
* @throws SSLException - thrown on engine errors. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
592 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
593 |
public static SSLEngineResult sendApplicationData(SSLEngine fromEngine, |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
594 |
SSLEngine toEngine) |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
595 |
throws SSLException { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
596 |
String sender = null; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
597 |
String reciever = null; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
598 |
String excMsgSent = EXCHANGE_MSG_SENT; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
599 |
if (fromEngine.getUseClientMode() && !toEngine.getUseClientMode()) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
600 |
sender = "Client"; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
601 |
reciever = "Server"; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
602 |
excMsgSent += " Client."; |
41820 | 603 |
} else if (toEngine.getUseClientMode() && |
604 |
!fromEngine.getUseClientMode()) { |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
605 |
sender = "Server"; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
606 |
reciever = "Client"; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
607 |
excMsgSent += " Server."; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
608 |
} else { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
609 |
throw new Error("Test issue: both engines are in the same mode"); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
610 |
} |
41820 | 611 |
System.out.println("============================================="); |
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
612 |
System.out.println("Trying to send application data from " + sender |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
613 |
+ " to " + reciever); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
614 |
ByteBuffer clientAppSent |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
615 |
= ByteBuffer.wrap(excMsgSent.getBytes()); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
616 |
net = doWrap(fromEngine, sender, 0, clientAppSent); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
617 |
SSLEngineResult[] r = new SSLEngineResult[1]; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
618 |
ByteBuffer serverAppRecv = doUnWrap(toEngine, reciever, net, r); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
619 |
byte[] serverAppRecvTrunc = Arrays.copyOf(serverAppRecv.array(), |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
620 |
serverAppRecv.limit()); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
621 |
String msgRecv = new String(serverAppRecvTrunc); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
622 |
if (!msgRecv.equals(excMsgSent)) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
623 |
throw new AssertionError(sender + " to " + reciever |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
624 |
+ ": application data" |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
625 |
+ " has been altered while sending." |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
626 |
+ " Message sent: " + "\"" + excMsgSent + "\"." |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
627 |
+ " Message recieved: " + "\"" + msgRecv + "\"."); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
628 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
629 |
System.out.println("Successful sending application data from " + sender |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
630 |
+ " to " + reciever); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
631 |
return r[0]; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
632 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
633 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
634 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
635 |
* Close engines by sending "close outbound" message from one SSLEngine to |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
636 |
* another. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
637 |
* |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
638 |
* @param fromEngine - Sending engine. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
639 |
* @param toEngine - Receiving engine. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
640 |
* @throws SSLException - thrown on engine errors. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
641 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
642 |
public static void closeEngines(SSLEngine fromEngine, |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
643 |
SSLEngine toEngine) throws SSLException { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
644 |
String from = null; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
645 |
String to = null; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
646 |
ByteBuffer app; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
647 |
if (fromEngine.getUseClientMode() && !toEngine.getUseClientMode()) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
648 |
from = "Client"; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
649 |
to = "Server"; |
41820 | 650 |
} else if (toEngine.getUseClientMode() && |
651 |
!fromEngine.getUseClientMode()) { |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
652 |
from = "Server"; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
653 |
to = "Client"; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
654 |
} else { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
655 |
throw new Error("Both engines are in the same mode"); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
656 |
} |
41820 | 657 |
System.out.println("============================================="); |
658 |
System.out.println( |
|
659 |
"Trying to close engines from " + from + " to " + to); |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
660 |
// Sending close outbound request to peer |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
661 |
fromEngine.closeOutbound(); |
41820 | 662 |
app = ByteBuffer.allocate( |
663 |
fromEngine.getSession().getApplicationBufferSize()); |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
664 |
net = doWrap(fromEngine, from, 0, app, SSLEngineResult.Status.CLOSED); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
665 |
doUnWrap(toEngine, to, net, SSLEngineResult.Status.CLOSED); |
41820 | 666 |
app = ByteBuffer.allocate( |
667 |
fromEngine.getSession().getApplicationBufferSize()); |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
668 |
net = doWrap(toEngine, to, 0, app, SSLEngineResult.Status.CLOSED); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
669 |
doUnWrap(fromEngine, from, net, SSLEngineResult.Status.CLOSED); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
670 |
if (!toEngine.isInboundDone()) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
671 |
throw new AssertionError(from + " sent close request to " + to |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
672 |
+ ", but " + to + "did not close inbound."); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
673 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
674 |
// Executing close inbound |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
675 |
fromEngine.closeInbound(); |
41820 | 676 |
app = ByteBuffer.allocate( |
677 |
fromEngine.getSession().getApplicationBufferSize()); |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
678 |
net = doWrap(fromEngine, from, 0, app, SSLEngineResult.Status.CLOSED); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
679 |
doUnWrap(toEngine, to, net, SSLEngineResult.Status.CLOSED); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
680 |
if (!toEngine.isOutboundDone()) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
681 |
throw new AssertionError(from + "sent close request to " + to |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
682 |
+ ", but " + to + "did not close outbound."); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
683 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
684 |
System.out.println("Successful closing from " + from + " to " + to); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
685 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
686 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
687 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
688 |
* Runs the same test case for all given {@code ciphers}. Method counts all |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
689 |
* failures and throws {@code AssertionError} if one or more tests fail. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
690 |
* |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
691 |
* @param ciphers - Ciphers that should be tested. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
692 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
693 |
public void runTests(Ciphers ciphers) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
694 |
int total = ciphers.ciphers.length; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
695 |
int failed = testSomeCiphers(ciphers); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
696 |
if (failed > 0) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
697 |
throw new AssertionError("" + failed + " of " + total |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
698 |
+ " tests failed!"); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
699 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
700 |
System.out.println("All tests passed!"); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
701 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
702 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
703 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
704 |
* Runs test cases for ciphers defined by the test mode. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
705 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
706 |
public void runTests() { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
707 |
switch (TEST_MODE) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
708 |
case "norm": |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
709 |
case "norm_sni": |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
710 |
switch (TESTED_SECURITY_PROTOCOL) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
711 |
case "DTLSv1.0": |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
712 |
case "TLSv1": |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
713 |
case "TLSv1.1": |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
714 |
runTests(Ciphers.SUPPORTED_NON_KRB_NON_SHA_CIPHERS); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
715 |
break; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
716 |
default: |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
717 |
runTests(Ciphers.SUPPORTED_NON_KRB_CIPHERS); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
718 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
719 |
break; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
720 |
case "krb": |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
721 |
runTests(Ciphers.SUPPORTED_KRB_CIPHERS); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
722 |
break; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
723 |
default: |
41820 | 724 |
throw new Error( |
725 |
"Test error: unexpected test mode: " + TEST_MODE); |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
726 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
727 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
728 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
729 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
730 |
* Returns maxPacketSize value used for MFLN extension testing |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
731 |
* |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
732 |
* @return - MLFN extension max packet size. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
733 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
734 |
public int getMaxPacketSize() { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
735 |
return maxPacketSize; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
736 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
737 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
738 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
739 |
* Checks that status of result {@code r} is {@code wantedStatus}. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
740 |
* |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
741 |
* @param r - Result. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
742 |
* @param wantedStatus - Wanted status of the result. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
743 |
* @throws AssertionError - if status or {@code r} is not |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
744 |
* {@code wantedStatus}. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
745 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
746 |
public static void checkResult(SSLEngineResult r, |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
747 |
SSLEngineResult.Status wantedStatus) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
748 |
SSLEngineResult.Status rs = r.getStatus(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
749 |
if (!rs.equals(wantedStatus)) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
750 |
throw new AssertionError("Unexpected status " + rs.name() |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
751 |
+ ", should be " + wantedStatus.name()); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
752 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
753 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
754 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
755 |
/** |
41820 | 756 |
* Returns SSLContext with TESTED_SECURITY_PROTOCOL protocol and |
757 |
* sets up keys. |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
758 |
* |
41820 | 759 |
* @return - SSLContext with a protocol specified by |
760 |
* TESTED_SECURITY_PROTOCOL. |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
761 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
762 |
public static SSLContext getContext() { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
763 |
try { |
41820 | 764 |
java.security.Security.setProperty( |
765 |
"jdk.tls.disabledAlgorithms", ""); |
|
766 |
java.security.Security.setProperty( |
|
767 |
"jdk.certpath.disabledAlgorithms", ""); |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
768 |
KeyStore ks = KeyStore.getInstance("JKS"); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
769 |
KeyStore ts = KeyStore.getInstance("JKS"); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
770 |
char[] passphrase = PASSWD.toCharArray(); |
41820 | 771 |
try (FileInputStream keyFileStream = |
772 |
new FileInputStream(KEY_FILE_NAME)) { |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
773 |
ks.load(keyFileStream, passphrase); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
774 |
} |
41820 | 775 |
try (FileInputStream trustFileStream = |
776 |
new FileInputStream(TRUST_FILE_NAME)) { |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
777 |
ts.load(trustFileStream, passphrase); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
778 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
779 |
KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509"); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
780 |
kmf.init(ks, passphrase); |
41820 | 781 |
TrustManagerFactory tmf = |
782 |
TrustManagerFactory.getInstance("SunX509"); |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
783 |
tmf.init(ts); |
41820 | 784 |
SSLContext sslCtx = |
785 |
SSLContext.getInstance(TESTED_SECURITY_PROTOCOL); |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
786 |
sslCtx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
787 |
return sslCtx; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
788 |
} catch (KeyStoreException | IOException | NoSuchAlgorithmException | |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
789 |
CertificateException | UnrecoverableKeyException | |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
790 |
KeyManagementException ex) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
791 |
throw new Error("Unexpected exception", ex); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
792 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
793 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
794 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
795 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
796 |
* Sets up and starts kerberos KDC server. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
797 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
798 |
public static void setUpAndStartKDC() { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
799 |
String servicePrincipal = "host/" + SERVER_NAME + "@" + KRB_REALM; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
800 |
Map<String, String> principals = new HashMap<>(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
801 |
principals.put(KRB_USER_PRINCIPAL, KRB_USER_PASSWORD); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
802 |
principals.put(KRBTGT_PRINCIPAL, null); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
803 |
principals.put(servicePrincipal, null); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
804 |
System.setProperty("java.security.krb5.conf", KRB5_CONF_FILENAME); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
805 |
startKDC(KRB_REALM, principals, KTAB_FILENAME); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
806 |
System.setProperty("java.security.auth.login.config", |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
807 |
TEST_SRC + FS + JAAS_CONF_FILE); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
808 |
System.setProperty("javax.security.auth.useSubjectCredsOnly", "false"); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
809 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
810 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
811 |
/** |
41820 | 812 |
* Sets up and starts kerberos KDC server if |
813 |
* SSLEngineTestCase.TEST_MODE is "krb". |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
814 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
815 |
public static void setUpAndStartKDCIfNeeded() { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
816 |
if (TEST_MODE.equals("krb")) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
817 |
setUpAndStartKDC(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
818 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
819 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
820 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
821 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
822 |
* Returns client ssl engine. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
823 |
* |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
824 |
* @param context - SSLContext to get SSLEngine from. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
825 |
* @param useSNI - flag used to enable or disable using SNI extension. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
826 |
* Needed for Kerberos. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
827 |
*/ |
41820 | 828 |
public static SSLEngine getClientSSLEngine( |
829 |
SSLContext context, boolean useSNI) { |
|
830 |
||
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
831 |
SSLEngine clientEngine = context.createSSLEngine(HOST, 80); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
832 |
clientEngine.setUseClientMode(true); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
833 |
if (useSNI) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
834 |
SNIHostName serverName = new SNIHostName(SERVER_NAME); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
835 |
List<SNIServerName> serverNames = new ArrayList<>(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
836 |
serverNames.add(serverName); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
837 |
SSLParameters params = clientEngine.getSSLParameters(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
838 |
params.setServerNames(serverNames); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
839 |
clientEngine.setSSLParameters(params); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
840 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
841 |
return clientEngine; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
842 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
843 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
844 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
845 |
* Returns server ssl engine. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
846 |
* |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
847 |
* @param context - SSLContext to get SSLEngine from. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
848 |
* @param useSNI - flag used to enable or disable using SNI extension. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
849 |
* Needed for Kerberos. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
850 |
*/ |
41820 | 851 |
public static SSLEngine getServerSSLEngine( |
852 |
SSLContext context, boolean useSNI) { |
|
853 |
||
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
854 |
SSLEngine serverEngine = context.createSSLEngine(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
855 |
serverEngine.setUseClientMode(false); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
856 |
if (useSNI) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
857 |
SNIMatcher matcher = SNIHostName.createSNIMatcher(SNI_PATTERN); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
858 |
List<SNIMatcher> matchers = new ArrayList<>(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
859 |
matchers.add(matcher); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
860 |
SSLParameters params = serverEngine.getSSLParameters(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
861 |
params.setSNIMatchers(matchers); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
862 |
serverEngine.setSSLParameters(params); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
863 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
864 |
return serverEngine; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
865 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
866 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
867 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
868 |
* Runs the test case for one cipher suite. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
869 |
* |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
870 |
* @param cipher - Cipher suite name. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
871 |
* @throws SSLException - If tests fails. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
872 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
873 |
abstract protected void testOneCipher(String cipher) |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
874 |
throws SSLException; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
875 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
876 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
877 |
* Iterates through an array of ciphers and runs the same test case for |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
878 |
* every entry. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
879 |
* |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
880 |
* @param ciphers - Array of cipher names. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
881 |
* @return - Number of tests failed. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
882 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
883 |
protected int testSomeCiphers(Ciphers ciphers) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
884 |
int failedNum = 0; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
885 |
String description = ciphers.description; |
41820 | 886 |
System.out.println("==============================================="); |
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
887 |
System.out.println(description + " ciphers testing"); |
41820 | 888 |
System.out.println("==========================================="); |
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
889 |
for (String cs : ciphers.ciphers) { |
41820 | 890 |
System.out.println("---------------------------------------"); |
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
891 |
System.out.println("Testing cipher suite " + cs); |
41820 | 892 |
System.out.println("---------------------------------------"); |
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
893 |
Throwable error = null; |
41820 | 894 |
|
895 |
// Reset global mutable static variables |
|
896 |
net = null; |
|
897 |
doUnwrapForNotHandshakingStatus = false; |
|
898 |
endHandshakeLoop = false; |
|
899 |
||
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
900 |
try { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
901 |
testOneCipher(cs); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
902 |
} catch (Throwable t) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
903 |
error = t; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
904 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
905 |
switch (ciphers) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
906 |
case SUPPORTED_NON_KRB_CIPHERS: |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
907 |
case SUPPORTED_NON_KRB_NON_SHA_CIPHERS: |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
908 |
case SUPPORTED_KRB_CIPHERS: |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
909 |
case ENABLED_NON_KRB_NOT_ANON_CIPHERS: |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
910 |
if (error != null) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
911 |
System.out.println("Test Failed: " + cs); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
912 |
System.err.println("Test Exception for " + cs); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
913 |
error.printStackTrace(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
914 |
failedNum++; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
915 |
} else { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
916 |
System.out.println("Test Passed: " + cs); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
917 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
918 |
break; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
919 |
case UNSUPPORTED_CIPHERS: |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
920 |
if (error == null) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
921 |
System.out.println("Test Failed: " + cs); |
41820 | 922 |
System.err.println("Test for " + cs + |
923 |
" should have thrown " + |
|
924 |
"IllegalArgumentException, but it has not!"); |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
925 |
failedNum++; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
926 |
} else if (!(error instanceof IllegalArgumentException)) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
927 |
System.out.println("Test Failed: " + cs); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
928 |
System.err.println("Test Exception for " + cs); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
929 |
error.printStackTrace(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
930 |
failedNum++; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
931 |
} else { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
932 |
System.out.println("Test Passed: " + cs); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
933 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
934 |
break; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
935 |
default: |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
936 |
throw new Error("Test issue: unexpected ciphers: " |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
937 |
+ ciphers.name()); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
938 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
939 |
} |
41820 | 940 |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
941 |
return failedNum; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
942 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
943 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
944 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
945 |
* Method used for the handshake routine. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
946 |
* |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
947 |
* @param wrapingEngine - Engine that is expected to wrap data. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
948 |
* @param unwrapingEngine - Engine that is expected to unwrap data. |
41820 | 949 |
* @param maxPacketSize - Maximum packet size for MFLN of zero |
950 |
* for no limit. |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
951 |
* @param enableReplicatedPacks - Set {@code true} to enable replicated |
41820 | 952 |
* packet sending. |
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
953 |
* @throws SSLException - thrown on engine errors. |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
954 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
955 |
private static void handshakeProcess(SSLEngine wrapingEngine, |
41820 | 956 |
SSLEngine unwrapingEngine, |
957 |
int maxPacketSize, |
|
958 |
boolean enableReplicatedPacks) throws SSLException { |
|
959 |
||
960 |
HandshakeStatus wrapingHSStatus = wrapingEngine.getHandshakeStatus(); |
|
961 |
HandshakeStatus unwrapingHSStatus = |
|
962 |
unwrapingEngine.getHandshakeStatus(); |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
963 |
SSLEngineResult r; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
964 |
String wrapper, unwrapper; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
965 |
if (wrapingEngine.getUseClientMode() |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
966 |
&& !unwrapingEngine.getUseClientMode()) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
967 |
wrapper = "Client"; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
968 |
unwrapper = "Server"; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
969 |
} else if (unwrapingEngine.getUseClientMode() |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
970 |
&& !wrapingEngine.getUseClientMode()) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
971 |
wrapper = "Server"; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
972 |
unwrapper = "Client"; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
973 |
} else { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
974 |
throw new Error("Both engines are in the same mode"); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
975 |
} |
41820 | 976 |
System.out.println( |
977 |
wrapper + " handshake (wrap) status " + wrapingHSStatus); |
|
978 |
System.out.println( |
|
979 |
unwrapper + " handshake (unwrap) status " + unwrapingHSStatus); |
|
980 |
||
981 |
ByteBuffer netReplicatedClient = null; |
|
982 |
ByteBuffer netReplicatedServer = null; |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
983 |
switch (wrapingHSStatus) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
984 |
case NEED_WRAP: |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
985 |
if (enableReplicatedPacks) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
986 |
if (net != null) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
987 |
net.flip(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
988 |
if (net.remaining() != 0) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
989 |
if (wrapingEngine.getUseClientMode()) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
990 |
netReplicatedServer = net; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
991 |
} else { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
992 |
netReplicatedClient = net; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
993 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
994 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
995 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
996 |
} |
41820 | 997 |
ByteBuffer app = ByteBuffer.allocate( |
998 |
wrapingEngine.getSession().getApplicationBufferSize()); |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
999 |
net = doWrap(wrapingEngine, wrapper, maxPacketSize, app); |
41820 | 1000 |
wrapingHSStatus = wrapingEngine.getHandshakeStatus(); |
1001 |
// No break, falling into unwrapping. |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1002 |
case NOT_HANDSHAKING: |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1003 |
switch (unwrapingHSStatus) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1004 |
case NEED_TASK: |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1005 |
runDelegatedTasks(unwrapingEngine); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1006 |
case NEED_UNWRAP: |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1007 |
doUnWrap(unwrapingEngine, unwrapper, net); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1008 |
if (enableReplicatedPacks) { |
41820 | 1009 |
System.out.println(unwrapper + |
1010 |
" unwrapping replicated packet..."); |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1011 |
if (unwrapingEngine.getHandshakeStatus() |
41820 | 1012 |
.equals(HandshakeStatus.NEED_TASK)) { |
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1013 |
runDelegatedTasks(unwrapingEngine); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1014 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1015 |
ByteBuffer netReplicated; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1016 |
if (unwrapingEngine.getUseClientMode()) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1017 |
netReplicated = netReplicatedClient; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1018 |
} else { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1019 |
netReplicated = netReplicatedServer; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1020 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1021 |
if (netReplicated != null) { |
41820 | 1022 |
doUnWrap(unwrapingEngine, |
1023 |
unwrapper, netReplicated); |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1024 |
} else { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1025 |
net.flip(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1026 |
doUnWrap(unwrapingEngine, unwrapper, net); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1027 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1028 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1029 |
break; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1030 |
case NEED_UNWRAP_AGAIN: |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1031 |
break; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1032 |
case NOT_HANDSHAKING: |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1033 |
if (doUnwrapForNotHandshakingStatus) { |
41820 | 1034 |
System.out.println("Not handshake status unwrap"); |
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1035 |
doUnWrap(unwrapingEngine, unwrapper, net); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1036 |
doUnwrapForNotHandshakingStatus = false; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1037 |
break; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1038 |
} else { |
41820 | 1039 |
if (wrapingHSStatus == |
1040 |
HandshakeStatus.NOT_HANDSHAKING) { |
|
1041 |
System.out.println("Handshake is completed"); |
|
1042 |
endHandshakeLoop = true; |
|
1043 |
} |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1044 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1045 |
break; |
41820 | 1046 |
case NEED_WRAP: |
1047 |
SSLSession session = unwrapingEngine.getSession(); |
|
1048 |
int bufferSize = session.getApplicationBufferSize(); |
|
1049 |
ByteBuffer b = ByteBuffer.allocate(bufferSize); |
|
1050 |
net = doWrap(unwrapingEngine, |
|
1051 |
unwrapper, maxPacketSize, b); |
|
1052 |
unwrapingHSStatus = |
|
1053 |
unwrapingEngine.getHandshakeStatus(); |
|
1054 |
if ((wrapingHSStatus == |
|
1055 |
HandshakeStatus.NOT_HANDSHAKING) && |
|
1056 |
(unwrapingHSStatus == |
|
1057 |
HandshakeStatus.NOT_HANDSHAKING)) { |
|
1058 |
||
1059 |
System.out.println("Handshake is completed"); |
|
1060 |
endHandshakeLoop = true; |
|
1061 |
} |
|
1062 |
||
1063 |
break; |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1064 |
default: |
41820 | 1065 |
throw new Error( |
1066 |
"Unexpected unwraping engine handshake status " |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1067 |
+ unwrapingHSStatus.name()); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1068 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1069 |
break; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1070 |
case NEED_UNWRAP: |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1071 |
break; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1072 |
case NEED_UNWRAP_AGAIN: |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1073 |
net.flip(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1074 |
doUnWrap(wrapingEngine, wrapper, net); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1075 |
break; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1076 |
case NEED_TASK: |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1077 |
runDelegatedTasks(wrapingEngine); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1078 |
break; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1079 |
default: |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1080 |
throw new Error("Unexpected wraping engine handshake status " |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1081 |
+ wrapingHSStatus.name()); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1082 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1083 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1084 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1085 |
private static void runDelegatedTasks(SSLEngine engine) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1086 |
Runnable runnable; |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1087 |
System.out.println("Running delegated tasks..."); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1088 |
while ((runnable = engine.getDelegatedTask()) != null) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1089 |
runnable.run(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1090 |
} |
41820 | 1091 |
HandshakeStatus hs = engine.getHandshakeStatus(); |
1092 |
if (hs == HandshakeStatus.NEED_TASK) { |
|
31057
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1093 |
throw new Error("Handshake shouldn't need additional tasks."); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1094 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1095 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1096 |
|
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1097 |
/** |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1098 |
* Start a KDC server: |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1099 |
* - create a KDC instance |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1100 |
* - create Kerberos principals |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1101 |
* - save Kerberos configuration |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1102 |
* - save keys to keytab file |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1103 |
* - no pre-auth is required |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1104 |
*/ |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1105 |
private static void startKDC(String realm, Map<String, String> principals, |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1106 |
String ktab) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1107 |
try { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1108 |
KDC kdc = KDC.create(realm, HOST, 0, true); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1109 |
kdc.setOption(KDC.Option.PREAUTH_REQUIRED, Boolean.FALSE); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1110 |
if (principals != null) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1111 |
principals.entrySet().stream().forEach((entry) -> { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1112 |
String name = entry.getKey(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1113 |
String password = entry.getValue(); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1114 |
if (password == null || password.isEmpty()) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1115 |
System.out.println("KDC: add a principal '" + name |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1116 |
+ "' with a random password"); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1117 |
kdc.addPrincipalRandKey(name); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1118 |
} else { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1119 |
System.out.println("KDC: add a principal '" + name |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1120 |
+ "' with '" + password + "' password"); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1121 |
kdc.addPrincipal(name, password.toCharArray()); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1122 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1123 |
}); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1124 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1125 |
KDC.saveConfig(KRB5_CONF_FILENAME, kdc); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1126 |
if (ktab != null) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1127 |
File ktabFile = new File(ktab); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1128 |
if (ktabFile.exists()) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1129 |
System.out.println("KDC: append keys to an exising " |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1130 |
+ "keytab file " + ktab); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1131 |
kdc.appendKtab(ktab); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1132 |
} else { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1133 |
System.out.println("KDC: create a new keytab file " |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1134 |
+ ktab); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1135 |
kdc.writeKtab(ktab); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1136 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1137 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1138 |
System.out.println("KDC: started on " + HOST + ":" + kdc.getPort() |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1139 |
+ " with '" + realm + "' realm"); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1140 |
} catch (Exception e) { |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1141 |
throw new RuntimeException("KDC: unexpected exception", e); |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1142 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1143 |
} |
babdeee3c007
8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff
changeset
|
1144 |
} |