test/jdk/javax/net/ssl/ciphersuites/ECCurvesconstraints.java
author xuelei
Mon, 25 Jun 2018 13:41:39 -0700
changeset 50768 68fa3d4026ea
parent 47216 71c04702a3d5
permissions -rw-r--r--
8196584: TLS 1.3 Implementation Reviewed-by: ascarpino, coffeys, dfuchs, jjiang, jnimeh, mullan, rhalade, ssahoo, valeriep, weijun, wetmore, xuelei Contributed-by: Adam Petcher <adam.petcher@oracle.com>, Amanda Jiang <amanda.jiang@oracle.com>, Anthony Scarpino <anthony.scarpino@oracle.com>, Bradford Wetmore <bradford.wetmore@oracle.com>, Jamil Nimeh <jamil.j.nimeh@oracle.com>, John Jiang <sha.jiang@oracle.com>, Rajan Halade <rajan.halade@oracle.com>, Sibabrata Sahoo <sibabrata.sahoo@oracle.com>, Valerie Peng <valerie.peng@oracle.com>, Weijun Wang <weijun.wang@oracle.com>, Xuelei Fan <xuelei.fan@oracle.com>
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
39563
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
     1
/*
45830
c5ebfadbb30a 8183531: Wrong @modules in test javax/net/ssl/ciphersuites/ECCurvesconstraints.java
amlu
parents: 40949
diff changeset
     2
 * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
39563
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
     4
 *
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
     7
 * published by the Free Software Foundation.  Oracle designates this
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
     8
 * particular file as subject to the "Classpath" exception as provided
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
     9
 * by Oracle in the LICENSE file that accompanied this code.
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    10
 *
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    11
 * This code is distributed in the hope that it will be useful, but WITHOUT
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    14
 * version 2 for more details (a copy is included in the LICENSE file that
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    15
 * accompanied this code).
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    16
 *
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    17
 * You should have received a copy of the GNU General Public License version
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    18
 * 2 along with this work; if not, write to the Free Software Foundation,
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    19
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    20
 *
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    21
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    22
 * or visit www.oracle.com if you need additional information or have any
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    23
 * questions.
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    24
 */
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    25
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    26
//
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    27
// SunJSSE does not support dynamic system properties, no way to re-use
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    28
// system properties in samevm/agentvm mode.
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    29
//
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    30
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    31
/*
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    32
 * @test
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    33
 * @bug 8148516
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    34
 * @summary Improve the default strength of EC in JDK
45830
c5ebfadbb30a 8183531: Wrong @modules in test javax/net/ssl/ciphersuites/ECCurvesconstraints.java
amlu
parents: 40949
diff changeset
    35
 * @modules jdk.crypto.ec
39563
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    36
 * @run main/othervm ECCurvesconstraints PKIX
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    37
 * @run main/othervm ECCurvesconstraints SunX509
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    38
 */
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    39
40949
be7a612613ae 8166032: Fix module dependencies for javax.SSL tests
skovalev
parents: 39563
diff changeset
    40
import java.io.ByteArrayInputStream;
be7a612613ae 8166032: Fix module dependencies for javax.SSL tests
skovalev
parents: 39563
diff changeset
    41
import java.io.InputStream;
be7a612613ae 8166032: Fix module dependencies for javax.SSL tests
skovalev
parents: 39563
diff changeset
    42
import java.io.OutputStream;
50768
68fa3d4026ea 8196584: TLS 1.3 Implementation
xuelei
parents: 47216
diff changeset
    43
import java.io.IOException;
39563
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    44
import java.security.KeyStore;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    45
import java.security.KeyFactory;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    46
import java.security.cert.Certificate;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    47
import java.security.cert.CertificateFactory;
40949
be7a612613ae 8166032: Fix module dependencies for javax.SSL tests
skovalev
parents: 39563
diff changeset
    48
import java.security.interfaces.ECPrivateKey;
be7a612613ae 8166032: Fix module dependencies for javax.SSL tests
skovalev
parents: 39563
diff changeset
    49
import java.security.spec.PKCS8EncodedKeySpec;
39563
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    50
import java.util.Base64;
40949
be7a612613ae 8166032: Fix module dependencies for javax.SSL tests
skovalev
parents: 39563
diff changeset
    51
import javax.net.ssl.KeyManagerFactory;
be7a612613ae 8166032: Fix module dependencies for javax.SSL tests
skovalev
parents: 39563
diff changeset
    52
import javax.net.ssl.SSLContext;
be7a612613ae 8166032: Fix module dependencies for javax.SSL tests
skovalev
parents: 39563
diff changeset
    53
import javax.net.ssl.SSLServerSocket;
be7a612613ae 8166032: Fix module dependencies for javax.SSL tests
skovalev
parents: 39563
diff changeset
    54
import javax.net.ssl.SSLServerSocketFactory;
be7a612613ae 8166032: Fix module dependencies for javax.SSL tests
skovalev
parents: 39563
diff changeset
    55
import javax.net.ssl.SSLSocket;
be7a612613ae 8166032: Fix module dependencies for javax.SSL tests
skovalev
parents: 39563
diff changeset
    56
import javax.net.ssl.SSLSocketFactory;
be7a612613ae 8166032: Fix module dependencies for javax.SSL tests
skovalev
parents: 39563
diff changeset
    57
import javax.net.ssl.TrustManagerFactory;
39563
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    58
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    59
public class ECCurvesconstraints {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    60
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    61
    /*
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    62
     * =============================================================
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    63
     * Set the various variables needed for the tests, then
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    64
     * specify what tests to run on each side.
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    65
     */
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    66
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    67
    /*
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    68
     * Should we run the client or server in a separate thread?
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    69
     * Both sides can throw exceptions, but do you have a preference
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    70
     * as to which side should be the main thread.
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    71
     */
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    72
    static boolean separateServerThread = false;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    73
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    74
    /*
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    75
     * Where do we find the keystores?
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    76
     */
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    77
    // Certificates and key used in the test.
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    78
    //
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    79
    // EC curve: secp224k1
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    80
    static String trustedCertStr =
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    81
        "-----BEGIN CERTIFICATE-----\n" +
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    82
        "MIIBCzCBugIEVz2lcjAKBggqhkjOPQQDAjAaMRgwFgYDVQQDDA93d3cuZXhhbXBs\n" +
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    83
        "ZS5vcmcwHhcNMTYwNTE5MTEzNzM5WhcNMTcwNTE5MTEzNzM5WjAaMRgwFgYDVQQD\n" +
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    84
        "DA93d3cuZXhhbXBsZS5vcmcwTjAQBgcqhkjOPQIBBgUrgQQAIAM6AAT68uovMZ8f\n" +
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    85
        "KARn5NOjvieJaq6h8zHYkM9w5DuN0kkOo4KBhke06EkQj0nvQQcSvppTV6RoDLY4\n" +
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    86
        "djAKBggqhkjOPQQDAgNAADA9AhwMNIujM0R0llpPH6d89d1S3VRGH/78ovc+zw51\n" +
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    87
        "Ah0AuZ1YlQkUbrJIzkuPSICxz5UfCWPe+7w4as+wiA==\n" +
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    88
        "-----END CERTIFICATE-----";
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    89
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    90
    // Private key in the format of PKCS#8
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    91
    static String targetPrivateKey =
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    92
        "MIGCAgEAMBAGByqGSM49AgEGBSuBBAAgBGswaQIBAQQdAPbckc86mgW/zexB1Ajq\n" +
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    93
        "38HntWOjdxL6XSoiAsWgBwYFK4EEACChPAM6AAT68uovMZ8fKARn5NOjvieJaq6h\n" +
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    94
        "8zHYkM9w5DuN0kkOo4KBhke06EkQj0nvQQcSvppTV6RoDLY4dg==";
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    95
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    96
    static String[] serverCerts = {trustedCertStr};
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    97
    static String[] serverKeys  = {targetPrivateKey};
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    98
    static String[] clientCerts = {trustedCertStr};
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
    99
    static String[] clientKeys  = {targetPrivateKey};
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   100
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   101
    static char passphrase[] = "passphrase".toCharArray();
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   102
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   103
    /*
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   104
     * Is the server ready to serve?
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   105
     */
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   106
    volatile static boolean serverReady = false;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   107
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   108
    /*
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   109
     * Turn on SSL debugging?
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   110
     */
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   111
    static boolean debug = false;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   112
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   113
    /*
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   114
     * Define the server side of the test.
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   115
     *
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   116
     * If the server prematurely exits, serverReady will be set to true
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   117
     * to avoid infinite hangs.
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   118
     */
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   119
    void doServerSide() throws Exception {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   120
        SSLContext context = generateSSLContext(false);
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   121
        SSLServerSocketFactory sslssf = context.getServerSocketFactory();
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   122
        SSLServerSocket sslServerSocket =
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   123
            (SSLServerSocket)sslssf.createServerSocket(serverPort);
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   124
        serverPort = sslServerSocket.getLocalPort();
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   125
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   126
        /*
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   127
         * Signal Client, we're ready for his connect.
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   128
         */
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   129
        serverReady = true;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   130
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   131
        SSLSocket sslSocket = (SSLSocket)sslServerSocket.accept();
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   132
        try {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   133
            sslSocket.setSoTimeout(5000);
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   134
            sslSocket.setSoLinger(true, 5);
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   135
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   136
            InputStream sslIS = sslSocket.getInputStream();
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   137
            OutputStream sslOS = sslSocket.getOutputStream();
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   138
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   139
            sslIS.read();
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   140
            sslOS.write('A');
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   141
            sslOS.flush();
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   142
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   143
            throw new Exception("EC curve secp224k1 should be disabled");
50768
68fa3d4026ea 8196584: TLS 1.3 Implementation
xuelei
parents: 47216
diff changeset
   144
        } catch (IOException she) {
39563
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   145
            // expected exception: no cipher suites in common
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   146
            System.out.println("Expected exception: " + she);
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   147
        } finally {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   148
            sslSocket.close();
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   149
            sslServerSocket.close();
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   150
        }
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   151
    }
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   152
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   153
    /*
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   154
     * Define the client side of the test.
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   155
     *
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   156
     * If the server prematurely exits, serverReady will be set to true
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   157
     * to avoid infinite hangs.
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   158
     */
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   159
    void doClientSide() throws Exception {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   160
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   161
        /*
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   162
         * Wait for server to get started.
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   163
         */
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   164
        while (!serverReady) {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   165
            Thread.sleep(50);
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   166
        }
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   167
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   168
        SSLContext context = generateSSLContext(true);
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   169
        SSLSocketFactory sslsf = context.getSocketFactory();
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   170
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   171
        SSLSocket sslSocket =
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   172
            (SSLSocket)sslsf.createSocket("localhost", serverPort);
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   173
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   174
        try {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   175
            sslSocket.setSoTimeout(5000);
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   176
            sslSocket.setSoLinger(true, 5);
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   177
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   178
            InputStream sslIS = sslSocket.getInputStream();
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   179
            OutputStream sslOS = sslSocket.getOutputStream();
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   180
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   181
            sslOS.write('B');
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   182
            sslOS.flush();
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   183
            sslIS.read();
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   184
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   185
            throw new Exception("EC curve secp224k1 should be disabled");
50768
68fa3d4026ea 8196584: TLS 1.3 Implementation
xuelei
parents: 47216
diff changeset
   186
        } catch (IOException she) {
39563
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   187
            // expected exception: Received fatal alert
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   188
            System.out.println("Expected exception: " + she);
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   189
        } finally {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   190
            sslSocket.close();
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   191
        }
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   192
    }
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   193
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   194
    /*
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   195
     * =============================================================
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   196
     * The remainder is just support stuff
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   197
     */
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   198
    private static String tmAlgorithm;             // trust manager
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   199
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   200
    private static void parseArguments(String[] args) {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   201
        tmAlgorithm = args[0];
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   202
    }
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   203
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   204
    private static SSLContext generateSSLContext(boolean isClient)
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   205
            throws Exception {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   206
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   207
        // generate certificate from cert string
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   208
        CertificateFactory cf = CertificateFactory.getInstance("X.509");
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   209
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   210
        // create a key store
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   211
        KeyStore ks = KeyStore.getInstance("JKS");
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   212
        ks.load(null, null);
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   213
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   214
        // import the trused cert
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   215
        ByteArrayInputStream is =
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   216
                    new ByteArrayInputStream(trustedCertStr.getBytes());
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   217
        Certificate trusedCert = cf.generateCertificate(is);
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   218
        is.close();
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   219
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   220
        ks.setCertificateEntry("Export Signer", trusedCert);
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   221
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   222
        String[] certStrs = null;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   223
        String[] keyStrs = null;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   224
        if (isClient) {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   225
            certStrs = clientCerts;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   226
            keyStrs = clientKeys;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   227
        } else {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   228
            certStrs = serverCerts;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   229
            keyStrs = serverKeys;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   230
        }
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   231
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   232
        for (int i = 0; i < certStrs.length; i++) {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   233
            // generate the private key.
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   234
            String keySpecStr = keyStrs[i];
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   235
            PKCS8EncodedKeySpec priKeySpec = new PKCS8EncodedKeySpec(
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   236
                                Base64.getMimeDecoder().decode(keySpecStr));
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   237
            KeyFactory kf = KeyFactory.getInstance("EC");
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   238
            ECPrivateKey priKey =
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   239
                    (ECPrivateKey)kf.generatePrivate(priKeySpec);
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   240
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   241
            // generate certificate chain
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   242
            String keyCertStr = certStrs[i];
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   243
            is = new ByteArrayInputStream(keyCertStr.getBytes());
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   244
            Certificate keyCert = cf.generateCertificate(is);
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   245
            is.close();
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   246
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   247
            Certificate[] chain = new Certificate[2];
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   248
            chain[0] = keyCert;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   249
            chain[1] = trusedCert;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   250
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   251
            // import the key entry.
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   252
            ks.setKeyEntry("key-entry-" + i, priKey, passphrase, chain);
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   253
        }
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   254
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   255
        // create SSL context
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   256
        TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmAlgorithm);
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   257
        tmf.init(ks);
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   258
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   259
        SSLContext ctx = SSLContext.getInstance("TLS");
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   260
        KeyManagerFactory kmf = KeyManagerFactory.getInstance("NewSunX509");
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   261
        kmf.init(ks, passphrase);
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   262
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   263
        ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   264
        ks = null;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   265
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   266
        return ctx;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   267
    }
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   268
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   269
    // use any free port by default
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   270
    volatile int serverPort = 0;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   271
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   272
    volatile Exception serverException = null;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   273
    volatile Exception clientException = null;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   274
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   275
    public static void main(String[] args) throws Exception {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   276
        if (debug) {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   277
            System.setProperty("javax.net.debug", "all");
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   278
        }
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   279
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   280
        /*
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   281
         * Get the customized arguments.
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   282
         */
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   283
        parseArguments(args);
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   284
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   285
        /*
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   286
         * Start the tests.
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   287
         */
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   288
        new ECCurvesconstraints();
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   289
    }
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   290
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   291
    Thread clientThread = null;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   292
    Thread serverThread = null;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   293
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   294
    /*
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   295
     * Primary constructor, used to drive remainder of the test.
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   296
     *
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   297
     * Fork off the other side, then do your work.
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   298
     */
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   299
    ECCurvesconstraints() throws Exception {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   300
        try {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   301
            if (separateServerThread) {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   302
                startServer(true);
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   303
                startClient(false);
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   304
            } else {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   305
                startClient(true);
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   306
                startServer(false);
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   307
            }
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   308
        } catch (Exception e) {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   309
            // swallow for now.  Show later
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   310
        }
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   311
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   312
        /*
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   313
         * Wait for other side to close down.
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   314
         */
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   315
        if (separateServerThread) {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   316
            serverThread.join();
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   317
        } else {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   318
            clientThread.join();
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   319
        }
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   320
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   321
        /*
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   322
         * When we get here, the test is pretty much over.
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   323
         * Which side threw the error?
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   324
         */
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   325
        Exception local;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   326
        Exception remote;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   327
        String whichRemote;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   328
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   329
        if (separateServerThread) {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   330
            remote = serverException;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   331
            local = clientException;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   332
            whichRemote = "server";
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   333
        } else {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   334
            remote = clientException;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   335
            local = serverException;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   336
            whichRemote = "client";
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   337
        }
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   338
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   339
        /*
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   340
         * If both failed, return the curthread's exception, but also
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   341
         * print the remote side Exception
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   342
         */
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   343
        if ((local != null) && (remote != null)) {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   344
            System.out.println(whichRemote + " also threw:");
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   345
            remote.printStackTrace();
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   346
            System.out.println();
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   347
            throw local;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   348
        }
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   349
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   350
        if (remote != null) {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   351
            throw remote;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   352
        }
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   353
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   354
        if (local != null) {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   355
            throw local;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   356
        }
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   357
    }
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   358
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   359
    void startServer(boolean newThread) throws Exception {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   360
        if (newThread) {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   361
            serverThread = new Thread() {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   362
                public void run() {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   363
                    try {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   364
                        doServerSide();
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   365
                    } catch (Exception e) {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   366
                        /*
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   367
                         * Our server thread just died.
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   368
                         *
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   369
                         * Release the client, if not active already...
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   370
                         */
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   371
                        System.err.println("Server died, because of " + e);
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   372
                        serverReady = true;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   373
                        serverException = e;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   374
                    }
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   375
                }
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   376
            };
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   377
            serverThread.start();
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   378
        } else {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   379
            try {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   380
                doServerSide();
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   381
            } catch (Exception e) {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   382
                serverException = e;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   383
            } finally {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   384
                serverReady = true;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   385
            }
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   386
        }
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   387
    }
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   388
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   389
    void startClient(boolean newThread) throws Exception {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   390
        if (newThread) {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   391
            clientThread = new Thread() {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   392
                public void run() {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   393
                    try {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   394
                        doClientSide();
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   395
                    } catch (Exception e) {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   396
                        /*
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   397
                         * Our client thread just died.
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   398
                         */
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   399
                        System.err.println("Client died, because of " + e);
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   400
                        clientException = e;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   401
                    }
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   402
                }
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   403
            };
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   404
            clientThread.start();
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   405
        } else {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   406
            try {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   407
                doClientSide();
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   408
            } catch (Exception e) {
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   409
                clientException = e;
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   410
            }
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   411
        }
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   412
    }
1449ed425710 8148516: Improve the default strength of EC in JDK
xuelei
parents:
diff changeset
   413
}