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