1f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements.  See the NOTICE file distributed with
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership.
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License.  You may obtain a copy of the License at
8f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes *
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
10f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes *
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License.
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage org.apache.harmony.security.tests.java.security;
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase;
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.tests.java.security.AlgorithmParametersTest.MyAlgorithmParameters;
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.ByteArrayInputStream;
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.IOException;
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.InputStream;
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.OutputStream;
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Key;
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.KeyPair;
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.KeyPairGenerator;
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.KeyStore;
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.KeyStoreException;
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.KeyStoreSpi;
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchAlgorithmException;
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Provider;
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.UnrecoverableKeyException;
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.Certificate;
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertificateException;
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertificateFactory;
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Date;
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Enumeration;
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class KeyStore3Test extends TestCase {
44f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private KeyStore mockKeyStore;
46f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private KeyPair keyPair;
48f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private Certificate certificate;
50f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public KeyStore3Test() throws Exception {
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("DSA");
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        keyPair = keyPairGenerator.generateKeyPair();
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String certificateData = "-----BEGIN CERTIFICATE-----\n"
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + "MIICZTCCAdICBQL3AAC2MA0GCSqGSIb3DQEBAgUAMF8xCzAJBgNVBAYTAlVTMSAw\n"
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + "HgYDVQQKExdSU0EgRGF0YSBTZWN1cml0eSwgSW5jLjEuMCwGA1UECxMlU2VjdXJl\n"
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + "IFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05NzAyMjAwMDAwMDBa\n"
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + "Fw05ODAyMjAyMzU5NTlaMIGWMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZv\n"
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + "cm5pYTESMBAGA1UEBxMJUGFsbyBBbHRvMR8wHQYDVQQKExZTdW4gTWljcm9zeXN0\n"
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + "ZW1zLCBJbmMuMSEwHwYDVQQLExhUZXN0IGFuZCBFdmFsdWF0aW9uIE9ubHkxGjAY\n"
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + "BgNVBAMTEWFyZ29uLmVuZy5zdW4uY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB\n"
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + "iQKBgQCofmdY+PiUWN01FOzEewf+GaG+lFf132UpzATmYJkA4AEA/juW7jSi+LJk\n"
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + "wJKi5GO4RyZoyimAL/5yIWDV6l1KlvxyKslr0REhMBaD/3Z3EsLTTEf5gVrQS6sT\n"
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + "WMoSZAyzB39kFfsB6oUXNtV8+UKKxSxKbxvhQn267PeCz5VX2QIDAQABMA0GCSqG\n"
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + "SIb3DQEBAgUAA34AXl3at6luiV/7I9MN5CXYoPJYI8Bcdc1hBagJvTMcmlqL2uOZ\n"
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + "H9T5hNMEL9Tk6aI7yZPXcw/xI2K6pOR/FrMp0UwJmdxX7ljV6ZtUZf7pY492UqwC\n"
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + "1777XQ9UEZyrKJvF5ntleeO0ayBqLGVKCWzWZX9YsXCpv47FNLZbupE=\n"
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + "-----END CERTIFICATE-----\n";
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ByteArrayInputStream certArray = new ByteArrayInputStream(
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                certificateData.getBytes());
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        CertificateFactory cf = CertificateFactory.getInstance("X.509");
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        certificate = cf.generateCertificate(certArray);
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
76f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_load() throws Exception {
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // No exception should be thrown out.
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mockKeyStore.load(null);
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_store() throws Exception {
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            mockKeyStore.store(null);
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("should throw KeyStoreException: not initialized");
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (KeyStoreException e) {
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
89f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // No exception should be thrown out.
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mockKeyStore.load(null, null);
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mockKeyStore.store(null);
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_setKeyEntry_null() throws Exception {
96f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        mockKeyStore.load(null, null);
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // No exception should be thrown out.
98f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        mockKeyStore.setKeyEntry(null, null, null, null);
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
100f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_setKeyEntry_key_is_null() throws Exception {
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mockKeyStore.load(null, null);
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // No exception should be thrown out.
104f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        mockKeyStore.setKeyEntry("Alias", null, null, new Certificate[]{certificate});
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
106f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_setKeyEntry_key_is_private() throws Exception {
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mockKeyStore.load(null, null);
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Key key = keyPair.getPrivate();
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            mockKeyStore.setKeyEntry("Alias", key, null, null);
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("should throw IllegalArgumentException");
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
116f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            mockKeyStore.setKeyEntry("Alias", key, null,
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    new Certificate[0]);
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("should throw IllegalArgumentException");
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
124f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
125f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        mockKeyStore.setKeyEntry("Alias", key, null, new Certificate[]{certificate});
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
127f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_setKeyEntry_key_is_public() throws Exception
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mockKeyStore.load(null, null);
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Key key = keyPair.getPublic();
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mockKeyStore.setKeyEntry("Alias1", key, null, null);
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mockKeyStore.setKeyEntry("Alias2", key, null,
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                new Certificate[0]);
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mockKeyStore.setKeyEntry("Alias3", key, null, new Certificate[]{certificate});
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
137f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_setCertificateEntry_null() throws Exception {
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mockKeyStore.load(null, null);
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mockKeyStore.setCertificateEntry(null, null);
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mockKeyStore.setCertificateEntry(null, certificate);
144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mockKeyStore.setCertificateEntry("Alias", null);
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
147f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @SuppressWarnings("cast")
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_KeyStore() {
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Provider p = new MyProvider();
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            MyKeyStore ks = new MyKeyStore(new MyKeyStoreSpi(), p, "MyKeyStore");
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertNotNull(ks);
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue(ks instanceof KeyStore);
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Exception should be not thrown");
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
158f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            MyKeyStore ks = new MyKeyStore(null, null, null);
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertNotNull(ks);
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue(ks instanceof KeyStore);
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Exception should be not thrown");
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
168f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    protected void setUp() throws Exception {
170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        super.setUp();
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mockKeyStore = new MyKeyStore(new MyKeyStoreSpi(), null, "MyKeyStore");
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
173f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private static class MyKeyStore extends KeyStore {
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public MyKeyStore(KeyStoreSpi keyStoreSpi, Provider provider,
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                String type) {
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            super(keyStoreSpi, provider, type);
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @SuppressWarnings("unused")
183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private static class MyKeyStoreSpi extends KeyStoreSpi {
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Enumeration<String> engineAliases() {
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean engineContainsAlias(String arg0) {
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return false;
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void engineDeleteEntry(String arg0) throws KeyStoreException {
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Certificate engineGetCertificate(String arg0) {
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public String engineGetCertificateAlias(Certificate arg0) {
201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Certificate[] engineGetCertificateChain(String arg0) {
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Date engineGetCreationDate(String arg0) {
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Key engineGetKey(String arg0, char[] arg1)
213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                throws NoSuchAlgorithmException, UnrecoverableKeyException {
214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean engineIsCertificateEntry(String arg0) {
218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return false;
219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean engineIsKeyEntry(String arg0) {
222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return false;
223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void engineLoad(InputStream arg0, char[] arg1)
226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                throws IOException, NoSuchAlgorithmException,
227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                CertificateException {
228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return;
229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void engineSetCertificateEntry(String arg0, Certificate arg1)
232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                throws KeyStoreException {
233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return;
234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void engineSetKeyEntry(String arg0, byte[] arg1,
237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Certificate[] arg2) throws KeyStoreException {
238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return;
239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void engineSetKeyEntry(String arg0, Key arg1, char[] arg2,
242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Certificate[] arg3) throws KeyStoreException {
243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return;
244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
246f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        public int engineSize() {
247f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes            return 0;
248f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        }
249f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
250f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        public void engineStore(KeyStore.LoadStoreParameter param){
251f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes            return;
252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
254f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        public void engineStore(OutputStream arg0, char[] arg1)
255f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes                throws IOException, NoSuchAlgorithmException,
256f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes                CertificateException {
257f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes            return;
258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
259f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes    }
260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @SuppressWarnings("serial")
262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private class MyProvider extends Provider {
263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MyProvider() {
264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            super("MyProvider", 1.0, "Provider for testing");
265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            put("AlgorithmParameters.ABC", MyAlgorithmParameters.class
266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .getName());
267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MyProvider(String name, double version, String info) {
270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            super(name, version, info);
271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
275