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(); 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Exception e) { } 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes thread.start(); 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client = new Client(ssocket.getLocalPort()); 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.start(); 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int timeout = 10; // wait no more than 5 seconds for handshake 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (!client.handshakeStarted()) { 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // wait for handshake start 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Thread.sleep(500); 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Exception e) { } 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes timeout--; 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (timeout < 0) { 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.close(); 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ex) { } 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.close(); 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ex) { } 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Handshake was not started"); 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (client != null) { 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.close(); 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ex) { } 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (ssocket != null) { 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.close(); 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ex) { } 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * SSLServerSocketImpl(int port, SSLParameters sslParameters) method 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * testing. 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSSLServerSocketImpl2() throws Exception { 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Client client = null; 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocket ssocket = null; 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket = new SSLServerSocketImpl(0, 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes JSSETestData.getSSLParameters()); 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setUseClientMode(true); 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final SSLServerSocket s = ssocket; 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Thread thread = new Thread() { 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void run() { 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.accept().close(); 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Exception e) { } 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes thread.start(); 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client = new Client(ssocket.getLocalPort()); 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.start(); 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int timeout = 10; // wait no more than 5 seconds for handshake 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (!client.handshakeStarted()) { 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // wait for handshake start 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Thread.sleep(500); 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Exception e) { } 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes timeout--; 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (timeout < 0) { 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.close(); 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ex) { } 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.close(); 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ex) { } 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Handshake was not started"); 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (client != null) { 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.close(); 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ex) { } 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (ssocket != null) { 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.close(); 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ex) { } 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * SSLServerSocketImpl(int port, int backlog, 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * SSLParameters sslParameters) method testing. 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSSLServerSocketImpl3() throws Exception { 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Client client = null; 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocket ssocket = null; 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket = new SSLServerSocketImpl(0, 1, 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes JSSETestData.getSSLParameters()); 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setUseClientMode(true); 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final SSLServerSocket s = ssocket; 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Thread thread = new Thread() { 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void run() { 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.accept().close(); 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Exception e) { } 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes thread.start(); 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client = new Client(ssocket.getLocalPort()); 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.start(); 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int timeout = 10; // wait no more than 5 seconds for handshake 195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (!client.handshakeStarted()) { 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // wait for handshake start 197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Thread.sleep(500); 199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Exception e) { } 200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes timeout--; 201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (timeout < 0) { 202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.close(); 204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ex) { } 205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.close(); 207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ex) { } 208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Handshake was not started"); 209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (client != null) { 213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.close(); 215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ex) { } 216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (ssocket != null) { 218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.close(); 220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ex) { } 221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * SSLServerSocketImpl(int port, int backlog, InetAddress iAddress, 227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * SSLParameters sslParameters) method testing. 228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSSLServerSocketImpl4() throws Exception { 230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Client client = null; 231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocket ssocket = null; 232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket = new SSLServerSocketImpl(0, 1, null, 234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes JSSETestData.getSSLParameters()); 235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setUseClientMode(true); 236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final SSLServerSocket s = ssocket; 238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Thread thread = new Thread() { 239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void run() { 241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.accept().close(); 243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Exception e) { } 244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes thread.start(); 248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client = new Client(ssocket.getLocalPort()); 250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.start(); 251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int timeout = 10; // wait no more than 5 seconds for handshake 253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (!client.handshakeStarted()) { 254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // wait for handshake start 255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Thread.sleep(500); 257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Exception e) { } 258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes timeout--; 259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (timeout < 0) { 260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.close(); 262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ex) { } 263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.close(); 265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ex) { } 266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Handshake was not started"); 267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (client != null) { 271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.close(); 273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ex) { } 274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (ssocket != null) { 276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.close(); 278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ex) { } 279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * getSupportedCipherSuites() method testing. 285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetSupportedCipherSuites() throws Exception { 287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocket ssocket = createSSLServerSocket(); 288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] supported = ssocket.getSupportedCipherSuites(); 289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(supported); 290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes supported[0] = "NOT_SUPPORTED_CIPHER_SUITE"; 291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes supported = ssocket.getEnabledCipherSuites(); 292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i=0; i<supported.length; i++) { 293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if ("NOT_SUPPORTED_CIPHER_SUITE".equals(supported[i])) { 294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Modification of the returned result " 295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "causes the modification of the internal state"); 296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * getEnabledCipherSuites() method testing. 302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetEnabledCipherSuites() throws Exception { 304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocket ssocket = createSSLServerSocket(); 305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] enabled = ssocket.getEnabledCipherSuites(); 306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(enabled); 307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] supported = ssocket.getSupportedCipherSuites(); 308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i=0; i<enabled.length; i++) { 309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //System.out.println("Checking of "+enabled[i]); 310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes found: { 311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int j=0; j<supported.length; j++) { 312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (enabled[i].equals(supported[j])) { 313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break found; 314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Enabled suite does not belong to the set " 317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "of supported cipher suites: " + enabled[i]); 318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setEnabledCipherSuites(supported); 321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i=0; i<supported.length; i++) { 322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enabled = new String[supported.length - i]; 323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.arraycopy(supported, 0, 324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enabled, 0, supported.length-i); 325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setEnabledCipherSuites(enabled); 326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] result = ssocket.getEnabledCipherSuites(); 327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (result.length != enabled.length) { 328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Returned result does not correspond to expected."); 329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int k=0; k<result.length; k++) { 331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes found: { 332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int n=0; n<enabled.length; n++) { 333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (result[k].equals(enabled[n])) { 334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break found; 335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (result.length != enabled.length) { 338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Returned result does not correspond " 339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "to expected."); 340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * setEnabledCipherSuites(String[] suites) method testing. 348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSetEnabledCipherSuites() throws Exception { 350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocket ssocket = createSSLServerSocket(); 351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] enabled = ssocket.getEnabledCipherSuites(); 352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(enabled); 353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] supported = ssocket.getSupportedCipherSuites(); 354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i=0; i<enabled.length; i++) { 355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //System.out.println("Checking of "+enabled[i]); 356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes found: { 357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int j=0; j<supported.length; j++) { 358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (enabled[i].equals(supported[j])) { 359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break found; 360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Enabled suite does not belong to the set " 363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "of supported cipher suites: " + enabled[i]); 364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setEnabledCipherSuites(supported); 367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setEnabledCipherSuites(enabled); 368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setEnabledCipherSuites(supported); 369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] more_than_supported = new String[supported.length+1]; 370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i=0; i<supported.length+1; i++) { 371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes more_than_supported[i] 372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes = "NOT_SUPPORTED_CIPHER_SUITE"; 373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.arraycopy(supported, 0, 374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes more_than_supported, 0, i); 375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.arraycopy(supported, i, 376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes more_than_supported, i+1, supported.length-i); 377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setEnabledCipherSuites(more_than_supported); 379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Expected IllegalArgumentException was not thrown"); 380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { } 381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enabled = ssocket.getEnabledCipherSuites(); 383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enabled[0] = "NOT_SUPPORTED_CIPHER_SUITE"; 384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enabled = ssocket.getEnabledCipherSuites(); 385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i=0; i<enabled.length; i++) { 386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if ("NOT_SUPPORTED_CIPHER_SUITE".equals(enabled[i])) { 387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Modification of the returned result " 388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "causes the modification of the internal state"); 389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * getSupportedProtocols() method testing. 395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetSupportedProtocols() throws Exception { 397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocket ssocket = createSSLServerSocket(); 398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] supported = ssocket.getSupportedProtocols(); 399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(supported); 400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(supported.length == 0); 401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes supported[0] = "NOT_SUPPORTED_PROTOCOL"; 402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes supported = ssocket.getSupportedProtocols(); 403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i=0; i<supported.length; i++) { 404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if ("NOT_SUPPORTED_PROTOCOL".equals(supported[i])) { 405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Modification of the returned result " 406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "causes the modification of the internal state"); 407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * getEnabledProtocols() method testing. 413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetEnabledProtocols() throws Exception { 415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocket ssocket = createSSLServerSocket(); 416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] enabled = ssocket.getEnabledProtocols(); 417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(enabled); 418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] supported = ssocket.getSupportedProtocols(); 419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i=0; i<enabled.length; i++) { 420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //System.out.println("Checking of "+enabled[i]); 421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes found: { 422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int j=0; j<supported.length; j++) { 423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (enabled[i].equals(supported[j])) { 424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break found; 425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Enabled protocol does not belong to the set " 428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "of supported protocols: " + enabled[i]); 429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setEnabledProtocols(supported); 432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i=0; i<supported.length; i++) { 433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enabled = new String[supported.length - i]; 434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.arraycopy(supported, i, 435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enabled, 0, supported.length-i); 436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //System.out.println(""); 437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //for (int k=0; k<supported.length - i; k++) { 438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // System.out.println("---- "+enabled[k]); 439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //} 440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setEnabledProtocols(enabled); 441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] result = ssocket.getEnabledProtocols(); 442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (result.length != enabled.length) { 443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Returned result does not correspond to expected."); 444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int k=0; k<result.length; k++) { 446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes found: { 447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int n=0; n<enabled.length; n++) { 448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (result[k].equals(enabled[n])) { 449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break found; 450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (result.length != enabled.length) { 453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Returned result does not correspond " 454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "to expected."); 455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * setEnabledProtocols(String[] protocols) method testing. 463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSetEnabledProtocols() throws Exception { 465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocket ssocket = createSSLServerSocket(); 466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] enabled = ssocket.getEnabledProtocols(); 467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(enabled); 468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] supported = ssocket.getSupportedProtocols(); 469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i=0; i<enabled.length; i++) { 470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //System.out.println("Checking of "+enabled[i]); 471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes found: { 472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int j=0; j<supported.length; j++) { 473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (enabled[i].equals(supported[j])) { 474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break found; 475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Enabled suite does not belong to the set " 478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "of supported cipher suites: " + enabled[i]); 479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setEnabledProtocols(supported); 482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setEnabledProtocols(enabled); 483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setEnabledProtocols(supported); 484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] more_than_supported = new String[supported.length+1]; 485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i=0; i<supported.length+1; i++) { 486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes more_than_supported[i] 487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes = "NOT_SUPPORTED_PROTOCOL"; 488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.arraycopy(supported, 0, 489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes more_than_supported, 0, i); 490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.arraycopy(supported, i, 491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes more_than_supported, i+1, supported.length-i); 492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setEnabledProtocols(more_than_supported); 494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Expected IllegalArgumentException was not thrown"); 495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { } 496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enabled = ssocket.getEnabledProtocols(); 498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enabled[0] = "NOT_SUPPORTED_PROTOCOL"; 499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enabled = ssocket.getEnabledProtocols(); 500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i=0; i<enabled.length; i++) { 501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if ("NOT_SUPPORTED_PROTOCOL".equals(enabled[i])) { 502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Modification of the returned result " 503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "causes the modification of the internal state"); 504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * setUseClientMode(boolean mode) method testing. 510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * getUseClientMode() method testing. 511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSetGetUseClientMode() throws Exception { 513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocket ssocket = createSSLServerSocket(); 514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setUseClientMode(false); 516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("Result does not correspond to expected", 517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.getUseClientMode()); 518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setUseClientMode(true); 519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Result does not correspond to expected", 520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.getUseClientMode()); 521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * setNeedClientAuth(boolean need) method testing. 525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * getNeedClientAuth() method testing. 526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSetGetNeedClientAuth() throws Exception { 528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocket ssocket = createSSLServerSocket(); 529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setWantClientAuth(true); 531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setNeedClientAuth(false); 532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("Result does not correspond to expected", 533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.getNeedClientAuth()); 534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("Socket did not reset its want client auth state", 535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.getWantClientAuth()); 536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setWantClientAuth(true); 537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setNeedClientAuth(true); 538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Result does not correspond to expected", 539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.getNeedClientAuth()); 540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("Socket did not reset its want client auth state", 541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.getWantClientAuth()); 542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * setWantClientAuth(boolean want) method testing. 546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * getWantClientAuth() method testing. 547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSetGetWantClientAuth() throws Exception { 549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocket ssocket = createSSLServerSocket(); 550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setNeedClientAuth(true); 552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setWantClientAuth(false); 553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("Result does not correspond to expected", 554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.getWantClientAuth()); 555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("Socket did not reset its want client auth state", 556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.getNeedClientAuth()); 557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setNeedClientAuth(true); 558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setWantClientAuth(true); 559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Result does not correspond to expected", 560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.getWantClientAuth()); 561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("Socket did not reset its want client auth state", 562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.getNeedClientAuth()); 563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * setEnableSessionCreation(boolean flag) method testing. 567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * getEnableSessionCreation() method testing. 568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSetGetEnableSessionCreation() throws Exception { 570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocket ssocket = createSSLServerSocket(); 571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setEnableSessionCreation(false); 573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("Result does not correspond to expected", 574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.getEnableSessionCreation()); 575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.setEnableSessionCreation(true); 576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Result does not correspond to expected", 577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ssocket.getEnableSessionCreation()); 578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * toString() method testing. 582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testToString() throws Exception { 584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLServerSocket ssocket = createSSLServerSocket(); 585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull("String representation is null", ssocket.toString()); 586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class Client extends Thread { 589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private boolean closed; 591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private boolean handshake_started = false; 592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private Socket client = null; 593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private int port; 594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public Client(int port) throws IOException { 596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(); 597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes this.port = port; 598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client = new Socket(); 599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.setSoTimeout(10000); 600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public int getPort() { 603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return client.getLocalPort(); 604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void run() { 608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (!closed) { 609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (doLog) { 611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.print("."); 612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (!handshake_started) { 614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.connect( 615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new InetSocketAddress("localhost", port)); 616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.getInputStream().read(); 617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes handshake_started = true; 618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Thread.sleep(1000); 620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Exception e) { 621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.printStackTrace(); 622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (client != null) { 625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.close(); 627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { } 628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //System.out.println("===== client has been stopped"); 630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean handshakeStarted() { 633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return handshake_started; 634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void close() throws IOException { 637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes closed = true; 638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.close(); 639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static Test suite() { 644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return new TestSuite(SSLServerSocketImplTest.class); 645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 648