1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/*
2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more
3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements.  See the NOTICE file distributed with
4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership.
5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0
6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with
7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License.  You may obtain a copy of the License at
8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software
12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS,
13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and
15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License.
16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.security.tests.java.security;
19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ByteArrayInputStream;
21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.FileNotFoundException;
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.IOException;
23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.InputStream;
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.OutputStream;
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.UnsupportedEncodingException;
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.Key;
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.KeyPair;
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.KeyPairGenerator;
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.KeyStore;
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.KeyStoreException;
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.KeyStoreSpi;
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.NoSuchAlgorithmException;
33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.Provider;
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.UnrecoverableKeyException;
35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.KeyStore.Builder;
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.KeyStore.PasswordProtection;
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.KeyStore.ProtectionParameter;
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.cert.Certificate;
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.cert.CertificateException;
40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.cert.CertificateFactory;
41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Date;
42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Enumeration;
43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase;
45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class KeyStore3Test extends TestCase {
47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private KeyStore mockKeyStore;
49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private KeyPair keyPair;
51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private Certificate certificate;
53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public KeyStore3Test() throws Exception {
55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("DSA");
56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keyPair = keyPairGenerator.generateKeyPair();
57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String certificateData = "-----BEGIN CERTIFICATE-----\n"
59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                + "MIICZTCCAdICBQL3AAC2MA0GCSqGSIb3DQEBAgUAMF8xCzAJBgNVBAYTAlVTMSAw\n"
60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                + "HgYDVQQKExdSU0EgRGF0YSBTZWN1cml0eSwgSW5jLjEuMCwGA1UECxMlU2VjdXJl\n"
61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                + "IFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05NzAyMjAwMDAwMDBa\n"
62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                + "Fw05ODAyMjAyMzU5NTlaMIGWMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZv\n"
63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                + "cm5pYTESMBAGA1UEBxMJUGFsbyBBbHRvMR8wHQYDVQQKExZTdW4gTWljcm9zeXN0\n"
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                + "ZW1zLCBJbmMuMSEwHwYDVQQLExhUZXN0IGFuZCBFdmFsdWF0aW9uIE9ubHkxGjAY\n"
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                + "BgNVBAMTEWFyZ29uLmVuZy5zdW4uY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB\n"
66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                + "iQKBgQCofmdY+PiUWN01FOzEewf+GaG+lFf132UpzATmYJkA4AEA/juW7jSi+LJk\n"
67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                + "wJKi5GO4RyZoyimAL/5yIWDV6l1KlvxyKslr0REhMBaD/3Z3EsLTTEf5gVrQS6sT\n"
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                + "WMoSZAyzB39kFfsB6oUXNtV8+UKKxSxKbxvhQn267PeCz5VX2QIDAQABMA0GCSqG\n"
69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                + "SIb3DQEBAgUAA34AXl3at6luiV/7I9MN5CXYoPJYI8Bcdc1hBagJvTMcmlqL2uOZ\n"
70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                + "H9T5hNMEL9Tk6aI7yZPXcw/xI2K6pOR/FrMp0UwJmdxX7ljV6ZtUZf7pY492UqwC\n"
71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                + "1777XQ9UEZyrKJvF5ntleeO0ayBqLGVKCWzWZX9YsXCpv47FNLZbupE=\n"
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                + "-----END CERTIFICATE-----\n";
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ByteArrayInputStream certArray;
75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        {
76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                certArray = new ByteArrayInputStream(certificateData.getBytes("UTF-8"));
78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (UnsupportedEncodingException e) {
79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                throw new RuntimeException(e.getMessage());
80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        CertificateFactory cf = CertificateFactory.getInstance("X.509");
83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        certificate = cf.generateCertificate(certArray);
84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_load() throws Exception {
87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // No exception should be thrown out.
88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        mockKeyStore.load(null);
89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_store() throws Exception {
92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            mockKeyStore.store(null);
94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw KeyStoreException: not initialized");
95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (KeyStoreException e) {
96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // No exception should be thrown out.
100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        mockKeyStore.load(null, null);
101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        mockKeyStore.store(null);
102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setKeyEntry_null() throws Exception {
105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        mockKeyStore.load(null, null);
106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // No exception should be thrown out.
107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        mockKeyStore.setKeyEntry(null, null, null, null);
108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setKeyEntry_key_is_null() throws Exception {
111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        mockKeyStore.load(null, null);
112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // No exception should be thrown out.
113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        mockKeyStore.setKeyEntry("Alias", null, null, new Certificate[]{certificate});
114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setKeyEntry_key_is_private() throws Exception {
117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        mockKeyStore.load(null, null);
118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Key key = keyPair.getPrivate();
119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            mockKeyStore.setKeyEntry("Alias", key, null, null);
121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            mockKeyStore.setKeyEntry("Alias", key, null,
128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    new Certificate[0]);
129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        mockKeyStore.setKeyEntry("Alias", key, null, new Certificate[]{certificate});
135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setKeyEntry_key_is_public() throws Exception
138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    {
139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        mockKeyStore.load(null, null);
140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Key key = keyPair.getPublic();
141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        mockKeyStore.setKeyEntry("Alias1", key, null, null);
142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        mockKeyStore.setKeyEntry("Alias2", key, null,
143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new Certificate[0]);
144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        mockKeyStore.setKeyEntry("Alias3", key, null, new Certificate[]{certificate});
145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setCertificateEntry_null() throws Exception {
148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        mockKeyStore.load(null, null);
149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        mockKeyStore.setCertificateEntry(null, null);
151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        mockKeyStore.setCertificateEntry(null, certificate);
153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        mockKeyStore.setCertificateEntry("Alias", null);
155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_store_null() throws Exception {
158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        mockKeyStore.load(null, null);
159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        mockKeyStore.store(null, null);
160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getKeyStore() throws KeyStoreException,
163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            NoSuchAlgorithmException, CertificateException,
164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            FileNotFoundException, IOException {
165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String alias = "BKS";
167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        char[] pwd = new char[] { '1', '2', '3', '4', '5', '6' };
168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        InputStream fis = KeyStore2Test.class
169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getResourceAsStream("builderimpl.ks");
170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        KeyStore ks = KeyStore.getInstance(alias);
171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ks.load(fis, pwd);
172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Builder b = Builder.newInstance(ks, new PasswordProtection(pwd));
173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        KeyStore firstKeyStore = b.getKeyStore();
174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ProtectionParameter firstProtParameter = b
175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getProtectionParameter(alias);
176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertSame(firstKeyStore, b.getKeyStore());
177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertSame(firstProtParameter, b.getProtectionParameter(alias));
178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        b = Builder.newInstance(alias, ks.getProvider(),
180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new KeyStore.PasswordProtection(pwd));
181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        firstKeyStore = b.getKeyStore();
182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        firstProtParameter = b.getProtectionParameter(alias);
183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotSame(firstKeyStore, b.getKeyStore());
184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertSame(firstProtParameter, b.getProtectionParameter(alias));
185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    protected void setUp() throws Exception {
188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        super.setUp();
189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        mockKeyStore = new MyKeyStore(new MyKeyStoreSpi(), null, "MyKeyStore");
190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private static class MyKeyStore extends KeyStore {
193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public MyKeyStore(KeyStoreSpi keyStoreSpi, Provider provider,
195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                String type) {
196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            super(keyStoreSpi, provider, type);
197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private static class MyKeyStoreSpi extends KeyStoreSpi {
201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public Enumeration<String> engineAliases() {
203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return null;
204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public boolean engineContainsAlias(String arg0) {
207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return false;
208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public void engineDeleteEntry(String arg0) throws KeyStoreException {
211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public Certificate engineGetCertificate(String arg0) {
214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return null;
215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public String engineGetCertificateAlias(Certificate arg0) {
218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return null;
219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public Certificate[] engineGetCertificateChain(String arg0) {
222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return null;
223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public Date engineGetCreationDate(String arg0) {
226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return null;
227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public Key engineGetKey(String arg0, char[] arg1)
230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                throws NoSuchAlgorithmException, UnrecoverableKeyException {
231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return null;
232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public boolean engineIsCertificateEntry(String arg0) {
235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return false;
236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public boolean engineIsKeyEntry(String arg0) {
239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return false;
240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public void engineLoad(InputStream arg0, char[] arg1)
243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                throws IOException, NoSuchAlgorithmException,
244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                CertificateException {
245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return;
246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public void engineSetCertificateEntry(String arg0, Certificate arg1)
249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                throws KeyStoreException {
250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return;
251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public void engineSetKeyEntry(String arg0, byte[] arg1,
254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Certificate[] arg2) throws KeyStoreException {
255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return;
256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public void engineSetKeyEntry(String arg0, Key arg1, char[] arg2,
259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Certificate[] arg3) throws KeyStoreException {
260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return;
261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public int engineSize() {
264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return 0;
265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public void engineStore(KeyStore.LoadStoreParameter param){
268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return;
269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public void engineStore(OutputStream arg0, char[] arg1)
272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                throws IOException, NoSuchAlgorithmException,
273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                CertificateException {
274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return;
275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
280