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 */ 16e82be46881b2ab9d64b35c0ee53fc359b5cfd18aNarayan Kamathpackage org.apache.harmony.tests.javax.net.ssl; 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 181cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grobimport java.security.AccessController; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.InvalidAlgorithmParameterException; 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.KeyStore; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.KeyStoreException; 221cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grobimport java.security.NoSuchAlgorithmException; 231cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grobimport java.security.Provider; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.net.ssl.ManagerFactoryParameters; 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.net.ssl.TrustManager; 271cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grobimport javax.net.ssl.TrustManagerFactory; 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.net.ssl.TrustManagerFactorySpi; 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase; 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.xnet.tests.support.TrustManagerFactorySpiImpl; 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.xnet.tests.support.MyTrustManagerFactorySpi.Parameters; 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class TrustManagerFactorySpiTest extends TestCase { 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 361cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob private TrustManagerFactorySpiImpl factory = new TrustManagerFactorySpiImpl(); 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 38229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * javax.net.ssl.TrustManagerFactorySpi#TrustManagerFactorySpi() 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_Constructor() { 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustManagerFactorySpiImpl tmf = new TrustManagerFactorySpiImpl(); 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected exception " + e.toString()); 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 47f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 49f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * @throws NoSuchAlgorithmException 50f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * @throws KeyStoreException 51229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * javax.net.ssl.TrustManagerFactorySpi#engineInit(KeyStore ks) 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 531cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob public void test_engineInit_01() throws NoSuchAlgorithmException, 541cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob KeyStoreException { 551cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob factory.reset(); 561cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob Provider provider = new MyProvider(); 571cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob TrustManagerFactory tmf = TrustManagerFactory.getInstance("MyTMF", 581cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob provider); 591cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob KeyStore ks = null; 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 611cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob ks = KeyStore.getInstance(KeyStore.getDefaultType()); 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ks.load(null, null); 631cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob tmf.init(ks); 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected exception " + e.toString()); 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 671cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob assertTrue(factory.isEngineInitCalled()); 681cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob assertEquals(ks, factory.getKs()); 691cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob factory.reset(); 701cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob tmf.init((KeyStore) null); 711cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob assertTrue(factory.isEngineInitCalled()); 721cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob assertNull(factory.getKs()); 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 74f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 76f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * @throws InvalidAlgorithmParameterException 77f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * @throws NoSuchAlgorithmException 78229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * javax.net.ssl.TrustManagerFactorySpi#engineInit(ManagerFactoryParameters spec) 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 801cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob public void test_engineInit_02() throws InvalidAlgorithmParameterException, 811cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob NoSuchAlgorithmException { 821cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob factory.reset(); 831cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob Provider provider = new MyProvider(); 841cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob TrustManagerFactory tmf = TrustManagerFactory.getInstance("MyTMF", 851cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob provider); 861cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob Parameters pr = null; 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType()); 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ks.load(null, null); 901cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob pr = new Parameters(ks); 911cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob tmf.init(pr); 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected exception " + e.toString()); 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 951cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob assertTrue(factory.isEngineInitCalled()); 961cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob assertEquals(pr, factory.getSpec()); 971cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob factory.reset(); 981cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob tmf.init((ManagerFactoryParameters) null); 991cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob assertTrue(factory.isEngineInitCalled()); 1001cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob assertNull(factory.getSpec()); 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 102f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 104f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * @throws NoSuchAlgorithmException 105229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * javax.net.ssl.TrustManagerFactorySpi#engineGetTrustManagers() 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1071cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob public void test_engineGetTrustManagers() throws NoSuchAlgorithmException { 1081cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob factory.reset(); 1091cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob Provider provider = new MyProvider(); 1101cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob TrustManagerFactory tmf = TrustManagerFactory.getInstance("MyTMF", 1111cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob provider); 1121cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob TrustManager[] tm = tmf.getTrustManagers(); 1131cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob assertTrue(factory.isEngineGetTrustManagersCalled()); 1141cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob factory.reset(); 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType()); 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ks.load(null, null); 1181cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob tmf.init(ks); 1191cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob tm = tmf.getTrustManagers(); 1201cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob assertTrue(factory.isEngineGetTrustManagersCalled()); 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected exception " + e.toString()); 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 1261cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob 1271cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grobclass MyProvider extends Provider { 1281cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob 1291cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob public MyProvider() { 1301cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob super("MyProvider", 1.0, "My Test Provider"); 1311cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob AccessController.doPrivileged(new java.security.PrivilegedAction<Void>() { 1321cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob public Void run() { 1331cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob put("TrustManagerFactory.MyTMF", 1341cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob "org.apache.harmony.xnet.tests.support.TrustManagerFactorySpiImpl"); 1351cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob return null; 1361cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob } 1371cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob }); 1381cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob } 1391cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob} 140