1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage tests.security.cert; 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase; 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.InvalidAlgorithmParameterException; 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchAlgorithmException; 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchProviderException; 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Provider; 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Security; 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CRL; 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CRLSelector; 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertSelector; 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertStore; 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertStoreException; 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertStoreParameters; 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertStoreSpi; 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.Certificate; 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.ArrayList; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Collection; 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class CertStore2Test extends TestCase { 22f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final String CERT_STORE_PROVIDER_NAME = "TestCertStoreProvider"; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final String CERT_STORE_NAME = "TestCertStore"; 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Provider provider; 27f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void setUp() throws Exception { 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super.setUp(); 30f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes provider = new MyCertStoreProvider(); 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.addProvider(provider); 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 33f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void tearDown() throws Exception { 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super.tearDown(); 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.removeProvider(CERT_STORE_PROVIDER_NAME); 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testGetInstanceStringCertStoreParameters() { 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertStoreParameters parameters = new MyCertStoreParameters(); 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertStore certStore = CertStore.getInstance(CERT_STORE_NAME, 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project parameters); 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(certStore); 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(certStore.getCertStoreParameters()); 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotSame(parameters, certStore.getCertStoreParameters()); 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InvalidAlgorithmParameterException e) { 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertStore certStore = CertStore.getInstance(CERT_STORE_NAME, null); 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(certStore); 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(certStore.getCertStoreParameters()); 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InvalidAlgorithmParameterException e) { 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertStore.getInstance("UnknownCertStore", null); 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected NoSuchAlgorithmException"); 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InvalidAlgorithmParameterException e) { 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertStore.getInstance(CERT_STORE_NAME, 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new MyOtherCertStoreParameters()); 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected InvalidAlgorithmParameterException"); 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InvalidAlgorithmParameterException e) { 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testGetInstanceStringCertStoreParametersString() { 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertStoreParameters parameters = new MyCertStoreParameters(); 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertStore certStore = CertStore.getInstance(CERT_STORE_NAME, 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project parameters, CERT_STORE_PROVIDER_NAME); 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(certStore); 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(certStore.getCertStoreParameters()); 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotSame(parameters, certStore.getCertStoreParameters()); 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(CERT_STORE_PROVIDER_NAME, certStore.getProvider() 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getName()); 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InvalidAlgorithmParameterException e) { 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchProviderException e) { 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertStore certStore = CertStore.getInstance(CERT_STORE_NAME, null, 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CERT_STORE_PROVIDER_NAME); 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(certStore); 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(certStore.getCertStoreParameters()); 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(CERT_STORE_PROVIDER_NAME, certStore.getProvider() 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getName()); 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InvalidAlgorithmParameterException e) { 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchProviderException e) { 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertStore.getInstance("UnknownCertStore", 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new MyCertStoreParameters(), CERT_STORE_PROVIDER_NAME); 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected NoSuchAlgorithmException"); 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InvalidAlgorithmParameterException e) { 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchProviderException e) { 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertStore.getInstance(CERT_STORE_NAME, null, 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "UnknownCertStoreProvider"); 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected NoSuchProviderException"); 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InvalidAlgorithmParameterException e) { 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchProviderException e) { 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertStore.getInstance(CERT_STORE_NAME, 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new MyOtherCertStoreParameters(), CERT_STORE_PROVIDER_NAME); 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InvalidAlgorithmParameterException e) { 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchProviderException e) { 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testGetInstanceStringCertStoreParametersProvider() { 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertStoreParameters parameters = new MyCertStoreParameters(); 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertStore certStore = CertStore.getInstance(CERT_STORE_NAME, 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project parameters, provider); 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(certStore); 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(certStore.getCertStoreParameters()); 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotSame(parameters, certStore.getCertStoreParameters()); 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertSame(provider, certStore.getProvider()); 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InvalidAlgorithmParameterException e) { 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertStore certStore = CertStore.getInstance(CERT_STORE_NAME, null, 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project provider); 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(certStore); 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(certStore.getCertStoreParameters()); 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertSame(provider, certStore.getProvider()); 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InvalidAlgorithmParameterException e) { 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertStore.getInstance("UnknownCertStore", null, provider); 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected NoSuchAlgorithmException"); 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InvalidAlgorithmParameterException e) { 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 190f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertStore.getInstance(CERT_STORE_NAME, 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new MyOtherCertStoreParameters(), provider); 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected InvalidAlgorithmParameterException"); 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InvalidAlgorithmParameterException e) { 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testGetCertificates() { 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertStore certStore = null; 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project certStore = CertStore.getInstance(CERT_STORE_NAME, null); 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InvalidAlgorithmParameterException e) { 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 212f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(certStore); 214f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Collection<? extends Certificate> certificates = certStore.getCertificates(null); 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(certificates); 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertStoreException e) { 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 221f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Collection<? extends Certificate> certificates = certStore.getCertificates(new MyCertSelector()); 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(certificates); 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(certificates.isEmpty()); 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertStoreException e) { 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 229f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project certStore.getCertificates(new MyOtherCertSelector()); 232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected CertStoreException"); 233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertStoreException e) { 234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testGetCRLs() { 239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertStore certStore = null; 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project certStore = CertStore.getInstance(CERT_STORE_NAME, new MyCertStoreParameters()); 242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InvalidAlgorithmParameterException e) { 243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 247f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(certStore); 249f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Collection<? extends CRL> ls = certStore.getCRLs(null); 252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(ls); 253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertStoreException e) { 254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 256f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Collection<? extends CRL> ls = certStore.getCRLs(new MyCRLSelector()); 259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(ls); 260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(ls.isEmpty()); 261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertStoreException e) { 262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 264f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project certStore.getCRLs(new MyOtherCRLSelector()); 267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected CertStoreException"); 268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertStoreException e) { 269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project static class MyCertStoreProvider extends Provider { 274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected MyCertStoreProvider() { 276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super(CERT_STORE_PROVIDER_NAME, 1.0, "Test CertStore Provider 1.0"); 277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project put("CertStore." + CERT_STORE_NAME, MyCertStoreSpi.class.getName()); 278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 280f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project static class MyCertStoreParameters implements CertStoreParameters { 282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Object clone() { 283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return new MyCertStoreParameters(); 284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project static class MyOtherCertStoreParameters implements CertStoreParameters { 288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Object clone() { 289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return new MyCertStoreParameters(); 290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project static class MyCRLSelector implements CRLSelector { 294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean match(CRL crl) { 296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return false; 297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Object clone() { 300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return new MyCRLSelector(); 301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 303f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project static class MyOtherCRLSelector implements CRLSelector { 305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean match(CRL crl) { 306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return false; 307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Object clone() { 310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return new MyOtherCRLSelector(); 311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 312f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 314f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project static class MyCertSelector implements CertSelector { 316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean match(Certificate cert) { 318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return false; 319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 320f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Object clone() { 322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return new MyCertSelector(); 323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 324f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 326f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project static class MyOtherCertSelector implements CertSelector { 328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean match(Certificate crl) { 329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return false; 330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Object clone() { 333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return new MyOtherCRLSelector(); 334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 335f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 337f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static class MyCertStoreSpi extends CertStoreSpi { 339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public MyCertStoreSpi() throws InvalidAlgorithmParameterException { 341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super(null); 342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 343f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public MyCertStoreSpi(CertStoreParameters params) 345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws InvalidAlgorithmParameterException { 346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super(params); 347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (params != null && !(params instanceof MyCertStoreParameters)) { 348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new InvalidAlgorithmParameterException( 349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "invalid parameters"); 350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 351adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 352adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 354adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Collection<? extends CRL> engineGetCRLs(CRLSelector selector) 355adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertStoreException { 356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (selector != null) { 357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!(selector instanceof MyCRLSelector)) { 358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new CertStoreException(); 359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return new ArrayList<CRL>(); 361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 364adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Collection<? extends Certificate> engineGetCertificates( 367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertSelector selector) throws CertStoreException { 368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (selector != null) { 369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!(selector instanceof MyCertSelector)) { 370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new CertStoreException(); 371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return new ArrayList<Certificate>(); 373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 380