1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage org.apache.harmony.security.tests.java.security; 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase; 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.tests.support.MyProvider; 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.tests.support.TestKeyStoreSpi; 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.tests.support.cert.MyCertificate; 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.ByteArrayInputStream; 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.ByteArrayOutputStream; 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.IOException; 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.InputStream; 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.OutputStream; 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Key; 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.KeyStore; 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.KeyStoreException; 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchAlgorithmException; 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchProviderException; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Provider; 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Security; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.UnrecoverableEntryException; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.UnrecoverableKeyException; 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.KeyStore.Entry; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.KeyStore.ProtectionParameter; 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.Certificate; 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertificateException; 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class KeyStore4Test extends TestCase { 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Provider provider = new MyProvider(); 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyStore keyStore; 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyStore uninitialized; 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyStore failing; 34f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final String KEY_STORE_TYPE = "TestKeyStore"; 36f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void setUp() throws Exception{ 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super.setUp(); 39f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.addProvider(new MyProvider()); 41f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyStore = KeyStore.getInstance(KEY_STORE_TYPE); 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyStore.load(null, "PASSWORD".toCharArray()); 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("test class not available"); 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 48f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project uninitialized = KeyStore.getInstance(KEY_STORE_TYPE); 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("test keystore not available"); 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 54f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 56f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void tearDown() throws Exception { 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super.tearDown(); 60f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.removeProvider(provider.getName()); 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testGetInstanceString() { 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyStore ks = KeyStore.getInstance("TestKeyStore"); 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull("keystore is null", ks); 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("KeyStore is not of expected Type", "TestKeyStore", ks.getType()); 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 72f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyStore.getInstance("UnknownKeyStore"); 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected KeyStoreException"); 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 79f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyStore.getInstance(null); 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected NullPointerException"); 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testGetInstanceStringString() { 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyStore ks = KeyStore.getInstance("TestKeyStore", provider.getName()); 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull("keystore is null", ks); 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("KeyStore is not of expected type", "TestKeyStore", ks.getType()); 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchProviderException e) { 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 100f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyStore.getInstance("UnknownKeyStore", provider.getName()); 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected KeyStoreException"); 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchProviderException e) { 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 109f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyStore.getInstance("TestKeyStore", (String)null); 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected IllegalArgumentException"); 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchProviderException e) { 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyStore.getInstance("TestKeyStore", ""); 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected IllegalArgumentException"); 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchProviderException e) { 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 131f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyStore.getInstance(null, provider.getName()); 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected KeyStoreException"); 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchProviderException e) { 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 140f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes // also ok 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 142f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyStore.getInstance("TestKeyStore", "UnknownProvider"); 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected NoSuchProviderException"); 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchProviderException e) { 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException 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 public void testGetInstanceStringProvider() { 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyStore ks = KeyStore.getInstance("TestKeyStore", provider); 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull("KeyStore is null", ks); 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("KeyStore is not of expected type", "TestKeyStore", ks.getType()); 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 161f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyStore.getInstance("UnknownKeyStore", provider); 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected KeyStoreException"); 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok; 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 168f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyStore.getInstance("TestKeyStore", (Provider)null); 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected IllegalArgumentException"); 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 177f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyStore.getInstance(null, provider); 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected NullPointerException"); 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testGetKey() { 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Key key = keyStore.getKey("keyalias", null); 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(key); 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (UnrecoverableKeyException e) { 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 200f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyStore.getKey("certalias", null); 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected NoSuchAlgorithmException"); 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (UnrecoverableKeyException e) { 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 211f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project uninitialized.getKey("keyalias", null); 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected KeyStoreException"); 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (UnrecoverableKeyException e) { 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 222f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyStore.getKey("unknownalias", null); 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected NoSuchAlgorithmException"); 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (UnrecoverableKeyException e) { 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 233f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyStore.getKey("unknownalias", "PASSWORD".toCharArray()); 236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected UnrecoverableKeyException"); 237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (UnrecoverableKeyException e) { 238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 244f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testGetCertificateAlias() { 249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String alias = keyStore.getCertificateAlias(TestKeyStoreSpi.CERT); 251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull("alias is null", alias); 252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("alias is not expected", "certalias", alias); 253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException 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 uninitialized.getCertificateAlias(TestKeyStoreSpi.CERT); 259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected KeyStoreException"); 260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 263f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyStore.getCertificateAlias(null); 266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected NullPointerException"); 267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 272f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String certificateAlias = keyStore.getCertificateAlias(new MyCertificate("dummy", null)); 275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("alias was not null", certificateAlias); 276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testStoreOutputStreamCharArray() { 282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project OutputStream os = new ByteArrayOutputStream(); 283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project char[] password = "PASSWORD".toCharArray(); 284f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyStore.store(os, password); 287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertificateException e) { 292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 296f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyStore.store(os, null); 299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected NoSuchAlgorithmException"); 300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertificateException e) { 305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 309f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyStore.store(os, "".toCharArray()); 312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected CertificateException"); 313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertificateException e) { 318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 322f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyStore.store(null, null); 325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected IOException"); 326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertificateException e) { 331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 335f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project uninitialized.store(null, null); 338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected KeyStoreException"); 339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertificateException e) { 344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 349f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 350f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 351f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 352adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 354adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testStoreLoadStoreParameter() { 355adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyStore.store(new KeyStore.LoadStoreParameter() { 357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public ProtectionParameter getProtectionParameter() { 359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return new KeyStore.PasswordProtection("PASSWORD".toCharArray()); 360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }}); 361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertificateException e) { 364adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 370f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyStore.store(null); 373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected IOException"); 374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertificateException e) { 379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 381adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 383f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyStore.store(new KeyStore.LoadStoreParameter() { 386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public ProtectionParameter getProtectionParameter() { 388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }}); 390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected UnsupportedOperationException"); 391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 393adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 395adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertificateException e) { 396adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 398adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 399adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (UnsupportedOperationException e) { 400adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 402f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 403adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyStore.store(new KeyStore.LoadStoreParameter() { 405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public ProtectionParameter getProtectionParameter() { 407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return new KeyStore.PasswordProtection("".toCharArray()); 408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }}); 409adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 410adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 411adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 412adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 413adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertificateException e) { 414adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 417adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 418f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 419adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyStore.store(new KeyStore.LoadStoreParameter() { 421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 422adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public ProtectionParameter getProtectionParameter() { 423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return new KeyStore.PasswordProtection(null); 424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }} ); 425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertificateException e) { 430adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 433adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 434f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project uninitialized.store(null); 437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected KeyStoreException"); 438adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 440adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 441adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 442adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertificateException e) { 443adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 444adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 445adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 446adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 447adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 449adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testLoadInputStreamCharArray() { 450adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project InputStream is = new ByteArrayInputStream("DATA".getBytes()); 451adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project char[] password = "PASSWORD".toCharArray(); 452adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 453adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyStore.load(is, password); 454adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(keyStore.containsAlias("keyalias")); 455adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 457adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertificateException e) { 458adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 460adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 461adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 462adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 464f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 466adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyStore.load(new ByteArrayInputStream("".getBytes()), password); 467adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected IOException"); 468adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 470adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertificateException e) { 471adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 472adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 473adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 474adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 475f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 476adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 477adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyStore.load(is, null); 478adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected NoSuchAlgorithmException"); 479adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 480adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertificateException e) { 482adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 483adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 484adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 485adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 486f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 488adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyStore.load(is, new char[] {}); 489adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected CertificateException"); 490adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 491adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 492adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertificateException e) { 493adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 494adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 495adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 496adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 497adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 498adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 499adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testLoadLoadStoreParameter() { 500adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 501adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyStore.load(null); 502adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected NoSuchAlgorithmException"); 503adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 504adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 505adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertificateException e) { 506adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 507adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 508adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 509adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 510f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 511adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 512adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyStore.load(new KeyStore.LoadStoreParameter() { 513adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 514adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public ProtectionParameter getProtectionParameter() { 515adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return new KeyStore.PasswordProtection("PASSWORD".toCharArray()); 516adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 517f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 518adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }); 519adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 520adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 521adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertificateException e) { 522adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 523adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 524adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 525adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 526f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 527adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 528adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyStore.load(new KeyStore.LoadStoreParameter() { 529adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 530adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public ProtectionParameter getProtectionParameter() { 531adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 532adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 533f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 534adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }); 535adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected NoSuchAlgorithmException"); 536adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 537adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 538adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertificateException e) { 539adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 540adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 541adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 542adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 543adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 544adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 545adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyStore.load(new KeyStore.LoadStoreParameter() { 546adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 547adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public ProtectionParameter getProtectionParameter() { 548adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return new KeyStore.ProtectionParameter() {}; 549adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 550f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 551adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }); 552adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected CertificateException"); 553adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 554adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 555adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (CertificateException e) { 556adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 557adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 558adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 559adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 560adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 561adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 562adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testGetEntry() { 563adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 564adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Entry entry = keyStore.getEntry("certalias", null); 565adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull("entry is null", entry); 566adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("entry is not cert entry", entry instanceof KeyStore.TrustedCertificateEntry); 567adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 568adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 569adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (UnrecoverableEntryException e) { 570adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 571adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 572adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 573adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 574f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 575adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 576adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Entry entry = keyStore.getEntry("certalias", new KeyStore.ProtectionParameter() {}); 577adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(entry); 578adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 579adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 580adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (UnrecoverableEntryException e) { 581adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 582adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 583adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 584adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (UnsupportedOperationException e) { 585adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 586adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 587f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 588adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 589adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Entry entry = keyStore.getEntry("keyalias", new KeyStore.PasswordProtection(new char[] {} )); 590adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(entry); 591adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(entry instanceof KeyStore.SecretKeyEntry); 592adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 593adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 594adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (UnrecoverableEntryException e) { 595adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 596adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 597adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 598adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 599f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 600adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 601adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyStore.getEntry("unknownalias", new KeyStore.PasswordProtection(new char[] {})); 602adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected NoSuchAlgorithmException"); 603adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 604adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 605adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (UnrecoverableEntryException e) { 606adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 607adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 608adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 609adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (UnsupportedOperationException e) { 610adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // also ok 611adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 612f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 613adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 614adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyStore.getEntry(null, new KeyStore.ProtectionParameter() {}); 615adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected NullPointerException"); 616adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 617adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 618adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (UnrecoverableEntryException e) { 619adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 620adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 621adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("unexpected exception: " + e); 622adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 623adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 624adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 625adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 626adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 627f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 628adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 629adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testGetType() { 630adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(KEY_STORE_TYPE, keyStore.getType()); 631adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 632f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 633adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testGetProvider() { 634adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(keyStore.getProvider()); 635adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("not equal", provider, keyStore.getProvider()); 636adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 637adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 638adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 639