SSLServerSocketTest.java revision f33eae7e84eb6d3b0f4e86b59605bb3de73009f3
1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * you may not use this file except in compliance with the License. 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * You may obtain a copy of the License at 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 16eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage tests.api.javax.net.ssl; 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestLevel; 20eff7bc0401e656948b0f491d88fe134843ef1573Urs Grobimport dalvik.annotation.TestTargetClass; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestTargetNew; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestTargets; 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase; 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 26eff7bc0401e656948b0f491d88fe134843ef1573Urs Grobimport org.apache.harmony.luni.util.Base64; 27eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.support.Support_PortManager; 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 30eff7bc0401e656948b0f491d88fe134843ef1573Urs Grobimport java.io.ByteArrayInputStream; 31eff7bc0401e656948b0f491d88fe134843ef1573Urs Grobimport java.io.IOException; 32eff7bc0401e656948b0f491d88fe134843ef1573Urs Grobimport java.io.InputStream; 33eff7bc0401e656948b0f491d88fe134843ef1573Urs Grobimport java.net.InetAddress; 34eff7bc0401e656948b0f491d88fe134843ef1573Urs Grobimport java.security.KeyStore; 35d87bb037ea1e7c877b9f81359a5d6675097e46deElliott Hughesimport java.security.SecureRandom; 36e92ca10c7620dd54c5e13fdabb6f1ff6adefd9fdBrian Carlstromimport java.util.Arrays; 37eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob 38eff7bc0401e656948b0f491d88fe134843ef1573Urs Grobimport javax.net.ssl.KeyManager; 39eff7bc0401e656948b0f491d88fe134843ef1573Urs Grobimport javax.net.ssl.KeyManagerFactory; 40eff7bc0401e656948b0f491d88fe134843ef1573Urs Grobimport javax.net.ssl.SSLContext; 41eff7bc0401e656948b0f491d88fe134843ef1573Urs Grobimport javax.net.ssl.SSLServerSocket; 42eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob 43f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes@TestTargetClass(SSLServerSocket.class) 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class SSLServerSocketTest extends TestCase { 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 46eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob // set to true if on Android, false if on RI 47eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob boolean useBKS = true; 48eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Additional class for SSLServerSocket constructor verification 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project class mySSLServerSocket extends SSLServerSocket { 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public mySSLServerSocket() throws IOException{ 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super(); 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 57eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public mySSLServerSocket(int port) throws IOException{ 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super(port); 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 61eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public mySSLServerSocket(int port, int backlog) throws IOException{ 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super(port, backlog); 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 65eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public mySSLServerSocket(int port, int backlog, InetAddress address) throws IOException{ 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super(port, backlog, address); 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 69eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String[] getSupportedCipherSuites() { 71eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob return null; 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 73eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setEnabledCipherSuites(String[] suites) { 75eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 77eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String[] getEnabledCipherSuites() { 79eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob return null; 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 81eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String[] getSupportedProtocols() { 83eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob return null; 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 85eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String[] getEnabledProtocols() { 87eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob return null; 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 89eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setEnabledProtocols(String[] protocols) { 91eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 93f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setEnableSessionCreation(boolean flag) { 95eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 97eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean getEnableSessionCreation() { 99eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob return false; 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 101f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setNeedClientAuth(boolean need) { 103eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 105eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean getNeedClientAuth() { 107eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob return false; 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 109f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean getUseClientMode() { 111eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob return false; 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 113eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setUseClientMode(boolean mode) { 115eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 117f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean getWantClientAuth() { 119eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob return false; 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setWantClientAuth(boolean mode) { 122eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 125f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 127f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * @tests javax.net.ssl.SSLServerSocket#SSLServerSocket() 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.SUFFICIENT, 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "IOException wasn't implemented", 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "SSLServerSocket", 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testConstructor_01() { 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 137eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob SSLServerSocket ssl = new mySSLServerSocket(); 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception ex) { 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected exception was thrown " + ex); 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 142f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 144f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * @tests javax.net.ssl.SSLServerSocket#SSLServerSocket(int port) 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "SSLServerSocket", 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {int.class} 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testConstructor_02() { 153eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob SSLServerSocket ssl; 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int[] port_invalid = {-1, 65536, Integer.MIN_VALUE, Integer.MAX_VALUE}; 156f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ssl = new mySSLServerSocket(portNumber); 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(portNumber, ssl.getLocalPort()); 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception ex) { 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected exception was thrown " + ex); 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 163f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < port_invalid.length; i++) { 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ssl = new mySSLServerSocket(port_invalid[i]); 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException should be thrown"); 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException iae) { 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //expected 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(e + " was thrown instead of IllegalArgumentException"); 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 174f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ssl = new mySSLServerSocket(portNumber); 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new mySSLServerSocket(portNumber); 178eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob fail("IOException Expected when opening an already opened port"); 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException ioe) { 180eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob // expected 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception ex) { 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected exception was thrown " + ex); 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 185f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 187f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * @tests javax.net.ssl.SSLServerSocket#SSLServerSocket(int port, int backlog) 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.SUFFICIENT, 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "Invalid values for backlog weren't checked", 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "SSLServerSocket", 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {int.class, int.class} 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testConstructor_03() { 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mySSLServerSocket ssl; 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int[] port_invalid = {-1, Integer.MIN_VALUE, Integer.MAX_VALUE}; 199f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ssl = new mySSLServerSocket(portNumber, 1); 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(portNumber, ssl.getLocalPort()); 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception ex) { 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected exception was thrown"); 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 206f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < port_invalid.length; i++) { 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ssl = new mySSLServerSocket(port_invalid[i], 1); 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException should be thrown"); 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException iae) { 212eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob // expected 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(e + " was thrown instead of IllegalArgumentException"); 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 217f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project portNumber = Support_PortManager.getNextPort(); 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ssl = new mySSLServerSocket(portNumber, 1); 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new mySSLServerSocket(portNumber, 1); 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IOException should be thrown"); 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException ioe) { 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 226f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 228f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * @tests javax.net.ssl.SSLServerSocket#SSLServerSocket(int port, int backlog, InetAddress address) 229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.SUFFICIENT, 232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "Invalid values for backlog weren\'t checked", 233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "SSLServerSocket", 234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {int.class, int.class, InetAddress.class} 235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testConstructor_04() { 237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mySSLServerSocket ssl; 238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project InetAddress ia = null; 239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int[] port_invalid = {-1, 65536, Integer.MIN_VALUE, Integer.MAX_VALUE}; 241f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ssl = new mySSLServerSocket(portNumber, 0, ia); 244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(portNumber, ssl.getLocalPort()); 245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception ex) { 246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected exception was thrown"); 247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 248f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project portNumber = Support_PortManager.getNextPort(); 250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ssl = new mySSLServerSocket(portNumber, 0, InetAddress.getLocalHost()); 252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(portNumber, ssl.getLocalPort()); 253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception ex) { 254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected exception was thrown"); 255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 256f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < port_invalid.length; i++) { 258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ssl = new mySSLServerSocket(port_invalid[i], 1, InetAddress.getLocalHost()); 260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException should be thrown"); 261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException iae) { 262eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob // expected 263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(e + " was thrown instead of IllegalArgumentException"); 265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 267f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project portNumber = Support_PortManager.getNextPort(); 269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ssl = new mySSLServerSocket(portNumber, 0, InetAddress.getLocalHost()); 271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new mySSLServerSocket(portNumber, 0, InetAddress.getLocalHost()); 272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IOException should be thrown for"); 273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException ioe) { 274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 275f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes } 276f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 278f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * @throws Exception 279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests javax.net.ssl.SSLServerSocket#getSupportedCipherSuites() 280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getSupportedCipherSuites", 285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 287eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob public void test_getSupportedCipherSuites() throws Exception { 288eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob SSLServerSocket sss = getSSLServerSocket(); 289eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob String[] res = sss.getSupportedCipherSuites(); 290eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob assertNotNull("NULL result", res); 291eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob assertTrue("no supported cipher suites available.", res.length > 0); 292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 293eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob 294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 295f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * @throws IOException 296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests javax.net.ssl.SSLServerSocket#getEnabledCipherSuites() 297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests javax.net.ssl.SSLServerSocket#setEnabledCipherSuites(String[] suites) 298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargets({ 300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getEnabledCipherSuites", 304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ), 306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setEnabledCipherSuites", 310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {String[].class} 311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 312f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes }) 313eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob public void test_EnabledCipherSuites() throws Exception { 314eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob SSLServerSocket sss = getSSLServerSocket(); 315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 316eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob sss.setEnabledCipherSuites(null); 317eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob } catch (IllegalArgumentException iae) { 318eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob //expected 319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 320eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob String[] unsupportedCipherSuites = {"unsupported"}; 321eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob try { 322eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob sss.setEnabledCipherSuites(unsupportedCipherSuites); 323eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob } catch (IllegalArgumentException iae) { 324eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob //expected 325eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob } 326eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob int count = sss.getSupportedCipherSuites().length; 327eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob assertTrue("No supported cipher suites", count > 0); 328eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob sss.setEnabledCipherSuites(sss.getSupportedCipherSuites()); 329eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob String[] res = sss.getEnabledCipherSuites(); 330eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob assertNotNull("NULL result", res); 331e92ca10c7620dd54c5e13fdabb6f1ff6adefd9fdBrian Carlstrom assertEquals("not all supported cipher suites were enabled", 332e92ca10c7620dd54c5e13fdabb6f1ff6adefd9fdBrian Carlstrom Arrays.asList(sss.getSupportedCipherSuites()), 333e92ca10c7620dd54c5e13fdabb6f1ff6adefd9fdBrian Carlstrom Arrays.asList(res)); 334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 335f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 337f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * @throws IOException 338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests javax.net.ssl.SSLServerSocket#getSupportedProtocols() 339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getSupportedProtocols", 344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 346eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob public void test_getSupportedProtocols() throws Exception { 347eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob SSLServerSocket sss = getSSLServerSocket(); 348eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob String[] res = sss.getSupportedCipherSuites(); 349eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob assertNotNull("NULL result", res); 350eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob assertTrue("no supported protocols available.", res.length > 0); 351adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 352f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 354f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * @throws IOException 355adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests javax.net.ssl.SSLServerSocket#getEnabledProtocols() 356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests javax.net.ssl.SSLServerSocket#setEnabledProtocols(String[] protocols) 357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargets({ 359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setEnabledProtocols", 363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {String[].class} 364adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ), 365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getEnabledProtocols", 369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 371eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob }) 372eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob public void test_EnabledProtocols() throws Exception { 373eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob SSLServerSocket sss = getSSLServerSocket(); 374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 375eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob sss.setEnabledProtocols(null); 376eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob } catch (IllegalArgumentException iae) { 377eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob //expected 378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 379eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob String[] unsupportedProtocols = {"unsupported"}; 380eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob try { 381eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob sss.setEnabledProtocols(unsupportedProtocols); 382eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob } catch (IllegalArgumentException iae) { 383eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob //expected 384eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob } 385eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob int count = sss.getSupportedProtocols().length; 386eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob assertTrue("No supported protocols", count > 0); 387eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob sss.setEnabledProtocols(sss.getSupportedProtocols()); 388eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob String[] res = sss.getEnabledProtocols(); 389eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob assertNotNull("NULL result", res); 390eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob assertTrue("no enabled protocols.", res.length == count); 391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 392f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 393adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 394f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * @throws IOException 395f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * @tests javax.net.ssl.SSLServerSocket#setEnableSessionCreation(boolean flag) 396adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests javax.net.ssl.SSLServerSocket#getEnableSessionCreation() 397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 398adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargets({ 399adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 400adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 402adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getEnableSessionCreation", 403adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ), 405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setEnableSessionCreation", 409adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {boolean.class} 410adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 411adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }) 412eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob public void test_EnableSessionCreation() throws Exception { 413eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob SSLServerSocket sss = getSSLServerSocket(); 414eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob assertTrue(sss.getEnableSessionCreation()); 415eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob sss.setEnableSessionCreation(false); 416eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob assertFalse(sss.getEnableSessionCreation()); 417eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob sss.setEnableSessionCreation(true); 418eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob assertTrue(sss.getEnableSessionCreation()); 419adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 420f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 422f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * @throws IOException 423f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * @tests javax.net.ssl.SSLServerSocket#setNeedClientAuth(boolean need) 424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests javax.net.ssl.SSLServerSocket#getNeedClientAuthCreation() 425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargets({ 427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 430adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setNeedClientAuth", 431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {boolean.class} 432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ), 433adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 434adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getNeedClientAuth", 437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 438adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }) 440eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob public void test_NeedClientAuth() throws Exception { 441eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob SSLServerSocket sss = getSSLServerSocket(); 442eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob sss.setNeedClientAuth(true); 443eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob assertTrue(sss.getNeedClientAuth()); 444eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob sss.setNeedClientAuth(false); 445eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob assertFalse(sss.getNeedClientAuth()); 446adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 447f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 449f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * @throws IOException 450adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests javax.net.ssl.SSLServerSocket#getUseClientMode() 451adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests javax.net.ssl.SSLServerSocket#setUseClientMode(boolean mode) 452adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 453adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargets({ 454adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 455adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 457adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getUseClientMode", 458adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ), 460adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 461adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 462adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setUseClientMode", 464adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {boolean.class} 465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 466adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }) 467eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob public void test_UseClientMode() throws Exception { 468eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob SSLServerSocket sss = getSSLServerSocket(); 469eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob sss.setUseClientMode(false); 470eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob assertFalse(sss.getUseClientMode()); 471eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob sss.setUseClientMode(true); 472eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob assertTrue(sss.getUseClientMode()); 473adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 474f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 475adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 476f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * @throws IOException 477f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * @tests javax.net.ssl.SSLServerSocket#setWantClientAuth(boolean want) 478adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests javax.net.ssl.SSLServerSocket#getWantClientAuthCreation() 479adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 480adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargets({ 481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 482adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 483adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 484adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getWantClientAuth", 485adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 486adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ), 487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 488adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 489adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 490adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setWantClientAuth", 491adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {boolean.class} 492adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 493adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }) 494eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob public void test_WantClientAuth() throws Exception { 495eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob SSLServerSocket sss = getSSLServerSocket(); 496eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob sss.setWantClientAuth(true); 497eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob assertTrue(sss.getWantClientAuth()); 498eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob sss.setWantClientAuth(false); 499eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob assertFalse(sss.getWantClientAuth()); 500eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob } 501eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob 502eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob 503f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes /** 504eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob * Defines the keystore contents for the server, BKS version. Holds just a 505eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob * single self-generated key. The subject name is "Test Server". 506eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob */ 507f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes private static final String SERVER_KEYS_BKS = 508eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "AAAAAQAAABQDkebzoP1XwqyWKRCJEpn/t8dqIQAABDkEAAVteWtleQAAARpYl20nAAAAAQAFWC41" + 509eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "MDkAAAJNMIICSTCCAbKgAwIBAgIESEfU1jANBgkqhkiG9w0BAQUFADBpMQswCQYDVQQGEwJVUzET" + 510eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "MBEGA1UECBMKQ2FsaWZvcm5pYTEMMAoGA1UEBxMDTVRWMQ8wDQYDVQQKEwZHb29nbGUxEDAOBgNV" + 511eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "BAsTB0FuZHJvaWQxFDASBgNVBAMTC1Rlc3QgU2VydmVyMB4XDTA4MDYwNTExNTgxNFoXDTA4MDkw" + 512eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "MzExNTgxNFowaTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExDDAKBgNVBAcTA01U" + 513eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "VjEPMA0GA1UEChMGR29vZ2xlMRAwDgYDVQQLEwdBbmRyb2lkMRQwEgYDVQQDEwtUZXN0IFNlcnZl" + 514eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "cjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0LIdKaIr9/vsTq8BZlA3R+NFWRaH4lGsTAQy" + 515eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "DPMF9ZqEDOaL6DJuu0colSBBBQ85hQTPa9m9nyJoN3pEi1hgamqOvQIWcXBk+SOpUGRZZFXwniJV" + 516eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "zDKU5nE9MYgn2B9AoiH3CSuMz6HRqgVaqtppIe1jhukMc/kHVJvlKRNy9XMCAwEAATANBgkqhkiG" + 517eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "9w0BAQUFAAOBgQC7yBmJ9O/eWDGtSH9BH0R3dh2NdST3W9hNZ8hIa8U8klhNHbUCSSktZmZkvbPU" + 518eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "hse5LI3dh6RyNDuqDrbYwcqzKbFJaq/jX9kCoeb3vgbQElMRX8D2ID1vRjxwlALFISrtaN4VpWzV" + 519eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "yeoHPW4xldeZmoVtjn8zXNzQhLuBqX2MmAAAAqwAAAAUvkUScfw9yCSmALruURNmtBai7kQAAAZx" + 520eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "4Jmijxs/l8EBaleaUru6EOPioWkUAEVWCxjM/TxbGHOi2VMsQWqRr/DZ3wsDmtQgw3QTrUK666sR" + 521eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "MBnbqdnyCyvM1J2V1xxLXPUeRBmR2CXorYGF9Dye7NkgVdfA+9g9L/0Au6Ugn+2Cj5leoIgkgApN" + 522eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "vuEcZegFlNOUPVEs3SlBgUF1BY6OBM0UBHTPwGGxFBBcetcuMRbUnu65vyDG0pslT59qpaR0TMVs" + 523eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "P+tcheEzhyjbfM32/vwhnL9dBEgM8qMt0sqF6itNOQU/F4WGkK2Cm2v4CYEyKYw325fEhzTXosck" + 524eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "MhbqmcyLab8EPceWF3dweoUT76+jEZx8lV2dapR+CmczQI43tV9btsd1xiBbBHAKvymm9Ep9bPzM" + 525eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "J0MQi+OtURL9Lxke/70/MRueqbPeUlOaGvANTmXQD2OnW7PISwJ9lpeLfTG0LcqkoqkbtLKQLYHI" + 526eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "rQfV5j0j+wmvmpMxzjN3uvNajLa4zQ8l0Eok9SFaRr2RL0gN8Q2JegfOL4pUiHPsh64WWya2NB7f" + 527eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "V+1s65eA5ospXYsShRjo046QhGTmymwXXzdzuxu8IlnTEont6P4+J+GsWk6cldGbl20hctuUKzyx" + 528eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "OptjEPOKejV60iDCYGmHbCWAzQ8h5MILV82IclzNViZmzAapeeCnexhpXhWTs+xDEYSKEiG/camt" + 529eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "bhmZc3BcyVJrW23PktSfpBQ6D8ZxoMfF0L7V2GQMaUg+3r7ucrx82kpqotjv0xHghNIm95aBr1Qw" + 530eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "1gaEjsC/0wGmmBDg1dTDH+F1p9TInzr3EFuYD0YiQ7YlAHq3cPuyGoLXJ5dXYuSBfhDXJSeddUkl" + 531eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "k1ufZyOOcskeInQge7jzaRfmKg3U94r+spMEvb0AzDQVOKvjjo1ivxMSgFRZaDb/4qw="; 532eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob 533f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes /** 534eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob * Defines the keystore contents for the server, JKS version. Holds just a 535eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob * single self-generated key. The subject name is "Test Server". 536eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob */ 537f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes private static final String SERVER_KEYS_JKS = 538eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "/u3+7QAAAAIAAAABAAAAAQAFbXlrZXkAAAEaWFfBeAAAArowggK2MA4GCisGAQQBKgIRAQEFAASC" + 539eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "AqI2kp5XjnF8YZkhcF92YsJNQkvsmH7zqMM87j23zSoV4DwyE3XeC/gZWq1ToScIhoqZkzlbWcu4" + 540eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "T/Zfc/DrfGk/rKbBL1uWKGZ8fMtlZk8KoAhxZk1JSyJvdkyKxqmzUbxk1OFMlN2VJNu97FPVH+du" + 541eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "dvjTvmpdoM81INWBW/1fZJeQeDvn4mMbbe0IxgpiLnI9WSevlaDP/sm1X3iO9yEyzHLL+M5Erspo" + 542eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "Cwa558fOu5DdsICMXhvDQxjWFKFhPHnKtGe+VvwkG9/bAaDgx3kfhk0w5zvdnkKb+8Ed9ylNRzdk" + 543eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "ocAa/mxlMTOsTvDKXjjsBupNPIIj7OP4GNnZaxkJjSs98pEO67op1GX2qhy6FSOPNuq8k/65HzUc" + 544eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "PYn6voEeh6vm02U/sjEnzRevQ2+2wXoAdp0EwtQ/DlMe+NvcwPGWKuMgX4A4L93DZGb04N2VmAU3" + 545eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "YLOtZwTO0LbuWrcCM/q99G/7LcczkxIVrO2I/rh8RXVczlf9QzcrFObFv4ATuspWJ8xG7DhsMbnk" + 546eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "rT94Pq6TogYeoz8o8ZMykesAqN6mt/9+ToIemmXv+e+KU1hI5oLwWMnUG6dXM6hIvrULY6o+QCPH" + 547eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "172YQJMa+68HAeS+itBTAF4Clm/bLn6reHCGGU6vNdwU0lYldpiOj9cB3t+u2UuLo6tiFWjLf5Zs" + 548eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "EQJETd4g/EK9nHxJn0GAKrWnTw7pEHQJ08elzUuy04C/jEEG+4QXU1InzS4o/kR0Sqz2WTGDoSoq" + 549eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "ewuPRU5bzQs/b9daq3mXrnPtRBL6HfSDAdpTK76iHqLCGdqx3avHjVSBm4zFvEuYBCev+3iKOBmg" + 550eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "yh7eQRTjz4UOWfy85omMBr7lK8PtfVBDzOXpasxS0uBgdUyBDX4tO6k9jZ8a1kmQRQAAAAEABVgu" + 551eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "NTA5AAACSDCCAkQwggGtAgRIR8SKMA0GCSqGSIb3DQEBBAUAMGkxCzAJBgNVBAYTAlVTMRMwEQYD" + 552eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "VQQIEwpDYWxpZm9ybmlhMQwwCgYDVQQHEwNNVFYxDzANBgNVBAoTBkdvb2dsZTEQMA4GA1UECxMH" + 553eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "QW5kcm9pZDEUMBIGA1UEAxMLVGVzdCBTZXJ2ZXIwHhcNMDgwNjA1MTA0ODQyWhcNMDgwOTAzMTA0" + 554eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "ODQyWjBpMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEMMAoGA1UEBxMDTVRWMQ8w" + 555eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "DQYDVQQKEwZHb29nbGUxEDAOBgNVBAsTB0FuZHJvaWQxFDASBgNVBAMTC1Rlc3QgU2VydmVyMIGf" + 556eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwoC6chqCI84rj1PrXuJgbiit4EV909zR6N0jNlYfg" + 557eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "itwB39bP39wH03rFm8T59b3mbSptnGmCIpLZn25KPPFsYD3JJ+wFlmiUdEP9H05flfwtFQJnw9uT" + 558eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "3rRIdYVMPcQ3RoZzwAMliGr882I2thIDbA6xjGU/1nRIdvk0LtxH3QIDAQABMA0GCSqGSIb3DQEB" + 559eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "BAUAA4GBAJn+6YgUlY18Ie+0+Vt8oEi81DNi/bfPrAUAh63fhhBikx/3R9dl3wh09Z6p7cIdNxjW" + 560eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "n2ll+cRW9eqF7z75F0Omm0C7/KAEPjukVbszmzeU5VqzkpSt0j84YWi+TfcHRrfvhLbrlmGITVpY" + 561eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob "ol5pHLDyqGmDs53pgwipWqsn/nEXEBgj3EoqPeqHbDf7YaP8h/5BSt0="; 562eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob 563eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob private String PASSWORD = "android"; 564eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob 565eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob /** 566eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob * Loads a keystore from a base64-encoded String. Returns the KeyManager[] 567eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob * for the result. 568eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob */ 569eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob private KeyManager[] getKeyManagers() throws Exception { 570eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob String keys = (useBKS ? SERVER_KEYS_BKS : SERVER_KEYS_JKS); 571f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes byte[] bytes = new Base64().decode(keys.getBytes()); 572eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob InputStream inputStream = new ByteArrayInputStream(bytes); 573f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 574eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); 575eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob keyStore.load(inputStream, PASSWORD.toCharArray()); 576eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob inputStream.close(); 577f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 578eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob String algorithm = KeyManagerFactory.getDefaultAlgorithm(); 579eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(algorithm); 580eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob keyManagerFactory.init(keyStore, PASSWORD.toCharArray()); 581f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 582eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob return keyManagerFactory.getKeyManagers(); 583eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob } 584eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob 585eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob private SSLServerSocket getSSLServerSocket() throws Exception { 586eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob SSLContext context = SSLContext.getInstance("TLS"); 587eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob context.init(getKeyManagers(), null, null); 588eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob SSLServerSocket sss = (SSLServerSocket) context.getServerSocketFactory() 589eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob .createServerSocket(); 590eff7bc0401e656948b0f491d88fe134843ef1573Urs Grob return sss; 591adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 592f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 593d87bb037ea1e7c877b9f81359a5d6675097e46deElliott Hughes @TestTargetNew( 594d87bb037ea1e7c877b9f81359a5d6675097e46deElliott Hughes level = TestLevel.COMPLETE, 595d87bb037ea1e7c877b9f81359a5d6675097e46deElliott Hughes notes = "Guard against native resource leakage.", 596d87bb037ea1e7c877b9f81359a5d6675097e46deElliott Hughes method = "SSLSocket", 597d87bb037ea1e7c877b9f81359a5d6675097e46deElliott Hughes args = {} 598d87bb037ea1e7c877b9f81359a5d6675097e46deElliott Hughes ) 599d87bb037ea1e7c877b9f81359a5d6675097e46deElliott Hughes public void test_creationStressTest() throws Exception { 600d87bb037ea1e7c877b9f81359a5d6675097e46deElliott Hughes KeyManager[] keyManagers = getKeyManagers(); 601d87bb037ea1e7c877b9f81359a5d6675097e46deElliott Hughes // Test the default codepath, which uses /dev/urandom. 602d87bb037ea1e7c877b9f81359a5d6675097e46deElliott Hughes SSLContext sslContext = SSLContext.getInstance("TLS"); 603d87bb037ea1e7c877b9f81359a5d6675097e46deElliott Hughes sslContext.init(keyManagers, null, null); 604d87bb037ea1e7c877b9f81359a5d6675097e46deElliott Hughes for (int i = 0; i < 2048; ++i) { 605d87bb037ea1e7c877b9f81359a5d6675097e46deElliott Hughes sslContext.getServerSocketFactory().createServerSocket(); 606d87bb037ea1e7c877b9f81359a5d6675097e46deElliott Hughes } 607f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 608d87bb037ea1e7c877b9f81359a5d6675097e46deElliott Hughes // Test the other codepath, which copies a seed from a byte[]. 609d87bb037ea1e7c877b9f81359a5d6675097e46deElliott Hughes sslContext.init(keyManagers, null, new SecureRandom()); 610d87bb037ea1e7c877b9f81359a5d6675097e46deElliott Hughes for (int i = 0; i < 2048; ++i) { 611d87bb037ea1e7c877b9f81359a5d6675097e46deElliott Hughes sslContext.getServerSocketFactory().createServerSocket(); 612d87bb037ea1e7c877b9f81359a5d6675097e46deElliott Hughes } 613d87bb037ea1e7c877b9f81359a5d6675097e46deElliott Hughes } 614adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 615