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 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase; 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.MyCertificateFactorySpi; 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.ByteArrayInputStream; 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.DataInputStream; 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchProviderException; 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Provider; 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Security; 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CRL; 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CRLException; 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertPath; 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.Certificate; 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertificateException; 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertificateFactory; 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Collection; 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Iterator; 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.List; 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Tests for CertificateFactory class constructors and methods 47f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class CertificateFactory2Test extends TestCase { 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final String defaultAlg = "CertFac"; 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final String CertificateFactoryProviderClass = "org.apache.harmony.security.tests.support.cert.MyCertificateFactorySpi"; 52f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final String[] invalidValues = SpiEngUtils.invalidValues; 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final String[] validValues; 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project static { 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues = new String[4]; 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[0] = defaultAlg; 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[1] = defaultAlg.toLowerCase(); 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[2] = "CeRtFaC"; 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[3] = "cerTFac"; 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Provider mProv; 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void setUp() throws Exception { 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super.setUp(); 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mProv = (new SpiEngUtils()).new MyProvider("MyCFProvider", 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "Provider for testing", CertificateFactory1Test.srvCertificateFactory 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(".").concat(defaultAlg), 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertificateFactoryProviderClass); 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.insertProviderAt(mProv, 1); 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /* 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see TestCase#tearDown() 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void tearDown() throws Exception { 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super.tearDown(); 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.removeProvider(mProv.getName()); 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private void checkResult(CertificateFactory certFactory, boolean mode) 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertificateException, CRLException { 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project MyCertificateFactorySpi.putMode(mode); 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ByteArrayInputStream bais = new ByteArrayInputStream(new byte[0]); 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project DataInputStream dis = new DataInputStream(bais); 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project certFactory.generateCertPath(bais); 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("CertificateException must be thrown"); 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertificateException e) { 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project certFactory.generateCertPath(dis); 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!mode) { 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("CertificateException must be thrown because encodings list is empty"); 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertificateException e) { 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (mode) { 102f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes fail("Unexpected CertificateFactoryException was thrown"); 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project certFactory.generateCertPath(bais, "aa"); 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("CertificateException must be thrown"); 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertificateException e) { 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project certFactory.generateCertPath(dis, ""); 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (mode) { 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException must be thrown"); 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!mode) { 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IllegalArgumentException was thrown"); 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project certFactory.generateCertPath(dis, "ss"); 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project certFactory.generateCertificate(bais); 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("CertificateException must be thrown"); 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertificateException e) { 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project certFactory.generateCertificates(null); 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("CertificateException must be thrown"); 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertificateException e) { 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Certificate cert = certFactory.generateCertificate(dis); 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Result must be null", cert); 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Collection<? extends Certificate> col = certFactory.generateCertificates(dis); 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Result must be null", col); 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project certFactory.generateCRL(bais); 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("CRLException must be thrown"); 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CRLException e) { 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project certFactory.generateCRLs(null); 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("CRLException must be thrown"); 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CRLException e) { 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CRL crl = certFactory.generateCRL(dis); 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Result must be null", crl); 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Collection<? extends CRL> colc = certFactory.generateCRLs(dis); 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Result must be null", colc); 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project List<Certificate> list = null; 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertPath cp; 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project cp = certFactory.generateCertPath(list); 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (mode) { 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NullPointerException must be thrown"); 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } else { 159f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes assertNull("Must be null", cp); 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!mode) { 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected NullPointerException was thrown"); 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Iterator<String> it = certFactory.getCertPathEncodings(); 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (mode) { 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(it.hasNext()); 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } else { 170f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes assertFalse(it.hasNext()); 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 175f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * Test for <code>getInstance(String type)</code> method 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertions: 177f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * throws NullPointerException when type is null 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws CertificateException when type is not available 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * returns CertificateFactory object 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void GetInstance01(boolean mode) throws CertificateException, CRLException { 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertificateFactory.getInstance(null); 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NullPointerException or CertificateException must be thrown when type is null"); 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertificateException e) { 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < invalidValues.length; i++) { 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertificateFactory.getInstance(invalidValues[i]); 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("CertificateException must be thrown (type: ".concat( 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project invalidValues[i]).concat(")")); 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertificateException e) { 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertificateFactory cerF; 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project cerF = CertificateFactory.getInstance(validValues[i]); 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect type", cerF.getType(), validValues[i]); 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect provider", cerF.getProvider(), mProv); 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project checkResult(cerF, mode); 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String type, String provider)</code> method 207f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * Assertions: 208f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * throws NullPointerException when type is null 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws CertificateException when type is not available 210f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * throws IllegalArgumentException when provider is null or empty; 211f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * throws NoSuchProviderException when provider is available; 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * returns CertificateFactory object 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void GetInstance02(boolean mode) throws CertificateException, 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project NoSuchProviderException, IllegalArgumentException, CRLException { 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertificateFactory.getInstance(null, mProv.getName()); 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NullPointerException or CertificateException must be thrown when type is null"); 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertificateException e) { 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < invalidValues.length; i++) { 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertificateFactory.getInstance(invalidValues[i], mProv 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getName()); 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("CertificateException must be thrown (type: ".concat( 228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project invalidValues[i]).concat(")")); 229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertificateException e) { 230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String prov = null; 233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertificateFactory.getInstance(validValues[i], prov); 236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException must be thrown when provider is null (type: " 237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(validValues[i]).concat(")")); 238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertificateFactory.getInstance(validValues[i], ""); 242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException must be thrown when provider is empty (type: " 243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(validValues[i]).concat(")")); 244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int j = 1; j < invalidValues.length; j++) { 249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertificateFactory.getInstance(validValues[i], 251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project invalidValues[j]); 252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchProviderException must be thrown (type: " 253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(validValues[i]).concat(" provider: ") 254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(invalidValues[j]).concat(")")); 255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchProviderException e) { 256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertificateFactory cerF; 260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project cerF = CertificateFactory.getInstance(validValues[i], mProv 262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getName()); 263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect type", cerF.getType(), validValues[i]); 264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect provider", cerF.getProvider().getName(), 265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mProv.getName()); 266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project checkResult(cerF, mode); 267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String type, Provider provider)</code> 272f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * method 273f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * Assertions: 274f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * throws NullPointerException when type is null 275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws CertificateException when type is not available 276f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * throws IllegalArgumentException when provider is null; 277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * returns CertificateFactory object 278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void GetInstance03(boolean mode) throws CertificateException, 281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project IllegalArgumentException, CRLException { 282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertificateFactory.getInstance(null, mProv); 284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NullPointerException or CertificateException must be thrown when type is null"); 285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertificateException e) { 286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < invalidValues.length; i++) { 289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertificateFactory.getInstance(invalidValues[i], mProv); 291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("CertificateException must be thrown (type: ".concat( 292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project invalidValues[i]).concat(")")); 293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertificateException e) { 294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Provider prov = null; 297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertificateFactory.getInstance(validValues[i], prov); 300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException must be thrown when provider is null (type: " 301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(validValues[i]).concat(")")); 302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertificateFactory cerF; 306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project cerF = CertificateFactory.getInstance(validValues[i], mProv); 308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect type", cerF.getType(), validValues[i]); 309f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes assertEquals("Incorrect provider", cerF.getProvider(), mProv); 310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project checkResult(cerF, mode); 311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testGetInstance01() throws CertificateException, CRLException { 314f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes GetInstance01(true); 315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testGetInstance02() throws CertificateException, 317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project NoSuchProviderException, IllegalArgumentException, CRLException { 318f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes GetInstance02(true); 319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testGetInstance03() throws CertificateException, 321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project IllegalArgumentException, CRLException { 322f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes GetInstance03(true); 323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testGetInstance04() throws CertificateException, CRLException { 325f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes GetInstance01(false); 326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testGetInstance05() throws CertificateException, 328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project NoSuchProviderException, IllegalArgumentException, CRLException { 329f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes GetInstance02(false); 330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testGetInstance06() throws CertificateException, 332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project IllegalArgumentException, CRLException { 333f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes GetInstance03(false); 334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 336