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.tests.javax.net.ssl; 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.KeyManagementException; 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.NoSuchAlgorithmException; 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.NoSuchProviderException; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.Provider; 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.SecureRandom; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.Security; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.net.ssl.SSLContext; 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.net.ssl.SSLEngine; 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.net.ssl.KeyManager; 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.net.ssl.TrustManager; 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.xnet.tests.support.SpiEngUtils; 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.xnet.tests.support.MySSLContextSpi; 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase; 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests for SSLContext class constructors and methods 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class SSLContext2Test extends TestCase { 418d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static String srvSSLContext = "SSLContext"; 438d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final String defaultProtocol = "S+S+L"; 458d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static final String SSLContextProviderClass = "org.apache.harmony.xnet.tests.support.MySSLContextSpi"; 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final String[] invalidValues = SpiEngUtils.invalidValues; 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final String[] validValues; 518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static { 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes validValues = new String[4]; 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes validValues[0] = defaultProtocol; 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes validValues[1] = defaultProtocol.toLowerCase(); 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes validValues[2] = "s+S+L"; 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes validValues[3] = "S+s+L"; 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Provider mProv; 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void setUp() throws Exception { 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.setUp(); 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes mProv = (new SpiEngUtils()).new MyProvider("MySSLContextProvider", "Provider for testing", 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes srvSSLContext.concat(".").concat(defaultProtocol), 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLContextProviderClass); 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Security.insertProviderAt(mProv, 1); 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @see TestCase#tearDown() 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void tearDown() throws Exception { 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.tearDown(); 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Security.removeProvider(mProv.getName()); 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 808d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath private void checkSSLContext(SSLContext sslC) 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws KeyManagementException { 828d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sslC.getSocketFactory(); 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("RuntimeException must be thrown"); 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (RuntimeException e) { 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Incorrect message", "Not initialiazed", e.getMessage()); 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sslC.getServerSocketFactory(); 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("RuntimeException must be thrown"); 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (RuntimeException e) { 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Incorrect message", "Not initialiazed", e.getMessage()); 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sslC.getServerSessionContext(); 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("RuntimeException must be thrown"); 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (RuntimeException e) { 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Incorrect message", "Not initialiazed", e.getMessage()); 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sslC.getClientSessionContext(); 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("RuntimeException must be thrown"); 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (RuntimeException e) { 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Incorrect message", "Not initialiazed", e.getMessage()); 1068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sslC.createSSLEngine(); 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("RuntimeException must be thrown"); 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (RuntimeException e) { 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Incorrect message", "Not initialiazed", e.getMessage()); 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1148d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath sslC.createSSLEngine("host", 1); 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("RuntimeException must be thrown"); 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (RuntimeException e) { 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Incorrect message", "Not initialiazed", e.getMessage()); 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath TrustManager[] tm = new TManager[10]; 1208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath KeyManager[] km = new KManager[5]; 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sslC.init(km, tm, null); 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("KeyManagementException must be thrown"); 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (KeyManagementException e) { 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sslC.init(km, tm, new SecureRandom()); 1278d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngine sslE = sslC.createSSLEngine(); 1298d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue("Not null result", sslE instanceof SSLEngine); 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("Incorrect host", sslE.getPeerHost()); 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Incorrect port", 0, sslE.getPeerPort()); 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String host = "ZZZ"; 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int port = 8080; 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sslE = sslC.createSSLEngine(host, port); 1358d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue("Not null result", sslE instanceof SSLEngine); 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Incorrect host", sslE.getPeerHost(), host); 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Incorrect port", sslE.getPeerPort(), port); 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("Not null result", sslC.getServerSessionContext()); 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1428d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath try { 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("Not null result", sslC.getClientSessionContext()); 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Test for <code>getInstance(String protocol)</code> method 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertions: 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * throws NullPointerException when protocol is null; 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * throws NoSuchAlgorithmException when protocol is not correct; 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * returns SSLContext object 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testGetInstance01() throws NoSuchAlgorithmException, 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KeyManagementException { 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLContext.getInstance(null); 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("NoSuchAlgorithmException or NullPointerException should be thrown (protocol is null"); 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException e) { 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < invalidValues.length; i++) { 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLContext.getInstance(invalidValues[i]); 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("NoSuchAlgorithmException must be thrown (protocol: " 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .concat(invalidValues[i]).concat(")")); 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException e) { 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLContext sslC; 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < validValues.length; i++) { 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sslC = SSLContext.getInstance(validValues[i]); 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Not instanceof SSLContext object", 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sslC instanceof SSLContext); 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Incorrect protocol", sslC.getProtocol(), 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes validValues[i]); 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Incorrect provider", sslC.getProvider(), mProv); 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes checkSSLContext(sslC); 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>getInstance(String protocol, String provider)</code> 1858d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * method 1868d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Assertions: 187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * throws NullPointerException when protocol is null; 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * throws NoSuchAlgorithmException when protocol is not correct; 1898d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * throws IllegalArgumentException when provider is null or empty; 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * throws NoSuchProviderException when provider is available; 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * returns SSLContext object 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetInstance02() throws NoSuchAlgorithmException, 1948d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath NoSuchProviderException, IllegalArgumentException, 195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KeyManagementException { 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLContext.getInstance(null, mProv.getName()); 198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("NoSuchAlgorithmException or NullPointerException should be thrown (protocol is null"); 199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException e) { 200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < invalidValues.length; i++) { 203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLContext.getInstance(invalidValues[i], mProv.getName()); 205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("NoSuchAlgorithmException must be thrown (protocol: " 206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .concat(invalidValues[i]).concat(")")); 207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException e) { 208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String prov = null; 211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < validValues.length; i++) { 212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLContext.getInstance(validValues[i], prov); 214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IllegalArgumentException must be thrown when provider is null (protocol: " 215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .concat(invalidValues[i]).concat(")")); 216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLContext.getInstance(validValues[i], ""); 220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IllegalArgumentException must be thrown when provider is empty (protocol: " 221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .concat(invalidValues[i]).concat(")")); 222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < validValues.length; i++) { 226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int j = 1; j < invalidValues.length; j++) { 227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLContext.getInstance(validValues[i], invalidValues[j]); 229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("NoSuchProviderException must be thrown (protocol: " 230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .concat(invalidValues[i]).concat(" provider: ") 231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .concat(invalidValues[j]).concat(")")); 232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchProviderException e) { 233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLContext sslC; 237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < validValues.length; i++) { 238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sslC = SSLContext.getInstance(validValues[i], mProv.getName()); 239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Not instanceof SSLContext object", 240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sslC instanceof SSLContext); 241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Incorrect protocol", sslC.getProtocol(), 242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes validValues[i]); 243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Incorrect provider", sslC.getProvider().getName(), 244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes mProv.getName()); 245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes checkSSLContext(sslC); 246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>getInstance(String protocol, Provider provider)</code> 2518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * method 2528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Assertions: 253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * throws NullPointerException when protocol is null; 254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * throws NoSuchAlgorithmException when protocol is not correct; 255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * throws IllegalArgumentException when provider is null; 256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * returns SSLContext object 257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetInstance03() throws NoSuchAlgorithmException, 259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes IllegalArgumentException, KeyManagementException { 260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLContext.getInstance(null, mProv); 262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("NoSuchAlgorithmException or NullPointerException should be thrown (protocol is null"); 263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException e) { 264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < invalidValues.length; i++) { 267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLContext.getInstance(invalidValues[i], mProv); 269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("NoSuchAlgorithmException must be thrown (protocol: " 270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .concat(invalidValues[i]).concat(")")); 271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException e) { 272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Provider prov = null; 275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < validValues.length; i++) { 276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLContext.getInstance(validValues[i], prov); 278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IllegalArgumentException must be thrown when provider is null (protocol: " 279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .concat(invalidValues[i]).concat(")")); 280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLContext sslC; 284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < validValues.length; i++) { 285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sslC = SSLContext.getInstance(validValues[i], mProv); 286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Not instanceof SSLContext object", 287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sslC instanceof SSLContext); 288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Incorrect protocol", sslC.getProtocol(), 289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes validValues[i]); 290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Incorrect provider", sslC.getProvider(), mProv); 291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes checkSSLContext(sslC); 2928d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes class TManager implements TrustManager { 2968d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2988d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes class KManager implements KeyManager { 3008d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}