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/**
198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @author Vera Y. Petrashkova
208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */
21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.security.tests.java.security;
23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.*;
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.cert.Certificate;
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.security.tests.support.cert.MyCertificate;
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase;
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.Test;
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestSuite;
33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/**
35e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Tests for <code>KeyStore.PrivateKeyEntry</code>  class constructor and methods
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class KSPrivateKeyEntryTest extends TestCase {
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Constructor for KSPrivateKeyEntryTest.
428d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath     *
43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @param arg0
44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public KSPrivateKeyEntryTest(String arg0) {
46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        super(arg0);
47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
488d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private PrivateKey testPrivateKey;
508d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    private Certificate[] testChain;
51e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes
52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private void createParams(boolean diffCerts, boolean diffKeys) {
538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        byte[] encoded = { (byte) 0, (byte) 1, (byte) 2, (byte) 3 };
54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        testChain = new Certificate[5];
55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < testChain.length; i++) {
56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            String s = (diffCerts ? Integer.toString(i) : "NEW");
57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            testChain[i] = new MyCertificate("MY_TEST_CERTIFICATE_"
58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .concat(s), encoded);
59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
608d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        testPrivateKey = (diffKeys ? (PrivateKey) new tmpPrivateKey() :
618d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                (PrivateKey) new tmpPrivateKey(testChain[0].getPublicKey().getAlgorithm()));
62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
63e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test for <code>PrivateKeyEntry(PrivateKey privateKey, Certificate[] chain)</code>
66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * constructor
67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Assertion: throws NullPointerException when privateKey is null
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testPrivateKeyEntry01() {
70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Certificate[] certs = new MyCertificate[1];//new Certificate[1];
71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        PrivateKey pk = null;
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new KeyStore.PrivateKeyEntry(pk, certs);
74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("NullPointerException must be thrown when privateKey is null");
75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test for <code>PrivateKeyEntry(PrivateKey privateKey, Certificate[] chain)</code>
81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * constructor
82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Assertion: throws NullPointerException when chain is null
83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * and throws IllegalArgumentException when chain length is 0
84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testPrivateKeyEntry02() {
86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Certificate[] chain = null;
87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        PrivateKey pk = new tmpPrivateKey();
88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new KeyStore.PrivateKeyEntry(pk, chain);
90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("NullPointerException must be thrown when chain is null");
91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            chain = new Certificate[0];
95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new KeyStore.PrivateKeyEntry(pk, chain);
96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("IllegalArgumentException must be thrown when chain length is 0");
97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1008d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test for <code>PrivateKeyEntry(PrivateKey privateKey, Certificate[] chain)</code>
103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * constructor
104e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes     * Assertion: throws IllegalArgumentException when chain contains certificates
105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * of different types
106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testPrivateKeyEntry03() {
108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        createParams(true, false);
109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new KeyStore.PrivateKeyEntry(testPrivateKey, testChain);
111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("IllegalArgumentException must be thrown when chain contains certificates of different types");
112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
115e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes
116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test for <code>PrivateKeyEntry(PrivateKey privateKey, Certificate[] chain)</code>
118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * constructor
119e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes     * Assertion: throws IllegalArgumentException when algorithm of privateKey
120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * does not match the algorithm of PublicKey in the end certificate (with 0 index)
121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testPrivateKeyEntry04() {
123e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes        createParams(false, true);
124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new KeyStore.PrivateKeyEntry(testPrivateKey, testChain);
126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("IllegalArgumentException must be thrown when key algorithms do not match");
127e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes        } catch (IllegalArgumentException e) {
128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test for <code>getPrivateKey()</code> method
133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Assertion: returns PrivateKey object
134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testGetPrivateKey() {
136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        createParams(false, false);
137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        KeyStore.PrivateKeyEntry ksPKE = new KeyStore.PrivateKeyEntry(
138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                testPrivateKey, testChain);
139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Incorrect PrivateKey", testPrivateKey, ksPKE
140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getPrivateKey());
141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
142e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes
143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test for <code>getCertificateChain()</code> method Assertion: returns
145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * array of the Certificates corresponding to chain
146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testGetCertificateChain() {
148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        createParams(false, false);
149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        KeyStore.PrivateKeyEntry ksPKE = new KeyStore.PrivateKeyEntry(
150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                testPrivateKey, testChain);
151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Certificate[] res = ksPKE.getCertificateChain();
152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Incorrect chain length", testChain.length, res.length);
153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < res.length; i++) {
154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Incorrect chain element: "
155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .concat(Integer.toString(i)), testChain[i], res[i]);
156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
158e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes
159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test for <code>getCertificate()</code> method
161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Assertion: returns end Certificate (with 0 index in chain)
162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testGetCertificate() {
164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        createParams(false, false);
165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        KeyStore.PrivateKeyEntry ksPKE = new KeyStore.PrivateKeyEntry(
166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                testPrivateKey, testChain);
167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Certificate res = ksPKE.getCertificate();
168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Incorrect end certificate (number 0)", testChain[0], res);
169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test for <code>toString()</code> method
173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Assertion: returns non null String
174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testToString() {
176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        createParams(false, false);
177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        KeyStore.PrivateKeyEntry ksPKE = new KeyStore.PrivateKeyEntry(
178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                testPrivateKey, testChain);
179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String res = ksPKE.toString();
180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull("toString() returns null", res);
181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public static Test suite() {
184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        return new TestSuite(KSPrivateKeyEntryTest.class);
185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private static class tmpPrivateKey implements PrivateKey {
188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        private String alg = "My algorithm";
189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public String getAlgorithm() {
191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return alg;
192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public String getFormat() {
195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return "My Format";
196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public byte[] getEncoded() {
199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return new byte[1];
200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public tmpPrivateKey() {
203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public tmpPrivateKey(String algorithm) {
206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            super();
207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            alg = algorithm;
208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
211