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 Hughes/**
19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes* @author Vera Y. Petrashkova
20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes*/
21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.security.tests.java.security;
23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ByteArrayInputStream;
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ByteArrayOutputStream;
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.IOException;
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.KeyStore;
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.PrivateKey;
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.Provider;
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.Security;
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.cert.Certificate;
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.security.tests.support.KeyStoreTestSupport;
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.security.tests.support.SpiEngUtils;
35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase;
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/**
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests for <code>KeyStore</code> constructor and methods
40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class KeyStore_Impl3Test extends TestCase {
44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private static final String KeyStoreProviderClass = "org.apache.harmony.security.tests.support.MyKeyStore";
46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private static final String defaultType = "KeyStore";
48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public static boolean KSSupported = false;
50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public static String defaultProviderName = null;
52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public static Provider defaultProvider = null;
54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private static String NotSupportMsg = "Default KeyStore type is not supported";
56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    Provider mProv;
58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public KeyStore[] createKS() throws Exception {
60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(NotSupportMsg, KSSupported);
61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        KeyStore[] kpg = new KeyStore[3];
62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        kpg[0] = KeyStore.getInstance(defaultType);
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        kpg[1] = KeyStore.getInstance(defaultType, defaultProvider);
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        kpg[2] = KeyStore.getInstance(defaultType, defaultProviderName);
66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        return kpg;
67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    protected void setUp() throws Exception {
70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        super.setUp();
71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        mProv = (new SpiEngUtils()).new MyProvider("MyKSProvider",
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "Testing provider", KeyStoreTestSupport.srvKeyStore.concat(".")
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .concat(defaultType), KeyStoreProviderClass);
74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Security.insertProviderAt(mProv, 2);
75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        defaultProvider = SpiEngUtils.isSupport(defaultType,
76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                KeyStoreTestSupport.srvKeyStore);
77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        KSSupported = (defaultProvider != null);
78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        defaultProviderName = (KSSupported ? defaultProvider.getName() : null);
79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /*
82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @see TestCase#tearDown()
83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    protected void tearDown() throws Exception {
85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        super.tearDown();
86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Security.removeProvider(mProv.getName());
87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test for <code>load(InputStream stream, char[] password)</code>
91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * <code>store(InputStream stream, char[] password)</code>
92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * <code>size()</code>
93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * <code>getCreationDate(String alias)</code>
94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * methods
95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Assertions: store(...) throws NullPointerException when stream or
96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * password is null;
97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * getCreationDate(...) throws NullPointerException when alias is null;
98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * stores KeyStore and then loads it;
99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @throws Exception
100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testLoadStore01() throws Exception {
103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(NotSupportMsg, KSSupported);
104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String tType = "TestType";
106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        KeyStore.TrustedCertificateEntry tCert = new KeyStore.TrustedCertificateEntry(
107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new KeyStoreTestSupport.MCertificate("type", new byte[0]));
108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Certificate certs[] = {
110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new KeyStoreTestSupport.MCertificate(tType, new byte[10]),
111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new KeyStoreTestSupport.MCertificate(tType, new byte[20]) };
112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        PrivateKey pk = new KeyStoreTestSupport.MyPrivateKey(tType, "", new byte[10]);
113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        KeyStore.PrivateKeyEntry pKey = new KeyStore.PrivateKeyEntry(pk, certs);
114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        char[] pwd = { 'p', 'a', 's', 's', 'w', 'd' };
115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        KeyStore.PasswordProtection pPath = new KeyStore.PasswordProtection(pwd);
116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String[] aliases = { "Alias1", "Alias2", "Alias3", "Alias4", "Alias5" };
117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        KeyStore[] kss = createKS();
119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        KeyStore[] kss1 = new KeyStore[kss.length];
120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull("KeyStore objects were not created", kss);
121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < kss.length; i++) {
123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            kss1[i] = kss[i];
124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            kss[i].load(null, null);
125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            kss[i].setEntry(aliases[0], tCert, null);
126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            kss[i].setEntry(aliases[1], pKey, pPath);
127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            kss[i].setEntry(aliases[2], pKey, pPath);
128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                kss[i].getCreationDate(null);
130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("NullPointerException should be thrown when alias is null");
131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NullPointerException e) {
132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            kss[i].setKeyEntry(aliases[3], pk, pwd, certs);
135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            kss[i].setCertificateEntry(aliases[4], certs[0]);
136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ByteArrayOutputStream bos = new ByteArrayOutputStream();
137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                kss[i].store(null, pwd);
139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("IOException or NullPointerException should be thrown when stream is null");
140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (IOException e) {
141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NullPointerException e) {
142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            //RI does not throw exception while password is null.
145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            kss[i].store(bos, null);
146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            kss[i].store(bos, pwd);
148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ByteArrayInputStream bis = new ByteArrayInputStream(bos
149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toByteArray());
150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            kss1[i].load(bis, pwd);
151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Incorrect size", kss1[i].size(), kss[i].size());
152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            KeyStore.Entry en, en1;
153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int j = 0; j < 3; j++) {
154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                en = kss[i].getEntry(aliases[j], (j == 0 ? null : pPath));
155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                en1 = kss1[i].getEntry(aliases[j], (j == 0 ? null : pPath));
156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (en instanceof KeyStore.TrustedCertificateEntry) {
157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertTrue("Incorrect entry 1",
158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            en1 instanceof KeyStore.TrustedCertificateEntry);
159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals("Incorrect Certificate",
160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            ((KeyStore.TrustedCertificateEntry) en)
161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    .getTrustedCertificate(),
162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            ((KeyStore.TrustedCertificateEntry) en1)
163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    .getTrustedCertificate());
164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    if (en instanceof KeyStore.PrivateKeyEntry) {
166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertTrue("Incorrect entry 2",
167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                en1 instanceof KeyStore.PrivateKeyEntry);
168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertEquals(
169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                "Incorrect Certificate",
170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                ((KeyStore.PrivateKeyEntry) en).getPrivateKey(),
171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                ((KeyStore.PrivateKeyEntry) en1)
172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                        .getPrivateKey());
173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    } else {
174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        if (en instanceof KeyStore.SecretKeyEntry) {
175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            assertTrue("Incorrect entry 3",
176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    en1 instanceof KeyStore.SecretKeyEntry);
177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            assertEquals("Incorrect Certificate",
178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    ((KeyStore.SecretKeyEntry) en)
179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                            .getSecretKey(),
180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    ((KeyStore.SecretKeyEntry) en1)
181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                            .getSecretKey());
182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        }
183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals("Incorrect date", kss[i]
187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .getCreationDate(aliases[j]), kss1[i]
188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .getCreationDate(aliases[j]));
189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Incorrect entry", kss[i].getKey(aliases[3], pwd),
191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    kss1[i].getKey(aliases[3], pwd));
192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Incorrect date", kss[i].getCreationDate(aliases[3]),
193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    kss1[i].getCreationDate(aliases[3]));
194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Incorrect entry", kss[i].getCertificate(aliases[4]),
195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    kss1[i].getCertificate(aliases[4]));
196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Incorrect date", kss[i].getCreationDate(aliases[4]),
197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    kss1[i].getCreationDate(aliases[4]));
198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
201