1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership. 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License. You may obtain a copy of the License at 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project* @author Vera Y. Petrashkova 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project* @version $Revision$ 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project*/ 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage tests.security.cert; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 25021b1ec3c076500bacbd14c5b266a0b54f43e362Brett Chabotimport dalvik.annotation.KnownFailure; 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.tests.support.SpiEngUtils; 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.tests.support.cert.MyCertPathBuilderSpi; 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.tests.support.cert.TestUtils; 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.InvalidAlgorithmParameterException; 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchAlgorithmException; 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchProviderException; 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Provider; 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Security; 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertPath; 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertPathBuilder; 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertPathBuilderException; 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertPathBuilderResult; 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertPathBuilderSpi; 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertPathParameters; 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertificateException; 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 44021b1ec3c076500bacbd14c5b266a0b54f43e362Brett Chabotimport junit.framework.TestCase; 45021b1ec3c076500bacbd14c5b266a0b54f43e362Brett Chabot 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Tests for <code>CertPathBuilder</code> class constructors and 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * methods. 49f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class CertPathBuilder1Test extends TestCase { 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final String srvCertPathBuilder = "CertPathBuilder"; 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 55f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes public static final String defaultType = "PKIX"; 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final String [] validValues = { 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "PKIX", "pkix", "PkiX", "pKiX" }; 58f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static String [] invalidValues = SpiEngUtils.invalidValues; 60f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static boolean PKIXSupport = false; 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static Provider defaultProvider; 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static String defaultProviderName; 65f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static String NotSupportMsg = ""; 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final String DEFAULT_TYPE_PROPERTY = "certpathbuilder.type"; 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project static { 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project defaultProvider = SpiEngUtils.isSupport(defaultType, 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project srvCertPathBuilder); 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PKIXSupport = (defaultProvider != null); 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project defaultProviderName = (PKIXSupport ? defaultProvider.getName() : null); 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project NotSupportMsg = defaultType.concat(" is not supported"); 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static CertPathBuilder[] createCPBs() { 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!PKIXSupport) { 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(NotSupportMsg); 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertPathBuilder[] certPBs = new CertPathBuilder[3]; 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project certPBs[0] = CertPathBuilder.getInstance(defaultType); 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project certPBs[1] = CertPathBuilder.getInstance(defaultType, 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project defaultProviderName); 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project certPBs[2] = CertPathBuilder.getInstance(defaultType, 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project defaultProvider); 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return certPBs; 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 93f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes } 94f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 96229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.cert.CertPathBuilder#getDefaultType() 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getDefaultType() throws Exception { 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Regression for HARMONY-2785 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 102f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes // test: default value 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(Security.getProperty(DEFAULT_TYPE_PROPERTY)); 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("PKIX", CertPathBuilder.getDefaultType()); 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm)</code> method 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: 110f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * throws NullPointerException when algorithm is null 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NoSuchAlgorithmException when algorithm is not correct 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * or it is not available 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testCertPathBuilder02() throws NoSuchAlgorithmException { 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertPathBuilder.getInstance(null); 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("No expected NullPointerException"); 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < invalidValues.length; i++) { 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertPathBuilder.getInstance(invalidValues[i]); 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchAlgorithmException must be thrown"); 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 128f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm)</code> method 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: returns CertPathBuilder object 132f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes */ 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testCertPathBuilder03() throws NoSuchAlgorithmException { 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!PKIXSupport) { 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(NotSupportMsg); 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertPathBuilder cpb = CertPathBuilder.getInstance(validValues[i]); 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect algorithm", cpb.getAlgorithm(), validValues[i]); 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm, String provider)</code> method 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: throws IllegalArgumentException when provider is null or empty 146f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * FIXME: verify what exception will be thrown if provider is empty 148f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes */ 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testCertPathBuilder04() 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws NoSuchAlgorithmException, NoSuchProviderException { 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!PKIXSupport) { 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(NotSupportMsg); 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String provider = null; 156f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes for (int i = 0; i < validValues.length; i++) { 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertPathBuilder.getInstance(validValues[i], provider); 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException must be thrown thrown"); 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertPathBuilder.getInstance(validValues[i], ""); 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException must be thrown thrown"); 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 169f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm, String provider)</code> method 172f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * Assertion: 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NoSuchProviderException when provider has invalid value 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testCertPathBuilder05() 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws NoSuchAlgorithmException { 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!PKIXSupport) { 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(NotSupportMsg); 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++ ) { 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int j = 1; j < invalidValues.length; j++) { 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertPathBuilder.getInstance(validValues[i], invalidValues[j]); 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchProviderException must be hrown"); 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchProviderException e1) { 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 189f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes } 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm, String provider)</code> method 193f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * Assertion: 194f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * throws NullPointerException when algorithm is null 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NoSuchAlgorithmException when algorithm is not correct 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testCertPathBuilder06() 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws NoSuchAlgorithmException, NoSuchProviderException { 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!PKIXSupport) { 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(NotSupportMsg); 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertPathBuilder.getInstance(null, defaultProviderName); 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("No expected NullPointerException"); 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < invalidValues.length; i++) { 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertPathBuilder.getInstance(invalidValues[i], defaultProviderName); 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchAlgorithmException must be thrown"); 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e1) { 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 214f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes } 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 216f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm, String provider)</code> method 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: returns CertPathBuilder object 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testCertPathBuilder07() 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws NoSuchAlgorithmException, NoSuchProviderException { 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!PKIXSupport) { 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(NotSupportMsg); 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertPathBuilder certPB; 228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project certPB = CertPathBuilder.getInstance(validValues[i], defaultProviderName); 230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect algorithm", certPB.getAlgorithm(), validValues[i]); 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect provider name", certPB.getProvider().getName(), defaultProviderName); 232f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes } 233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm, Provider provider)</code> method 237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: throws IllegalArgumentException when provider is null 238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testCertPathBuilder08() 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws NoSuchAlgorithmException { 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!PKIXSupport) { 242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(NotSupportMsg); 243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Provider prov = null; 246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int t = 0; t < validValues.length; t++ ) { 247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertPathBuilder.getInstance(validValues[t], prov); 249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException must be thrown"); 250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e1) { 251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 252f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes } 253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 254f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm, String provider)</code> method 257f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * Assertion: 258f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * throws NullPointerException when algorithm is null 259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NoSuchAlgorithmException when algorithm is not correct 260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testCertPathBuilder09() 262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws NoSuchAlgorithmException, NoSuchProviderException { 263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!PKIXSupport) { 264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(NotSupportMsg); 265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertPathBuilder.getInstance(null, defaultProvider); 269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("No expected NullPointerException"); 270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < invalidValues.length; i++) { 273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertPathBuilder.getInstance(invalidValues[i], defaultProvider); 275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchAlgorithm must be thrown"); 276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e1) { 277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm, String provider)</code> method 282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: returns CertPathBuilder object 283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testCertPathBuilder10() 285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws NoSuchAlgorithmException, NoSuchProviderException { 286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!PKIXSupport) { 287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(NotSupportMsg); 288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertPathBuilder certPB; 291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < invalidValues.length; i++) { 292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project certPB = CertPathBuilder.getInstance(validValues[i], defaultProvider); 293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect algorithm", certPB.getAlgorithm(), validValues[i]); 294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect provider name", certPB.getProvider(), defaultProvider); 295f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes } 296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>build(CertPathParameters params)</code> method 299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: throws InvalidAlgorithmParameterException params is null 300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testCertPathBuilder11() 302f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes throws NoSuchAlgorithmException, NoSuchProviderException, 303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertPathBuilderException { 304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!PKIXSupport) { 305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(NotSupportMsg); 306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 307f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes } 308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertPathBuilder [] certPB = createCPBs(); 309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull("CertPathBuilder objects were not created", certPB); 310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < certPB.length; i++ ){ 311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project certPB[i].build(null); 313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("InvalidAlgorithmParameterException must be thrown"); 314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch(InvalidAlgorithmParameterException e) { 315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 318f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test passed on RI 320021b1ec3c076500bacbd14c5b266a0b54f43e362Brett Chabot @KnownFailure(value="expired certificate bug 2322662") 321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testBuild() throws Exception { 322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestUtils.initCertPathSSCertChain(); 323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertPathParameters params = TestUtils.getCertPathParameters(); 324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertPathBuilder builder = TestUtils.getCertPathBuilder(); 325f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertPathBuilderResult result = builder.build(params); 328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull("builder result is null", result); 329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertPath certPath = result.getCertPath(); 330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull("certpath of builder result is null", certPath); 331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InvalidAlgorithmParameterException e) { 332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected Exception: " + e); 333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 334f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 337f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * Test for 338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <code>CertPathBuilder</code> constructor 339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: returns CertPathBuilder object 340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testCertPathBuilder12() 342f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes throws CertificateException, NoSuchProviderException, 343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project NoSuchAlgorithmException, InvalidAlgorithmParameterException, 344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertPathBuilderException { 345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!PKIXSupport) { 346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(NotSupportMsg); 347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertPathBuilderSpi spi = new MyCertPathBuilderSpi(); 350f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes CertPathBuilder certPB = new myCertPathBuilder(spi, 351adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project defaultProvider, defaultType); 352adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect algorithm", certPB.getAlgorithm(), defaultType); 353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect provider", certPB.getProvider(), defaultProvider); 354adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 355adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project certPB.build(null); 356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("CertPathBuilderException must be thrown "); 357f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes } catch (CertPathBuilderException e) { 358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project certPB = new myCertPathBuilder(null, null, null); 360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Incorrect algorithm", certPB.getAlgorithm()); 361f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes assertNull("Incorrect provider", certPB.getProvider()); 362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project certPB.build(null); 364adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NullPointerException must be thrown "); 365f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes } catch (NullPointerException e) { 366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getAlgorithm()</code> method Assertion: returns 371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * CertPathBuilder object 372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testCertPathBuilder13() throws NoSuchAlgorithmException { 374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!PKIXSupport) { 375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(NotSupportMsg); 376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertPathBuilder cpb = CertPathBuilder.getInstance(validValues[i]); 381adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect algorithm", cpb.getAlgorithm(), 382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[i]); 383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project cpb = CertPathBuilder.getInstance(validValues[i], 385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project defaultProviderName); 386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect algorithm", cpb.getAlgorithm(), 387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[i]); 388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchProviderException e) { 389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected NoSuchProviderException exeption " 390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + e.getMessage()); 391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 393adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project cpb = CertPathBuilder.getInstance(validValues[i], 395adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project defaultProviderName); 396adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect algorithm", cpb.getAlgorithm(), 397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[i]); 398adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchProviderException e) { 399adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected NoSuchProviderException " + e.getMessage()); 400adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 402adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 403adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getProvider()</code> method Assertion: returns 406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * CertPathBuilder object 407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testCertPathBuilder14() throws NoSuchAlgorithmException { 409adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!PKIXSupport) { 410adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(NotSupportMsg); 411adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 412adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 413adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 414adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertPathBuilder cpb2 = CertPathBuilder.getInstance(validValues[i], 416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project defaultProvider); 417adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect provider", cpb2.getProvider(), 418adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project defaultProvider); 419adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertPathBuilder cpb3 = CertPathBuilder.getInstance( 422adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[i], defaultProviderName); 423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect provider", cpb3.getProvider(), 424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project defaultProvider); 425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchProviderException e) { 426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected NoSuchProviderException " + e.getMessage()); 427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 430adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 433adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Additional class to verify CertPathBuilder constructor 434adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectclass myCertPathBuilder extends CertPathBuilder { 436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static Provider provider; 438adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public myCertPathBuilder(CertPathBuilderSpi spi, Provider prov, String type) { 440adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super(spi, prov, type); 441adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 442adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 443adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static CertPathBuilder getInstance(String algorithm) 444adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws NoSuchAlgorithmException { 445adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project myCertPathBuilder mcpb = new myCertPathBuilder(null, null, null); 446adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project provider = mcpb.new MyProvider(); 447adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return CertPathBuilder.getInstance(algorithm); 448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 449adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 450adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Provider getMyProvider() { 451adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return provider; 452adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 453adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 454adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public class MyProvider extends Provider { 455adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final long serialVersionUID = -6537447905658191184L; 457adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 458adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project MyProvider() { 459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super("MyProvider", 1.0, "Provider for testing"); 460adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 461adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 462adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project MyProvider(String name, double version, String info) { 463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super(name, version, info); 464adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 466adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void putService(Provider.Service s) { 467adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super.putService(s); 468adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 470adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void removeService(Provider.Service s) { 471adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super.removeService(s); 472adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 473adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 474adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 475adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 476