SSLSocketFactoriesTest.java revision 561ee011997c6c2f1befbfaa9d5f0a99771c1d63
1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.xnet.provider.jsse; 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.IOException; 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.InputStream; 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.OutputStream; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.InetAddress; 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.InetSocketAddress; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.Socket; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Arrays; 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.net.ssl.SSLServerSocket; 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.net.ssl.SSLServerSocketFactory; 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.net.ssl.SSLSocket; 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.net.ssl.SSLSocketFactory; 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.Test; 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase; 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestSuite; 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * SSLSocketImplTest 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class SSLSocketFactoriesTest extends TestCase { 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // turn on/off the debug logging 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private boolean doLog = false; 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Sets up the test case. 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void setUp() throws Exception { 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.setUp(); 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (doLog) { 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("========================"); 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("====== Running the test: " + getName()); 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("========================"); 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void tearDown() throws Exception { 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.tearDown(); 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests default initialized factories. 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testDefaultInitialized() throws Exception { 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocketFactory ssfactory = 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (SSLServerSocketFactory) SSLServerSocketFactory.getDefault(); 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLSocketFactory sfactory = 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (SSLSocketFactory) SSLSocketFactory.getDefault(); 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(ssfactory.getDefaultCipherSuites()); 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(ssfactory.getSupportedCipherSuites()); 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(ssfactory.createServerSocket()); 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(sfactory.getDefaultCipherSuites()); 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(sfactory.getSupportedCipherSuites()); 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(sfactory.createSocket()); 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSocketCreation() throws Throwable { 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLSocketFactory socketFactory 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes = new SSLSocketFactoryImpl(JSSETestData.getSSLParameters()); 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocketFactory serverSocketFactory 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes = new SSLServerSocketFactoryImpl(JSSETestData.getSSLParameters()); 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] enabled = {"TLS_RSA_WITH_RC4_128_MD5"}; 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i=0; i<4; i++) { 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocket ssocket; 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes switch (i) { 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes case 0: 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (doLog) { 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println( 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "*** ServerSocketFactory.createServerSocket()"); 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket = (SSLServerSocket) 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes serverSocketFactory.createServerSocket(); 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.bind(null); 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break; 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes case 1: 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (doLog) { 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println( 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "*** ServerSocketFactory.createServerSocket(int)"); 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket = (SSLServerSocket) 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes serverSocketFactory.createServerSocket(0); 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break; 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes case 2: 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (doLog) { 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println( 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "*** ServerSocketFactory.createServerSocket(int,int)"); 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket = (SSLServerSocket) 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes serverSocketFactory.createServerSocket(0, 6); 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break; 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes default: 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (doLog) { 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("*** ServerSocketFactory." 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "createServerSocket(int,int,InetAddress)"); 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket = (SSLServerSocket) 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes serverSocketFactory.createServerSocket(0, 6, null); 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break; 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setUseClientMode(false); 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setEnabledCipherSuites(enabled); 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int j=0; j<6; j++) { 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLSocket csocket; 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes switch (j) { 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes case 0: 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (doLog) { 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println( 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "=== SocketFactory.createSocket()"); 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes csocket = (SSLSocket) socketFactory.createSocket(); 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes csocket.connect( 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new InetSocketAddress("localhost", 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.getLocalPort())); 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break; 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes case 1: 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (doLog) { 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println( 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "=== SocketFactory.createSocket(String,int)"); 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes csocket = (SSLSocket) 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes socketFactory.createSocket("localhost", 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.getLocalPort()); 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break; 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes case 2: 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (doLog) { 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("=== SocketFactory.createSocket(" 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "String,int,InetAddress,int)"); 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes csocket = (SSLSocket) 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes socketFactory.createSocket("localhost", 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.getLocalPort(), 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes InetAddress.getByName("localhost"), 0); 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break; 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes case 3: 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (doLog) { 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("=== SocketFactory.createSocket(" 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "InetAddress,int)"); 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes csocket = (SSLSocket) socketFactory.createSocket( 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes InetAddress.getByName("localhost"), 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.getLocalPort()); 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break; 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes case 4: 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (doLog) { 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("=== SocketFactory.createSocket(" 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "InetAddress,int,InetAddress,int)"); 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes csocket = (SSLSocket) socketFactory.createSocket( 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes InetAddress.getByName("localhost"), 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.getLocalPort(), 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes InetAddress.getByName("localhost"), 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0); 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break; 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes default: 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (doLog) { 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println( 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "=== SSLSocketFactory.createSocket(" 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "socket,String,int,boolean)"); 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Socket socket = new Socket( 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes InetAddress.getByName("localhost"), 187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.getLocalPort()); 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes csocket = (SSLSocket) socketFactory.createSocket( 189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes socket, "localhost", ssocket.getLocalPort(), 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes true); 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break; 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes csocket.setUseClientMode(true); 195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes csocket.setEnabledCipherSuites(enabled); 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTest(ssocket, csocket); 197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * SSLSocketFactory.getSupportedCipherSuites() method testing. 203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetSupportedCipherSuites1() throws Exception { 205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLSocketFactory socketFactory 206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes = new SSLSocketFactoryImpl(JSSETestData.getSSLParameters()); 207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] supported = socketFactory.getSupportedCipherSuites(); 208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(supported); 209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes supported[0] = "NOT_SUPPORTED_CIPHER_SUITE"; 210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes supported = socketFactory.getSupportedCipherSuites(); 211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i=0; i<supported.length; i++) { 212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if ("NOT_SUPPORTED_CIPHER_SUITE".equals(supported[i])) { 213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Modification of the returned result " 214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "causes the modification of the internal state"); 215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * SSLServerSocketFactory.getSupportedCipherSuites() method testing. 221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetSupportedCipherSuites2() throws Exception { 223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocketFactory serverSocketFactory 224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes = new SSLServerSocketFactoryImpl(JSSETestData.getSSLParameters()); 225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] supported = serverSocketFactory.getSupportedCipherSuites(); 226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(supported); 227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes supported[0] = "NOT_SUPPORTED_CIPHER_SUITE"; 228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes supported = serverSocketFactory.getSupportedCipherSuites(); 229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i=0; i<supported.length; i++) { 230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if ("NOT_SUPPORTED_CIPHER_SUITE".equals(supported[i])) { 231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Modification of the returned result " 232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "causes the modification of the internal state"); 233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * SSLSocketFactory.getDefaultCipherSuites() method testing. 239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetDefaultCipherSuites1() throws Exception { 241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLSocketFactory socketFactory 242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes = new SSLSocketFactoryImpl(JSSETestData.getSSLParameters()); 243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] supported = socketFactory.getSupportedCipherSuites(); 244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] defaultcs = socketFactory.getDefaultCipherSuites(); 245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(supported); 246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(defaultcs); 247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i=0; i<defaultcs.length; i++) { 248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes found: { 249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int j=0; j<supported.length; j++) { 250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (defaultcs[i].equals(supported[j])) { 251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break found; 252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Default suite does not belong to the set " 255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "of supported cipher suites: " + defaultcs[i]); 256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * SSLServerSocketFactory.getDefaultCipherSuites() method testing. 262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetDefaultCipherSuites2() throws Exception { 264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocketFactory serverSocketFactory 265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes = new SSLServerSocketFactoryImpl(JSSETestData.getSSLParameters()); 266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] supported = serverSocketFactory.getSupportedCipherSuites(); 267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] defaultcs = serverSocketFactory.getDefaultCipherSuites(); 268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(supported); 269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(defaultcs); 270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i=0; i<defaultcs.length; i++) { 271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes found: { 272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int j=0; j<supported.length; j++) { 273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (defaultcs[i].equals(supported[j])) { 274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break found; 275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Default suite does not belong to the set " 278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "of supported cipher suites: " + defaultcs[i]); 279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Performs SSL connection between the sockets 285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @return 286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void doTest(SSLServerSocket ssocket, SSLSocket csocket) 288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws Throwable { 289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final String server_message = "Hello from SSL Server Socket!"; 290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final String client_message = "Hello from SSL Socket!"; 291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Thread server = null; 292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Thread client = null; 293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final Throwable[] throwed = new Throwable[1]; 294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final SSLServerSocket ss = ssocket; 296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final SSLSocket s = csocket; 297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes server = new Thread() { 298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void run() { 300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes InputStream is = null; 301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes OutputStream os = null; 302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLSocket s = null; 303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = (SSLSocket) ss.accept(); 305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (doLog) { 306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Socket accepted: " + s); 307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes is = s.getInputStream(); 309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes os = s.getOutputStream(); 310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // send the message to the client 311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes os.write(server_message.getBytes()); 312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // read the response 313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] buff = new byte[client_message.length()]; 314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int len = is.read(buff); 315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (doLog) { 316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Received message of length " 317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + len + ": '" + new String(buff, 0, len)+"'"); 318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Read message does not equal to expected", 320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Arrays.equals(client_message.getBytes(), buff)); 321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes os.write(-1); 322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Read data differs from expected", 323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 255, is.read()); 324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (doLog) { 325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Server is closed: " 326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes +s.isClosed()); 327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Returned value should be -1", 329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // initiate an exchange of closure alerts 330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes -1, is.read()); 331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (doLog) { 332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Server is closed: " 333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes +s.isClosed()); 334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Returned value should be -1", 336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // initiate an exchange of closure alerts 337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes -1, is.read()); 338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Throwable e) { 339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes synchronized (throwed) { 340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (doLog) { 341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.printStackTrace(); 342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (throwed[0] == null) { 344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throwed[0] = e; 345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (is != null) { 350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes is.close(); 351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ex) {} 353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (os != null) { 355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes os.close(); 356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ex) {} 358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (s != null) { 360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ex) {} 363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client = new Thread() { 368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void run() { 370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes InputStream is = null; 371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes OutputStream os = null; 372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Client was not connected", s.isConnected()); 374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (doLog) { 375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Client connected"); 376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes is = s.getInputStream(); 378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes os = s.getOutputStream(); 379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.startHandshake(); 380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (doLog) { 381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Client: HS was done"); 382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // read the message from the server 384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] buff = new byte[server_message.length()]; 385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int len = is.read(buff); 386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (doLog) { 387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Received message of length " 388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + len + ": '" + new String(buff, 0, len)+"'"); 389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Read message does not equal to expected", 391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Arrays.equals(server_message.getBytes(), buff)); 392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // send the response 393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes buff = (" "+client_message+" ").getBytes(); 394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes os.write(buff, 1, buff.length-2); 395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Read data differs from expected", 396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 255, is.read()); 397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes os.write(-1); 398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (doLog) { 399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Client is closed: " 400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes +s.isClosed()); 401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (doLog) { 404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Client is closed: " 405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes +s.isClosed()); 406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Throwable e) { 408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes synchronized (throwed) { 409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (doLog) { 410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.printStackTrace(); 411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (throwed[0] == null) { 413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throwed[0] = e; 414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (is != null) { 419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes is.close(); 420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ex) {} 422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (os != null) { 424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes os.close(); 425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ex) {} 427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (s != null) { 429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ex) {} 432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes server.start(); 437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.start(); 438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (server.isAlive() || client.isAlive()) { 440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (throwed[0] != null) { 441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw throwed[0]; 442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Thread.sleep(500); 445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Exception e) { } 446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (server != null) { 449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes server.stop(); 450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (client != null) { 452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.stop(); 453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (throwed[0] != null) { 456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw throwed[0]; 457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static Test suite() { 461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return new TestSuite(SSLSocketFactoriesTest.class); 462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static void main(String[] args) { 465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes junit.textui.TestRunner.run(suite()); 466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 469