test/jdk/javax/net/ssl/TLSCommon/SSLEngineTestCase.java
author wetmore
Fri, 11 May 2018 15:53:12 -0700
branchJDK-8145252-TLS13-branch
changeset 56542 56aaa6cb3693
parent 47216 71c04702a3d5
child 56573 4a53dd94403e
permissions -rw-r--r--
Initial TLSv1.3 Implementation
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
     1
/*
56542
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
     2
 * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
31057
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
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
    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
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
    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
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
    62
         * Ciphers supported by the tested SSLEngine without those with
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
    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
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
    68
         * Ciphers supported by the tested SSLEngine without those with
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
    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
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
    71
        SUPPORTED_NON_KRB_NON_SHA_CIPHERS(
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
    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
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
    75
         * Ciphers supported by the tested SSLEngine with kerberos
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
    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
        /**
56542
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
    88
         * Ciphers supported by TLS 1.3 only.
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
    89
         */
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
    90
        TLS13_CIPHERS(
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
    91
                SSLEngineTestCase.TLS13_CIPHERS,
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
    92
                "Supported by TLS 1.3 only"),
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
    93
        /**
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
    94
         * 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
    95
         */
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
    96
        UNSUPPORTED_CIPHERS(SSLEngineTestCase.UNSUPPORTED_CIPHERS,
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
    97
                "Unsupported");
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
    98
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
    99
        Ciphers(String[] ciphers, String description) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   100
            this.ciphers = ciphers;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   101
            this.description = description;
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
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   104
        final String[] ciphers;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   105
        final String description;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   106
    }
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
    /**
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   109
     * 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
   110
     * {@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
   111
     * 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
   112
     * SSLEngineTestCase.doHandshake} 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
    public enum HandshakeMode {
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
        /**
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   117
         * 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
   118
         * {@link SSLEngine#beginHandshake()} method.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   119
         */
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   120
        INITIAL_HANDSHAKE,
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   121
        /**
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   122
         * 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
   123
         * {@link SSLEngine#beginHandshake()} method.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   124
         */
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   125
        REHANDSHAKE_BEGIN_CLIENT,
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
         * 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
   128
         * {@link SSLEngine#beginHandshake()} method.
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
        REHANDSHAKE_BEGIN_SERVER;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   131
    }
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
     * 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
   134
     * 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
   135
     */
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   136
    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
   137
            = 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
   138
    /**
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   139
     * 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
   140
     * 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
   141
     * 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
   142
     * 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
   143
     */
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   144
    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
   145
            = System.getProperty("test.mode", "norm");
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 FS = System.getProperty("file.separator", "/");
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   148
    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
   149
    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
   150
    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
   151
    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
   152
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   153
    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
   154
            = 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
   155
            + FS + KEY_STORE_FILE;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   156
    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
   157
            = 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
   158
            + FS + TRUST_STORE_FILE;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   159
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   160
    // 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
   161
    private static ByteBuffer net;
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   162
    private static boolean doUnwrapForNotHandshakingStatus;
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   163
    private static boolean endHandshakeLoop = false;
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   164
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   165
    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
   166
    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
   167
    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
   168
    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
   169
    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
   170
    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
   171
    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
   172
    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
   173
    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
   174
    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
   175
    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
   176
    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
   177
            + FS + "jaas.conf";
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   178
    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
   179
    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
   180
    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
   181
    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
   182
56542
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   183
    private static final String[] TLS13_CIPHERS = {
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   184
            "TLS_AES_256_GCM_SHA384",
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   185
            "TLS_AES_128_GCM_SHA256"
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   186
    };
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   187
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   188
    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
   189
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   190
    static {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   191
        try {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   192
            String[] allSupportedCiphers = getContext()
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   193
                    .createSSLEngine().getSupportedCipherSuites();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   194
            List<String> supportedCiphersList = new LinkedList<>();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   195
            for (String cipher : allSupportedCiphers) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   196
                if (!cipher.contains("KRB5")
56542
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   197
                        && !isTLS13Cipher(cipher)
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   198
                        && !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
   199
                    supportedCiphersList.add(cipher);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   200
                }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   201
            }
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   202
            SUPPORTED_NON_KRB_CIPHERS =
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   203
                    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
   204
        } catch (Exception ex) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   205
            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
   206
        }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   207
    }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   208
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   209
    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
   210
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   211
    static {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   212
        try {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   213
            String[] allSupportedCiphers = getContext()
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   214
                    .createSSLEngine().getSupportedCipherSuites();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   215
            List<String> supportedCiphersList = new LinkedList<>();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   216
            for (String cipher : allSupportedCiphers) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   217
                if (!cipher.contains("KRB5")
56542
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   218
                        && !isTLS13Cipher(cipher)
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   219
                        && !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
   220
                        && !cipher.endsWith("_SHA256")
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   221
                        && !cipher.endsWith("_SHA384")) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   222
                    supportedCiphersList.add(cipher);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   223
                }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   224
            }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   225
            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
   226
                    = supportedCiphersList.toArray(new String[0]);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   227
        } catch (Exception ex) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   228
            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
   229
        }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   230
    }
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
    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
   233
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   234
    static {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   235
        try {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   236
            String[] allSupportedCiphers = getContext()
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   237
                    .createSSLEngine().getSupportedCipherSuites();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   238
            List<String> supportedCiphersList = new LinkedList<>();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   239
            for (String cipher : allSupportedCiphers) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   240
                if (cipher.contains("KRB5")
56542
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   241
                        && !isTLS13Cipher(cipher)
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   242
                        && !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
   243
                    supportedCiphersList.add(cipher);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   244
                }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   245
            }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   246
            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
   247
        } catch (Exception ex) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   248
            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
   249
        }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   250
    }
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
    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
   253
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   254
    static {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   255
        try {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   256
            SSLEngine temporary = getContext().createSSLEngine();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   257
            temporary.setUseClientMode(true);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   258
            String[] enabledCiphers = temporary.getEnabledCipherSuites();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   259
            List<String> enabledCiphersList = new LinkedList<>();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   260
            for (String cipher : enabledCiphers) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   261
                if (!cipher.contains("anon") && !cipher.contains("KRB5")
56542
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   262
                        && !isTLS13Cipher(cipher)
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   263
                        && !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
   264
                    enabledCiphersList.add(cipher);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   265
                }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   266
            }
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   267
            ENABLED_NON_KRB_NOT_ANON_CIPHERS =
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   268
                    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
   269
        } catch (Exception ex) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   270
            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
   271
        }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   272
    }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   273
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   274
    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
   275
            "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
   276
            "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
   277
            "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
   278
            "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
   279
            "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
   280
            "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
   281
            "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
   282
            "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
   283
            "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
   284
            "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
   285
            "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
   286
            "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
   287
            "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
   288
            "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
   289
            "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
   290
            "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
   291
            "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
   292
            "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
   293
            "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
   294
            "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
   295
            "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
   296
            "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
   297
            "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
   298
            "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
   299
            "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
   300
    };
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
    private final int maxPacketSize;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   303
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
     * 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
   306
     *
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   307
     * @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
   308
     */
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   309
    public SSLEngineTestCase(int maxPacketSize) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   310
        this.maxPacketSize = maxPacketSize;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   311
    }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   312
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   313
    /**
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   314
     * 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
   315
     */
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   316
    public SSLEngineTestCase() {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   317
        this.maxPacketSize = 0;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   318
    }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   319
56542
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   320
    private static boolean isTLS13Cipher(String cipher) {
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   321
        for (String cipherSuite : TLS13_CIPHERS) {
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   322
            if (cipherSuite.equals(cipher)) {
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   323
                return true;
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   324
            }
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   325
        }
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   326
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   327
        return false;
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   328
    }
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   329
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   330
    /**
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   331
     * 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
   332
     *
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   333
     * @param engine        - SSLEngine that wraps data.
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   334
     * @param wrapper       - Set wrapper id, e.g. "server" of "client".
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   335
     *                        Used for logging only.
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   336
     * @param maxPacketSize - Max packet size to check that MFLN extension
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   337
     *                        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
   338
     * @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
   339
     * @return - Buffer with wrapped data.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   340
     * @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
   341
     */
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   342
    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
   343
                                    int maxPacketSize, ByteBuffer app)
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   344
            throws SSLException {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   345
        return doWrap(engine, wrapper, maxPacketSize,
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   346
                app, SSLEngineResult.Status.OK, null);
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
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
     * 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
   351
     *
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   352
     * @param engine        - SSLEngine that wraps data.
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   353
     * @param wrapper       - Set wrapper id, e.g. "server" of "client".
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   354
     *                        Used for logging only.
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   355
     * @param maxPacketSize - Max packet size to check that MFLN extension
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   356
     *                        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
   357
     * @param app           - Buffer with data to wrap.
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   358
     * @param result        - Array which first element will be used to
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   359
     *                        output wrap result object.
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   360
     * @return - Buffer with wrapped data.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   361
     * @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
   362
     */
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   363
    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
   364
                                    int maxPacketSize, ByteBuffer app,
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   365
                                    SSLEngineResult[] result)
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   366
            throws SSLException {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   367
        return doWrap(engine, wrapper, maxPacketSize,
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   368
                app, SSLEngineResult.Status.OK, result);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   369
    }
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
    /**
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   372
     * 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
   373
     *
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   374
     * @param engine        - SSLEngine that wraps data.
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   375
     * @param wrapper       - Set wrapper id, e.g. "server" of "client".
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   376
     *                        Used for logging only.
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   377
     * @param maxPacketSize - Max packet size to check that MFLN extension
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   378
     *                        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
   379
     * @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
   380
     * @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
   381
     * @return - Buffer with wrapped data.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   382
     * @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
   383
     */
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   384
    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
   385
                                    int maxPacketSize, ByteBuffer app,
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   386
                                    SSLEngineResult.Status wantedStatus)
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
        return doWrap(engine, wrapper, maxPacketSize,
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   389
                app, wantedStatus, null);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   390
    }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   391
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   392
    /**
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   393
     * 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
   394
     *
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   395
     * @param engine        - SSLEngine that wraps data.
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   396
     * @param wrapper       - Set wrapper id, e.g. "server" of "client".
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   397
     *                        Used for logging only.
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   398
     * @param maxPacketSize - Max packet size to check that MFLN extension
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   399
     *                        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
   400
     * @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
   401
     * @param wantedStatus  - Specifies expected result status of wrapping.
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   402
     * @param result        - Array which first element will be used to output
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   403
     *                        wrap result object.
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   404
     * @return - Buffer with wrapped data.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   405
     * @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
   406
     */
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   407
    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
   408
                                    int maxPacketSize, ByteBuffer app,
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   409
                                    SSLEngineResult.Status wantedStatus,
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   410
                                    SSLEngineResult[] result)
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   411
            throws SSLException {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   412
        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
   413
                .getPacketBufferSize());
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   414
        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
   415
        net.flip();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   416
        int length = net.remaining();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   417
        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
   418
        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
   419
                + engine.getHandshakeStatus());
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   420
        if (maxPacketSize < length && maxPacketSize != 0) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   421
            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
   422
                    + length + " exceeds maximum packet size "
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   423
                    + maxPacketSize);
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
        checkResult(r, wantedStatus);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   426
        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
   427
            result[0] = r;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   428
        }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   429
        return net;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   430
    }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   431
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   432
    /**
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   433
     * 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
   434
     *
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   435
     * @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
   436
     * @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
   437
     *                  logging only.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   438
     * @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
   439
     * @return - Buffer with unwrapped data.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   440
     * @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
   441
     */
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   442
    public static ByteBuffer doUnWrap(SSLEngine engine, String unwrapper,
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   443
            ByteBuffer net) throws SSLException {
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   444
        return doUnWrap(engine, unwrapper,
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   445
                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
   446
    }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   447
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   448
    /**
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   449
     * 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
   450
     *
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   451
     * @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
   452
     * @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
   453
     *                  logging only.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   454
     * @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
   455
     * @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
   456
     *                  result object.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   457
     * @return - Buffer with unwrapped data.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   458
     * @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
   459
     */
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   460
    public static ByteBuffer doUnWrap(SSLEngine engine, String unwrapper,
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   461
            ByteBuffer net, SSLEngineResult[] result) throws SSLException {
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   462
        return doUnWrap(engine, unwrapper,
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   463
                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
   464
    }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   465
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   466
    /**
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   467
     * 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
   468
     *
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   469
     * @param engine       - SSLEngine that unwraps data.
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   470
     * @param unwrapper    - Set unwrapper id, e.g. "server" of "client".
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   471
     *                     Used for logging only.
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   472
     * @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
   473
     * @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
   474
     * @return - Buffer with unwrapped data.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   475
     * @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
   476
     */
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   477
    public static ByteBuffer doUnWrap(SSLEngine engine, String unwrapper,
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   478
            ByteBuffer net,
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   479
            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
   480
        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
   481
    }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   482
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   483
    /**
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   484
     * 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
   485
     *
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   486
     * @param engine       - SSLEngine that unwraps data.
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   487
     * @param unwrapper    - Set unwrapper id, e.g. "server" of "client".
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   488
     *                       Used for logging only.
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   489
     * @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
   490
     * @param wantedStatus - Specifies expected result status of wrapping.
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   491
     * @param result       - Array which first element will be used to output
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   492
     *                       wrap result object.
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   493
     * @return - Buffer with unwrapped data.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   494
     * @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
   495
     */
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   496
    public static ByteBuffer doUnWrap(SSLEngine engine, String unwrapper,
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   497
            ByteBuffer net, SSLEngineResult.Status wantedStatus,
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   498
            SSLEngineResult[] result) throws SSLException {
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   499
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   500
        ByteBuffer app = ByteBuffer.allocate(
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   501
                engine.getSession().getApplicationBufferSize());
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   502
        int length = net.remaining();
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   503
        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
   504
        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
   505
        app.flip();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   506
        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
   507
                + engine.getHandshakeStatus());
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   508
        checkResult(r, wantedStatus);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   509
        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
   510
            result[0] = r;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   511
        }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   512
        return app;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   513
    }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   514
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   515
    /**
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   516
     * 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
   517
     * {@code mode} specified.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   518
     *
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   519
     * @param clientEngine  - Client SSLEngine.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   520
     * @param serverEngine  - Server SSLEngine.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   521
     * @param maxPacketSize - Maximum packet size for MFLN of zero for no limit.
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   522
     * @param mode          - Handshake mode according to
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   523
     *                        {@link HandshakeMode} enum.
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   524
     * @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
   525
     */
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   526
    public static void doHandshake(SSLEngine clientEngine,
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   527
        SSLEngine serverEngine,
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   528
        int maxPacketSize, HandshakeMode mode) throws SSLException {
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   529
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   530
        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
   531
    }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   532
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
     * 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
   535
     * {@code mode} specified.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   536
     *
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   537
     * @param clientEngine          - Client SSLEngine.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   538
     * @param serverEngine          - Server SSLEngine.
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   539
     * @param maxPacketSize         - Maximum packet size for MFLN of zero
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   540
     *                                for no limit.
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   541
     * @param mode                  - Handshake mode according to
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   542
     *                                {@link HandshakeMode} enum.
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   543
     * @param enableReplicatedPacks - Set {@code true} to enable replicated
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   544
     *                                packet sending.
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   545
     * @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
   546
     */
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   547
    public static void doHandshake(SSLEngine clientEngine,
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   548
            SSLEngine serverEngine, int maxPacketSize,
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   549
            HandshakeMode mode,
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   550
            boolean enableReplicatedPacks) throws SSLException {
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   551
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   552
        System.out.println("=============================================");
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   553
        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
   554
        int loop = 0;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   555
        if (maxPacketSize < 0) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   556
            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
   557
        }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   558
        SSLParameters params = clientEngine.getSSLParameters();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   559
        params.setMaximumPacketSize(maxPacketSize);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   560
        clientEngine.setSSLParameters(params);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   561
        params = serverEngine.getSSLParameters();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   562
        params.setMaximumPacketSize(maxPacketSize);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   563
        serverEngine.setSSLParameters(params);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   564
        SSLEngine firstEngine;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   565
        SSLEngine secondEngine;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   566
        switch (mode) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   567
            case INITIAL_HANDSHAKE:
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   568
                firstEngine = clientEngine;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   569
                secondEngine = serverEngine;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   570
                doUnwrapForNotHandshakingStatus = false;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   571
                clientEngine.beginHandshake();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   572
                serverEngine.beginHandshake();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   573
                break;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   574
            case REHANDSHAKE_BEGIN_CLIENT:
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   575
                firstEngine = clientEngine;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   576
                secondEngine = serverEngine;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   577
                doUnwrapForNotHandshakingStatus = true;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   578
                clientEngine.beginHandshake();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   579
                break;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   580
            case REHANDSHAKE_BEGIN_SERVER:
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   581
                firstEngine = serverEngine;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   582
                secondEngine = clientEngine;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   583
                doUnwrapForNotHandshakingStatus = true;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   584
                serverEngine.beginHandshake();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   585
                break;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   586
            default:
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   587
                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
   588
        }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   589
        endHandshakeLoop = false;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   590
        while (!endHandshakeLoop) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   591
            if (++loop > MAX_HANDSHAKE_LOOPS) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   592
                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
   593
            }
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   594
            System.out.println("============================================");
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   595
            System.out.println("Handshake loop " + loop + ": round 1");
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   596
            System.out.println("==========================");
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   597
            handshakeProcess(firstEngine, secondEngine, maxPacketSize,
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   598
                    enableReplicatedPacks);
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   599
            if (endHandshakeLoop) {
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   600
                break;
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   601
            }
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   602
            System.out.println("Handshake loop " + loop + ": round 2");
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   603
            System.out.println("==========================");
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   604
            handshakeProcess(secondEngine, firstEngine, maxPacketSize,
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   605
                    enableReplicatedPacks);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   606
        }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   607
    }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   608
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   609
    /**
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   610
     * 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
   611
     *
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   612
     * @param fromEngine - Sending engine.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   613
     * @param toEngine   - Receiving engine.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   614
     * @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
   615
     * @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
   616
     */
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   617
    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
   618
                                                      SSLEngine toEngine)
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   619
            throws SSLException {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   620
        String sender = null;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   621
        String reciever = null;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   622
        String excMsgSent = EXCHANGE_MSG_SENT;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   623
        if (fromEngine.getUseClientMode() && !toEngine.getUseClientMode()) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   624
            sender = "Client";
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   625
            reciever = "Server";
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   626
            excMsgSent += " Client.";
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   627
        } else if (toEngine.getUseClientMode() &&
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   628
                !fromEngine.getUseClientMode()) {
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   629
            sender = "Server";
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   630
            reciever = "Client";
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   631
            excMsgSent += " Server.";
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   632
        } else {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   633
            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
   634
        }
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   635
        System.out.println("=============================================");
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   636
        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
   637
                + " to " + reciever);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   638
        ByteBuffer clientAppSent
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   639
                = ByteBuffer.wrap(excMsgSent.getBytes());
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   640
        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
   641
        SSLEngineResult[] r = new SSLEngineResult[1];
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   642
        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
   643
        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
   644
                serverAppRecv.limit());
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   645
        String msgRecv = new String(serverAppRecvTrunc);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   646
        if (!msgRecv.equals(excMsgSent)) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   647
            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
   648
                    + ": application data"
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   649
                    + " has been altered while sending."
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   650
                    + " Message sent: " + "\"" + excMsgSent + "\"."
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   651
                    + " Message recieved: " + "\"" + msgRecv + "\".");
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   652
        }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   653
        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
   654
                + " to " + reciever);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   655
        return r[0];
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   656
    }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   657
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   658
    /**
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   659
     * 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
   660
     * another.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   661
     *
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   662
     * @param fromEngine - Sending engine.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   663
     * @param toEngine   - Receiving engine.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   664
     * @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
   665
     */
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   666
    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
   667
                                    SSLEngine toEngine) throws SSLException {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   668
        String from = null;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   669
        String to = null;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   670
        ByteBuffer app;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   671
        if (fromEngine.getUseClientMode() && !toEngine.getUseClientMode()) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   672
            from = "Client";
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   673
            to = "Server";
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   674
        } else if (toEngine.getUseClientMode() &&
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   675
                !fromEngine.getUseClientMode()) {
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   676
            from = "Server";
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   677
            to = "Client";
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   678
        } else {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   679
            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
   680
        }
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   681
        System.out.println("=============================================");
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   682
        System.out.println(
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   683
                "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
   684
        // 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
   685
        fromEngine.closeOutbound();
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   686
        app = ByteBuffer.allocate(
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   687
                fromEngine.getSession().getApplicationBufferSize());
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   688
        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
   689
        doUnWrap(toEngine, to, net, SSLEngineResult.Status.CLOSED);
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   690
        app = ByteBuffer.allocate(
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   691
                fromEngine.getSession().getApplicationBufferSize());
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   692
        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
   693
        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
   694
        if (!toEngine.isInboundDone()) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   695
            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
   696
                    + ", 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
   697
        }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   698
        // Executing close inbound
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   699
        fromEngine.closeInbound();
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   700
        app = ByteBuffer.allocate(
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   701
                fromEngine.getSession().getApplicationBufferSize());
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   702
        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
   703
        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
   704
        if (!toEngine.isOutboundDone()) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   705
            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
   706
                    + ", 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
   707
        }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   708
        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
   709
    }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   710
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   711
    /**
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   712
     * 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
   713
     * 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
   714
     *
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   715
     * @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
   716
     */
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   717
    public void runTests(Ciphers ciphers) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   718
        int total = ciphers.ciphers.length;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   719
        int failed = testSomeCiphers(ciphers);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   720
        if (failed > 0) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   721
            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
   722
                    + " tests failed!");
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   723
        }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   724
        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
   725
    }
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
     * 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
   729
     */
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   730
    public void runTests() {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   731
        switch (TEST_MODE) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   732
            case "norm":
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   733
            case "norm_sni":
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   734
                switch (TESTED_SECURITY_PROTOCOL) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   735
                    case "DTLSv1.0":
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   736
                    case "TLSv1":
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   737
                    case "TLSv1.1":
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   738
                        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
   739
                        break;
56542
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   740
                    case "DTLSv1.1":
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   741
                    case "TLSv1.2":
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   742
                        runTests(Ciphers.SUPPORTED_NON_KRB_CIPHERS);
56542
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   743
                        break;
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   744
                    case "TLSv1.3":
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   745
                        runTests(Ciphers.TLS13_CIPHERS);
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   746
                        break;
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   747
                }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   748
                break;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   749
            case "krb":
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   750
                runTests(Ciphers.SUPPORTED_KRB_CIPHERS);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   751
                break;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   752
            default:
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   753
                throw new Error(
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   754
                        "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
   755
        }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   756
    }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   757
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   758
    /**
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   759
     * 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
   760
     *
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   761
     * @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
   762
     */
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   763
    public int getMaxPacketSize() {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   764
        return maxPacketSize;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   765
    }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   766
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   767
    /**
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   768
     * 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
   769
     *
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   770
     * @param r            - Result.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   771
     * @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
   772
     * @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
   773
     *                        {@code wantedStatus}.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   774
     */
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   775
    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
   776
                                   SSLEngineResult.Status wantedStatus) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   777
        SSLEngineResult.Status rs = r.getStatus();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   778
        if (!rs.equals(wantedStatus)) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   779
            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
   780
                    + ", should be " + wantedStatus.name());
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   781
        }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   782
    }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   783
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   784
    /**
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   785
     * Returns SSLContext with TESTED_SECURITY_PROTOCOL protocol and
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   786
     * sets up keys.
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   787
     *
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   788
     * @return - SSLContext with a protocol specified by
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   789
     *           TESTED_SECURITY_PROTOCOL.
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   790
     */
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   791
    public static SSLContext getContext() {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   792
        try {
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   793
            java.security.Security.setProperty(
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   794
                    "jdk.tls.disabledAlgorithms", "");
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   795
            java.security.Security.setProperty(
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   796
                    "jdk.certpath.disabledAlgorithms", "");
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   797
            KeyStore ks = KeyStore.getInstance("JKS");
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   798
            KeyStore ts = KeyStore.getInstance("JKS");
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   799
            char[] passphrase = PASSWD.toCharArray();
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   800
            try (FileInputStream keyFileStream =
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   801
                    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
   802
                ks.load(keyFileStream, passphrase);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   803
            }
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   804
            try (FileInputStream trustFileStream =
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   805
                    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
   806
                ts.load(trustFileStream, passphrase);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   807
            }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   808
            KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   809
            kmf.init(ks, passphrase);
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   810
            TrustManagerFactory tmf =
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   811
                    TrustManagerFactory.getInstance("SunX509");
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   812
            tmf.init(ts);
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   813
            SSLContext sslCtx =
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   814
                    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
   815
            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
   816
            return sslCtx;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   817
        } catch (KeyStoreException | IOException | NoSuchAlgorithmException |
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   818
                CertificateException | UnrecoverableKeyException |
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   819
                KeyManagementException ex) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   820
            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
   821
        }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   822
    }
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
    /**
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   825
     * 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
   826
     */
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   827
    public static void setUpAndStartKDC() {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   828
        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
   829
        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
   830
        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
   831
        principals.put(KRBTGT_PRINCIPAL, null);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   832
        principals.put(servicePrincipal, null);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   833
        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
   834
        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
   835
        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
   836
                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
   837
        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
   838
    }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   839
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   840
    /**
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   841
     * Sets up and starts kerberos KDC server if
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   842
     * 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
   843
     */
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   844
    public static void setUpAndStartKDCIfNeeded() {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   845
        if (TEST_MODE.equals("krb")) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   846
            setUpAndStartKDC();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   847
        }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   848
    }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   849
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   850
    /**
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   851
     * Returns client ssl engine.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   852
     *
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   853
     * @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
   854
     * @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
   855
     *                Needed for Kerberos.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   856
     */
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   857
    public static SSLEngine getClientSSLEngine(
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   858
            SSLContext context, boolean useSNI) {
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   859
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   860
        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
   861
        clientEngine.setUseClientMode(true);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   862
        if (useSNI) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   863
            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
   864
            List<SNIServerName> serverNames = new ArrayList<>();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   865
            serverNames.add(serverName);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   866
            SSLParameters params = clientEngine.getSSLParameters();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   867
            params.setServerNames(serverNames);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   868
            clientEngine.setSSLParameters(params);
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
        return clientEngine;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   871
    }
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
    /**
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   874
     * Returns server ssl engine.
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
     * @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
   877
     * @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
   878
     *                Needed for Kerberos.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   879
     */
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   880
    public static SSLEngine getServerSSLEngine(
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   881
            SSLContext context, boolean useSNI) {
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   882
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   883
        SSLEngine serverEngine = context.createSSLEngine();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   884
        serverEngine.setUseClientMode(false);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   885
        if (useSNI) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   886
            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
   887
            List<SNIMatcher> matchers = new ArrayList<>();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   888
            matchers.add(matcher);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   889
            SSLParameters params = serverEngine.getSSLParameters();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   890
            params.setSNIMatchers(matchers);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   891
            serverEngine.setSSLParameters(params);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   892
        }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   893
        return serverEngine;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   894
    }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   895
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   896
    /**
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   897
     * 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
   898
     *
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   899
     * @param cipher - Cipher suite name.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   900
     * @throws SSLException - If tests fails.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   901
     */
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   902
    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
   903
            throws SSLException;
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
    /**
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   906
     * 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
   907
     * every entry.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   908
     *
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   909
     * @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
   910
     * @return - Number of tests failed.
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   911
     */
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   912
    protected int testSomeCiphers(Ciphers ciphers) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   913
        int failedNum = 0;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   914
        String description = ciphers.description;
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   915
        System.out.println("===============================================");
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   916
        System.out.println(description + " ciphers testing");
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   917
        System.out.println("===========================================");
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   918
        for (String cs : ciphers.ciphers) {
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   919
            System.out.println("---------------------------------------");
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   920
            System.out.println("Testing cipher suite " + cs);
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   921
            System.out.println("---------------------------------------");
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   922
            Throwable error = null;
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   923
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   924
            // Reset global mutable static variables
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   925
            net = null;
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   926
            doUnwrapForNotHandshakingStatus = false;
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   927
            endHandshakeLoop = false;
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   928
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   929
            try {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   930
                testOneCipher(cs);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   931
            } catch (Throwable t) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   932
                error = t;
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
            switch (ciphers) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   935
                case SUPPORTED_NON_KRB_CIPHERS:
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   936
                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
   937
                case SUPPORTED_KRB_CIPHERS:
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   938
                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
   939
                    if (error != null) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   940
                        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
   941
                        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
   942
                        error.printStackTrace();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   943
                        failedNum++;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   944
                    } else {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   945
                        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
   946
                    }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   947
                    break;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   948
                case UNSUPPORTED_CIPHERS:
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   949
                    if (error == null) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   950
                        System.out.println("Test Failed: " + cs);
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   951
                        System.err.println("Test for " + cs +
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   952
                                " should have thrown " +
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   953
                                "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
   954
                        failedNum++;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   955
                    } else if (!(error instanceof IllegalArgumentException)) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   956
                        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
   957
                        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
   958
                        error.printStackTrace();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   959
                        failedNum++;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   960
                    } else {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   961
                        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
   962
                    }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   963
                    break;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   964
                default:
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   965
                    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
   966
                            + ciphers.name());
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   967
            }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   968
        }
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   969
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   970
        return failedNum;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   971
    }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   972
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   973
    /**
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   974
     * 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
   975
     *
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   976
     * @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
   977
     * @param unwrapingEngine       - Engine that is expected to unwrap data.
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   978
     * @param maxPacketSize         - Maximum packet size for MFLN of zero
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   979
     *                                for no limit.
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   980
     * @param enableReplicatedPacks - Set {@code true} to enable replicated
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   981
     *                                packet sending.
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   982
     * @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
   983
     */
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   984
    private static void handshakeProcess(SSLEngine wrapingEngine,
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   985
            SSLEngine unwrapingEngine,
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   986
            int maxPacketSize,
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   987
            boolean enableReplicatedPacks) throws SSLException {
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   988
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   989
        HandshakeStatus wrapingHSStatus = wrapingEngine.getHandshakeStatus();
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   990
        HandshakeStatus unwrapingHSStatus =
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
   991
                unwrapingEngine.getHandshakeStatus();
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   992
        SSLEngineResult r;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   993
        String wrapper, unwrapper;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   994
        if (wrapingEngine.getUseClientMode()
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   995
                && !unwrapingEngine.getUseClientMode()) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   996
            wrapper = "Client";
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   997
            unwrapper = "Server";
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   998
        } else if (unwrapingEngine.getUseClientMode()
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
   999
                && !wrapingEngine.getUseClientMode()) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1000
            wrapper = "Server";
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1001
            unwrapper = "Client";
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1002
        } else {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1003
            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
  1004
        }
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1005
        System.out.println(
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1006
                wrapper + " handshake (wrap) status " + wrapingHSStatus);
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1007
        System.out.println(
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1008
                unwrapper + " handshake (unwrap) status " + unwrapingHSStatus);
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1009
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1010
        ByteBuffer netReplicatedClient = null;
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1011
        ByteBuffer netReplicatedServer = null;
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1012
        switch (wrapingHSStatus) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1013
            case NEED_WRAP:
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1014
                if (enableReplicatedPacks) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1015
                    if (net != null) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1016
                        net.flip();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1017
                        if (net.remaining() != 0) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1018
                            if (wrapingEngine.getUseClientMode()) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1019
                                netReplicatedServer = net;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1020
                            } else {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1021
                                netReplicatedClient = net;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1022
                            }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1023
                        }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1024
                    }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1025
                }
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1026
                ByteBuffer app = ByteBuffer.allocate(
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1027
                        wrapingEngine.getSession().getApplicationBufferSize());
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1028
                net = doWrap(wrapingEngine, wrapper, maxPacketSize, app);
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1029
                wrapingHSStatus = wrapingEngine.getHandshakeStatus();
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1030
                // 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
  1031
            case NOT_HANDSHAKING:
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1032
                switch (unwrapingHSStatus) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1033
                    case NEED_TASK:
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1034
                        runDelegatedTasks(unwrapingEngine);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1035
                    case NEED_UNWRAP:
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1036
                        doUnWrap(unwrapingEngine, unwrapper, net);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1037
                        if (enableReplicatedPacks) {
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1038
                            System.out.println(unwrapper +
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1039
                                    " unwrapping replicated packet...");
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1040
                            if (unwrapingEngine.getHandshakeStatus()
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1041
                                    .equals(HandshakeStatus.NEED_TASK)) {
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1042
                                runDelegatedTasks(unwrapingEngine);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1043
                            }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1044
                            ByteBuffer netReplicated;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1045
                            if (unwrapingEngine.getUseClientMode()) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1046
                                netReplicated = netReplicatedClient;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1047
                            } else {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1048
                                netReplicated = netReplicatedServer;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1049
                            }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1050
                            if (netReplicated != null) {
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1051
                                doUnWrap(unwrapingEngine,
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1052
                                        unwrapper, netReplicated);
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1053
                            } else {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1054
                                net.flip();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1055
                                doUnWrap(unwrapingEngine, unwrapper, net);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1056
                            }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1057
                        }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1058
                        break;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1059
                    case NEED_UNWRAP_AGAIN:
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1060
                        break;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1061
                    case NOT_HANDSHAKING:
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1062
                        if (doUnwrapForNotHandshakingStatus) {
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1063
                            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
  1064
                            doUnWrap(unwrapingEngine, unwrapper, net);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1065
                            doUnwrapForNotHandshakingStatus = false;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1066
                            break;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1067
                        } else {
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1068
                            if (wrapingHSStatus ==
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1069
                                        HandshakeStatus.NOT_HANDSHAKING) {
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1070
                                System.out.println("Handshake is completed");
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1071
                                endHandshakeLoop = true;
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1072
                            }
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1073
                        }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1074
                        break;
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1075
                    case NEED_WRAP:
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1076
                        SSLSession session = unwrapingEngine.getSession();
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1077
                        int bufferSize = session.getApplicationBufferSize();
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1078
                        ByteBuffer b = ByteBuffer.allocate(bufferSize);
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1079
                        net = doWrap(unwrapingEngine,
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1080
                                        unwrapper, maxPacketSize, b);
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1081
                        unwrapingHSStatus =
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1082
                                unwrapingEngine.getHandshakeStatus();
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1083
                        if ((wrapingHSStatus ==
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1084
                                    HandshakeStatus.NOT_HANDSHAKING) &&
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1085
                            (unwrapingHSStatus ==
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1086
                                    HandshakeStatus.NOT_HANDSHAKING)) {
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1087
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1088
                            System.out.println("Handshake is completed");
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1089
                            endHandshakeLoop = true;
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1090
                        }
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1091
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1092
                        break;
31057
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1093
                    default:
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1094
                        throw new Error(
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1095
                                "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
  1096
                                + unwrapingHSStatus.name());
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
                break;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1099
            case NEED_UNWRAP:
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1100
                break;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1101
            case NEED_UNWRAP_AGAIN:
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1102
                net.flip();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1103
                doUnWrap(wrapingEngine, wrapper, net);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1104
                break;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1105
            case NEED_TASK:
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1106
                runDelegatedTasks(wrapingEngine);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1107
                break;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1108
            default:
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1109
                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
  1110
                        + wrapingHSStatus.name());
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1111
        }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1112
    }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1113
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1114
    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
  1115
        Runnable runnable;
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1116
        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
  1117
        while ((runnable = engine.getDelegatedTask()) != null) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1118
            runnable.run();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1119
        }
41820
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1120
        HandshakeStatus hs = engine.getHandshakeStatus();
3d8c88d00c9f 8167680: DTLS implementation bugs
xuelei
parents: 31728
diff changeset
  1121
        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
  1122
            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
  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
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1126
    /**
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1127
     * Start a KDC server:
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1128
     * - create a KDC instance
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1129
     * - create Kerberos principals
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1130
     * - save Kerberos configuration
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1131
     * - save keys to keytab file
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1132
     * - no pre-auth is required
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1133
     */
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1134
    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
  1135
                                 String ktab) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1136
        try {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1137
            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
  1138
            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
  1139
            if (principals != null) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1140
                principals.entrySet().stream().forEach((entry) -> {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1141
                    String name = entry.getKey();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1142
                    String password = entry.getValue();
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1143
                    if (password == null || password.isEmpty()) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1144
                        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
  1145
                                + "' with a random password");
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1146
                        kdc.addPrincipalRandKey(name);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1147
                    } else {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1148
                        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
  1149
                                + "' with '" + password + "' password");
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1150
                        kdc.addPrincipal(name, password.toCharArray());
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1151
                    }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1152
                });
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1153
            }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1154
            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
  1155
            if (ktab != null) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1156
                File ktabFile = new File(ktab);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1157
                if (ktabFile.exists()) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1158
                    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
  1159
                            + "keytab file " + ktab);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1160
                    kdc.appendKtab(ktab);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1161
                } else {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1162
                    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
  1163
                            + ktab);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1164
                    kdc.writeKtab(ktab);
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1165
                }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1166
            }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1167
            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
  1168
                    + " with '" + realm + "' realm");
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1169
        } catch (Exception e) {
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1170
            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
  1171
        }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1172
    }
babdeee3c007 8072515: Test Task: Develop new tests for JEP 219: Datagram Transport Layer Security (DTLS)
kshefov
parents:
diff changeset
  1173
}