/* * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions.
*/
/* * @test 1.3 01/03/08 * @bug 4522550 * @summary SSLContext TrustMananagerFactory and KeyManagerFactory * should throw if not init * @run main/othervm ProviderInit * * SunJSSE does not support dynamic system properties, no way to re-use * system properties in samevm/agentvm mode. * @author Jaya Hangal
*/
/** * This test case makes sure that the providers throw * IllegalStateException when used without getting initialized. * The relevant tests are in doClientSide method.
*/
/* * ============================================================= * Set the various variables needed for the tests, then * specify what tests to run on each side.
*/
/* * Should we run the client or server in a separate thread? * Both sides can throw exceptions, but do you have a preference * as to which side should be the main thread.
*/ staticboolean separateServerThread = true;
/* * Where do we find the keystores?
*/ static String pathToStores = "../../../../javax/net/ssl/etc"; static String keyStoreFile = "keystore"; static String trustStoreFile = "truststore"; static String passwd = "passphrase";
/* * Is the server ready to serve?
*/ volatilestaticboolean serverReady = false;
/* * If the client or server is doing some kind of object creation * that the other side depends on, and that thread prematurely * exits, you may experience a hang. The test harness will * terminate all hung threads after its timeout has expired, * currently 3 minutes by default, but you might try to be * smart about it....
*/
/* * Define the server side of the test. * * If the server prematurely exits, serverReady will be set to true * to avoid infinite hangs.
*/ void doServerSide() throws Exception {
SSLContext context = SSLContext.getInstance("TLS");
SSLServerSocketFactory sslssf =
(SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
SSLServerSocket sslServerSocket =
(SSLServerSocket) sslssf.createServerSocket(serverPort);
serverPort = sslServerSocket.getLocalPort(); /* * Signal Client, we're ready for his connect.
*/
serverReady = true;
/* * Define the client side of the test. * * If the server prematurely exits, serverReady will be set to true * to avoid infinite hangs.
*/ void doClientSide() throws Exception { /* * Wait for server to get started.
*/ while (!serverReady) { Thread.sleep(50);
}
/* * Try using SSLContext without calling init() * A call to getSocketFactory() will throw an exception
*/ try {
sslsf =
(SSLSocketFactory) context.getSocketFactory();
communicate(sslsf, false);
} catch (IllegalStateException e) {
System.out.println("Caught the right exception" + e);
}
/* * Try using TrustManagerFactory without calling init() * A call to getTrustManagers() will throw an exception
*/ try {
TrustManagerFactory tmf = TrustManagerFactory.getInstance( "sunX509");
TrustManager[] tms = tmf.getTrustManagers();
context.init(null, tms, null);
sslsf =
(SSLSocketFactory) context.getSocketFactory();
communicate(sslsf, false);
} catch (IllegalStateException e) {
System.out.println("Caught the right exception" + e);
}
/* * Try using KeyManagerFactory without calling init() * A call to getKeyManagers() will throw an exception
*/ try {
KeyManagerFactory kmf = KeyManagerFactory.getInstance("sunX509");
KeyManager kms[] = kmf.getKeyManagers();
context.init(kms, null, null);
sslsf =
(SSLSocketFactory) context.getSocketFactory();
communicate(sslsf, true);
} catch (Exception e) {
System.out.println("Caught the right exception" + e);
sslsf = (SSLSocketFactory) SSLSocketFactory.getDefault();
communicate(sslsf, false);
}
}
/* * Primary constructor, used to drive remainder of the test. * * Fork off the other side, then do your work.
*/
ProviderInit() throws Exception { if (separateServerThread) {
startServer(true);
startClient(false);
} else {
startClient(true);
startServer(false);
}
/* * Wait for other side to close down.
*/ if (separateServerThread) {
serverThread.join();
} else {
clientThread.join();
}
/* * When we get here, the test is pretty much over. * * If the main thread excepted, that propagates back * immediately. If the other thread threw an exception, we * should report back.
*/ if (serverException != null) throw serverException; if (clientException != null) throw clientException;
}
void startServer(boolean newThread) throws Exception { if (newThread) {
serverThread = newThread() { publicvoid run() { try {
doServerSide();
} catch (Exception e) { /* * Our server thread just died. * * Release the client, if not active already...
*/
System.err.println("Server died..." + e);
e.printStackTrace();
serverReady = true;
serverException = e;
}
}
};
serverThread.start();
} else {
doServerSide();
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.