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.net.Socket; 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.InetSocketAddress; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.net.ssl.SSLServerSocket; 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.Test; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase; 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestSuite; 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * SSLServerSocketImplTest test 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class SSLServerSocketImplTest extends TestCase { 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static boolean doLog = false; 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Sets up the test case. 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void setUp() { 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (doLog) { 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println(""); 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("========================"); 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("====== Running the test: " + getName()); 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private SSLServerSocket createSSLServerSocket() throws Exception { 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return new SSLServerSocketImpl(JSSETestData.getSSLParameters()); 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * SSLServerSocketImpl(SSLParameters sslParameters) method testing. 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSSLServerSocketImpl1() throws Exception { 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Client client = null; 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocket ssocket = null; 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket = new SSLServerSocketImpl(JSSETestData.getSSLParameters()); 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.bind(null); 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setUseClientMode(true); 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final SSLServerSocket s = ssocket; 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Thread thread = new Thread() { 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void run() { 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.accept().close(); 698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (Exception e) { 708d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes thread.start(); 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client = new Client(ssocket.getLocalPort()); 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.start(); 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int timeout = 10; // wait no more than 5 seconds for handshake 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (!client.handshakeStarted()) { 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // wait for handshake start 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Thread.sleep(500); 848d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (Exception e) { 858d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes timeout--; 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (timeout < 0) { 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.close(); 908d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (IOException ex) { 918d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.close(); 948d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (IOException ex) { 958d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Handshake was not started"); 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (client != null) { 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.close(); 1038d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (IOException ex) { 1048d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (ssocket != null) { 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.close(); 1098d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (IOException ex) { 1108d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * SSLServerSocketImpl(int port, SSLParameters sslParameters) method 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * testing. 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSSLServerSocketImpl2() throws Exception { 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Client client = null; 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocket ssocket = null; 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket = new SSLServerSocketImpl(0, 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes JSSETestData.getSSLParameters()); 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setUseClientMode(true); 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final SSLServerSocket s = ssocket; 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Thread thread = new Thread() { 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void run() { 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.accept().close(); 1338d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (Exception e) { 1348d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes thread.start(); 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client = new Client(ssocket.getLocalPort()); 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.start(); 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int timeout = 10; // wait no more than 5 seconds for handshake 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (!client.handshakeStarted()) { 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // wait for handshake start 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Thread.sleep(500); 1488d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (Exception e) { 1498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes timeout--; 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (timeout < 0) { 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.close(); 1548d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (IOException ex) { 1558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.close(); 1588d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (IOException ex) { 1598d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Handshake was not started"); 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (client != null) { 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.close(); 1678d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (IOException ex) { 1688d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (ssocket != null) { 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.close(); 1738d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (IOException ex) { 1748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * SSLServerSocketImpl(int port, int backlog, 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * SSLParameters sslParameters) method testing. 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSSLServerSocketImpl3() throws Exception { 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Client client = null; 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocket ssocket = null; 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket = new SSLServerSocketImpl(0, 1, 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes JSSETestData.getSSLParameters()); 189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setUseClientMode(true); 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final SSLServerSocket s = ssocket; 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Thread thread = new Thread() { 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void run() { 195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.accept().close(); 1978d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (Exception e) { 1988d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes thread.start(); 203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client = new Client(ssocket.getLocalPort()); 205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.start(); 206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int timeout = 10; // wait no more than 5 seconds for handshake 208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (!client.handshakeStarted()) { 209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // wait for handshake start 210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Thread.sleep(500); 2128d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (Exception e) { 2138d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes timeout--; 215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (timeout < 0) { 216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.close(); 2188d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (IOException ex) { 2198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.close(); 2228d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (IOException ex) { 2238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Handshake was not started"); 225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (client != null) { 229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.close(); 2318d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (IOException ex) { 2328d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (ssocket != null) { 235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.close(); 2378d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (IOException ex) { 2388d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * SSLServerSocketImpl(int port, int backlog, InetAddress iAddress, 245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * SSLParameters sslParameters) method testing. 246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSSLServerSocketImpl4() throws Exception { 248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Client client = null; 249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocket ssocket = null; 250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket = new SSLServerSocketImpl(0, 1, null, 252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes JSSETestData.getSSLParameters()); 253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setUseClientMode(true); 254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final SSLServerSocket s = ssocket; 256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Thread thread = new Thread() { 257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void run() { 259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.accept().close(); 2618d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (Exception e) { 2628d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes thread.start(); 267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client = new Client(ssocket.getLocalPort()); 269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.start(); 270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int timeout = 10; // wait no more than 5 seconds for handshake 272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (!client.handshakeStarted()) { 273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // wait for handshake start 274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Thread.sleep(500); 2768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (Exception e) { 2778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes timeout--; 279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (timeout < 0) { 280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.close(); 2828d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (IOException ex) { 2838d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.close(); 2868d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (IOException ex) { 2878d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Handshake was not started"); 289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (client != null) { 293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.close(); 2958d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (IOException ex) { 2968d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (ssocket != null) { 299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.close(); 3018d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (IOException ex) { 3028d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * getSupportedCipherSuites() method testing. 309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetSupportedCipherSuites() throws Exception { 311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocket ssocket = createSSLServerSocket(); 312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] supported = ssocket.getSupportedCipherSuites(); 313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(supported); 314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes supported[0] = "NOT_SUPPORTED_CIPHER_SUITE"; 315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes supported = ssocket.getEnabledCipherSuites(); 3168d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath for (int i = 0; i < supported.length; i++) { 317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if ("NOT_SUPPORTED_CIPHER_SUITE".equals(supported[i])) { 318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Modification of the returned result " 319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "causes the modification of the internal state"); 320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * getEnabledCipherSuites() method testing. 326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetEnabledCipherSuites() throws Exception { 328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocket ssocket = createSSLServerSocket(); 329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] enabled = ssocket.getEnabledCipherSuites(); 330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(enabled); 331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] supported = ssocket.getSupportedCipherSuites(); 3328d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath for (int i = 0; i < enabled.length; i++) { 333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //System.out.println("Checking of "+enabled[i]); 3348d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath found: 3358d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath { 3368d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath for (int j = 0; j < supported.length; j++) { 337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (enabled[i].equals(supported[j])) { 338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break found; 339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Enabled suite does not belong to the set " 342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "of supported cipher suites: " + enabled[i]); 343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setEnabledCipherSuites(supported); 3468d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath for (int i = 0; i < supported.length; i++) { 347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enabled = new String[supported.length - i]; 348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.arraycopy(supported, 0, 3498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath enabled, 0, supported.length - i); 350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setEnabledCipherSuites(enabled); 351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] result = ssocket.getEnabledCipherSuites(); 352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (result.length != enabled.length) { 353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Returned result does not correspond to expected."); 354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath for (int k = 0; k < result.length; k++) { 3568d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath found: 3578d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath { 3588d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath for (int n = 0; n < enabled.length; n++) { 359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (result[k].equals(enabled[n])) { 360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break found; 361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (result.length != enabled.length) { 364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Returned result does not correspond " 365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "to expected."); 366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * setEnabledCipherSuites(String[] suites) method testing. 374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSetEnabledCipherSuites() throws Exception { 376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocket ssocket = createSSLServerSocket(); 377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] enabled = ssocket.getEnabledCipherSuites(); 378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(enabled); 379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] supported = ssocket.getSupportedCipherSuites(); 3808d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath for (int i = 0; i < enabled.length; i++) { 381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //System.out.println("Checking of "+enabled[i]); 3828d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath found: 3838d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath { 3848d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath for (int j = 0; j < supported.length; j++) { 385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (enabled[i].equals(supported[j])) { 386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break found; 387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Enabled suite does not belong to the set " 390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "of supported cipher suites: " + enabled[i]); 391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setEnabledCipherSuites(supported); 394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setEnabledCipherSuites(enabled); 395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setEnabledCipherSuites(supported); 3968d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath String[] more_than_supported = new String[supported.length + 1]; 3978d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath for (int i = 0; i < supported.length + 1; i++) { 398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes more_than_supported[i] 3998d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath = "NOT_SUPPORTED_CIPHER_SUITE"; 400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.arraycopy(supported, 0, 401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes more_than_supported, 0, i); 402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.arraycopy(supported, i, 4038d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath more_than_supported, i + 1, supported.length - i); 404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setEnabledCipherSuites(more_than_supported); 406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Expected IllegalArgumentException was not thrown"); 4078d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (IllegalArgumentException e) { 4088d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enabled = ssocket.getEnabledCipherSuites(); 411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enabled[0] = "NOT_SUPPORTED_CIPHER_SUITE"; 412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enabled = ssocket.getEnabledCipherSuites(); 4138d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath for (int i = 0; i < enabled.length; i++) { 414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if ("NOT_SUPPORTED_CIPHER_SUITE".equals(enabled[i])) { 415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Modification of the returned result " 416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "causes the modification of the internal state"); 417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * getSupportedProtocols() method testing. 423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetSupportedProtocols() throws Exception { 425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocket ssocket = createSSLServerSocket(); 426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] supported = ssocket.getSupportedProtocols(); 427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(supported); 428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(supported.length == 0); 429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes supported[0] = "NOT_SUPPORTED_PROTOCOL"; 430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes supported = ssocket.getSupportedProtocols(); 4318d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath for (int i = 0; i < supported.length; i++) { 432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if ("NOT_SUPPORTED_PROTOCOL".equals(supported[i])) { 433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Modification of the returned result " 434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "causes the modification of the internal state"); 435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * getEnabledProtocols() method testing. 441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetEnabledProtocols() throws Exception { 443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocket ssocket = createSSLServerSocket(); 444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] enabled = ssocket.getEnabledProtocols(); 445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(enabled); 446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] supported = ssocket.getSupportedProtocols(); 4478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath for (int i = 0; i < enabled.length; i++) { 448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //System.out.println("Checking of "+enabled[i]); 4498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath found: 4508d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath { 4518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath for (int j = 0; j < supported.length; j++) { 452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (enabled[i].equals(supported[j])) { 453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break found; 454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Enabled protocol does not belong to the set " 457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "of supported protocols: " + enabled[i]); 458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setEnabledProtocols(supported); 4618d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath for (int i = 0; i < supported.length; i++) { 462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enabled = new String[supported.length - i]; 463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.arraycopy(supported, i, 4648d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath enabled, 0, supported.length - i); 465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //System.out.println(""); 466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //for (int k=0; k<supported.length - i; k++) { 467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // System.out.println("---- "+enabled[k]); 468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //} 469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setEnabledProtocols(enabled); 470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] result = ssocket.getEnabledProtocols(); 471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (result.length != enabled.length) { 472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Returned result does not correspond to expected."); 473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath for (int k = 0; k < result.length; k++) { 4758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath found: 4768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath { 4778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath for (int n = 0; n < enabled.length; n++) { 478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (result[k].equals(enabled[n])) { 479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break found; 480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (result.length != enabled.length) { 483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Returned result does not correspond " 484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "to expected."); 485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * setEnabledProtocols(String[] protocols) method testing. 493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSetEnabledProtocols() throws Exception { 495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocket ssocket = createSSLServerSocket(); 496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] enabled = ssocket.getEnabledProtocols(); 497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(enabled); 498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] supported = ssocket.getSupportedProtocols(); 4998d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath for (int i = 0; i < enabled.length; i++) { 500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //System.out.println("Checking of "+enabled[i]); 5018d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath found: 5028d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath { 5038d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath for (int j = 0; j < supported.length; j++) { 504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (enabled[i].equals(supported[j])) { 505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break found; 506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Enabled suite does not belong to the set " 509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "of supported cipher suites: " + enabled[i]); 510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setEnabledProtocols(supported); 513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setEnabledProtocols(enabled); 514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setEnabledProtocols(supported); 5158d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath String[] more_than_supported = new String[supported.length + 1]; 5168d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath for (int i = 0; i < supported.length + 1; i++) { 517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes more_than_supported[i] 5188d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath = "NOT_SUPPORTED_PROTOCOL"; 519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.arraycopy(supported, 0, 520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes more_than_supported, 0, i); 521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.arraycopy(supported, i, 5228d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath more_than_supported, i + 1, supported.length - i); 523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setEnabledProtocols(more_than_supported); 525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Expected IllegalArgumentException was not thrown"); 5268d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (IllegalArgumentException e) { 5278d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enabled = ssocket.getEnabledProtocols(); 530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enabled[0] = "NOT_SUPPORTED_PROTOCOL"; 531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enabled = ssocket.getEnabledProtocols(); 5328d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath for (int i = 0; i < enabled.length; i++) { 533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if ("NOT_SUPPORTED_PROTOCOL".equals(enabled[i])) { 534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Modification of the returned result " 535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "causes the modification of the internal state"); 536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * setUseClientMode(boolean mode) method testing. 542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * getUseClientMode() method testing. 543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSetGetUseClientMode() throws Exception { 545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocket ssocket = createSSLServerSocket(); 546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setUseClientMode(false); 548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("Result does not correspond to expected", 549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.getUseClientMode()); 550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setUseClientMode(true); 551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Result does not correspond to expected", 552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.getUseClientMode()); 553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * setNeedClientAuth(boolean need) method testing. 557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * getNeedClientAuth() method testing. 558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSetGetNeedClientAuth() throws Exception { 560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocket ssocket = createSSLServerSocket(); 561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setWantClientAuth(true); 563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setNeedClientAuth(false); 564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("Result does not correspond to expected", 565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.getNeedClientAuth()); 566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("Socket did not reset its want client auth state", 567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.getWantClientAuth()); 568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setWantClientAuth(true); 569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setNeedClientAuth(true); 570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Result does not correspond to expected", 571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.getNeedClientAuth()); 572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("Socket did not reset its want client auth state", 573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.getWantClientAuth()); 574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * setWantClientAuth(boolean want) method testing. 578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * getWantClientAuth() method testing. 579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSetGetWantClientAuth() throws Exception { 581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocket ssocket = createSSLServerSocket(); 582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setNeedClientAuth(true); 584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setWantClientAuth(false); 585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("Result does not correspond to expected", 586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.getWantClientAuth()); 587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("Socket did not reset its want client auth state", 588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.getNeedClientAuth()); 589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setNeedClientAuth(true); 590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setWantClientAuth(true); 591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Result does not correspond to expected", 592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.getWantClientAuth()); 593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("Socket did not reset its want client auth state", 594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.getNeedClientAuth()); 595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * setEnableSessionCreation(boolean flag) method testing. 599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * getEnableSessionCreation() method testing. 600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSetGetEnableSessionCreation() throws Exception { 602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocket ssocket = createSSLServerSocket(); 603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setEnableSessionCreation(false); 605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("Result does not correspond to expected", 606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.getEnableSessionCreation()); 607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setEnableSessionCreation(true); 608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Result does not correspond to expected", 609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.getEnableSessionCreation()); 610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * toString() method testing. 614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testToString() throws Exception { 616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocket ssocket = createSSLServerSocket(); 617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull("String representation is null", ssocket.toString()); 618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class Client extends Thread { 621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private boolean closed; 623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private boolean handshake_started = false; 624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private Socket client = null; 625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private int port; 626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public Client(int port) throws IOException { 628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(); 629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes this.port = port; 630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client = new Socket(); 631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.setSoTimeout(10000); 632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public int getPort() { 635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return client.getLocalPort(); 636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void run() { 640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (!closed) { 641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (doLog) { 643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.print("."); 644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (!handshake_started) { 646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.connect( 647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new InetSocketAddress("localhost", port)); 648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.getInputStream().read(); 649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes handshake_started = true; 650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Thread.sleep(1000); 652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Exception e) { 653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.printStackTrace(); 654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (client != null) { 657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.close(); 6598d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (IOException e) { 6608d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //System.out.println("===== client has been stopped"); 663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean handshakeStarted() { 666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return handshake_started; 667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void close() throws IOException { 670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes closed = true; 671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.close(); 672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 6748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 6758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 6768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ; 677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static Test suite() { 679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return new TestSuite(SSLServerSocketImplTest.class); 680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 683