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 Vladimir N. Molotkov
20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes*/
21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.security.tests.java.security.cert;
23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.NoSuchAlgorithmException;
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.PublicKey;
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.cert.CertPath;
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.cert.CertPathBuilderResult;
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.cert.PKIXCertPathBuilderResult;
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.cert.TrustAnchor;
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.spec.InvalidKeySpecException;
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.security.tests.support.cert.MyCertPath;
33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.security.tests.support.cert.TestUtils;
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase;
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/**
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests for <code>PKIXCertPathBuilderResult</code>
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class PKIXCertPathBuilderResultTest extends TestCase {
42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Cert path encoding stub
44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private static final byte[] testEncoding = new byte[] {
46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            (byte)1, (byte)2, (byte)3, (byte)4, (byte)5
47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    };
48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * PublicKey stub
51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private static PublicKey testPublicKey = new PublicKey() {
53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public String getAlgorithm() {
54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return "NeverMind";
55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public String getFormat() {
57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return "NeverMind";
58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public byte[] getEncoded() {
60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return new byte[] {};
61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    };
63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Constructor for PKIXCertPathBuilderResultTest.
67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @param name
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public PKIXCertPathBuilderResultTest(String name) {
70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        super(name);
71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    //
74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // Tests
75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    //
76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test #1 for <code>PKIXCertPathBuilderResult(CertPath, TrustAnchor,
79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     *   PolicyNode, PublicKey)</code> constructor<br>
80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Assertion: Creates an instance of <code>PKIXCertPathBuilderResult</code>
81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @throws NoSuchAlgorithmException
82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @throws InvalidKeySpecException
83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public final void testPKIXCertPathBuilderResult01()
85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        throws InvalidKeySpecException,
86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               NoSuchAlgorithmException {
87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TrustAnchor ta = TestUtils.getTrustAnchor();
88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (ta == null) {
89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail(getName() + ": not performed (could not create test TrustAnchor)");
90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        CertPathBuilderResult r =
92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new PKIXCertPathBuilderResult(
93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    new MyCertPath(testEncoding),
94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    ta,
95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    TestUtils.getPolicyTree(),
96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    testPublicKey);
97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(r instanceof PKIXCertPathBuilderResult);
98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test #2 for <code>PKIXCertPathBuilderResult(CertPath, TrustAnchor,
102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     *   PolicyNode, PublicKey)</code> constructor<br>
103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Assertion: policy tree parameter may be <code>null</code>
104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @throws NoSuchAlgorithmException
105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @throws InvalidKeySpecException
106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public final void testPKIXCertPathBuilderResult02()
108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        throws InvalidKeySpecException,
109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               NoSuchAlgorithmException {
110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TrustAnchor ta = TestUtils.getTrustAnchor();
111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (ta == null) {
112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail(getName() + ": not performed (could not create test TrustAnchor)");
113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        CertPathBuilderResult r =
115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new PKIXCertPathBuilderResult(
116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    new MyCertPath(testEncoding),
117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    ta,
118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    null,
119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    testPublicKey);
120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(r instanceof PKIXCertPathBuilderResult);
121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test #3 for <code>PKIXCertPathBuilderResult(CertPath, TrustAnchor,
125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     *   PolicyNode, PublicKey)</code> constructor<br>
126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Assertion: <code>NullPointerException</code>
127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * if certPath is <code>null</code>
128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public final void testPKIXCertPathBuilderResult03() {
130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TrustAnchor ta = TestUtils.getTrustAnchor();
131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (ta == null) {
132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail(getName() + ": not performed (could not create test TrustAnchor)");
133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // pass null
137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new PKIXCertPathBuilderResult(
138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    null,
139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    ta,
140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    TestUtils.getPolicyTree(),
141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    testPublicKey);
142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("NPE expected");
143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test #4 for <code>PKIXCertPathBuilderResult(CertPath, TrustAnchor,
149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     *   PolicyNode, PublicKey)</code> constructor<br>
150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Assertion: <code>NullPointerException</code>
151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * if trustAnchor is <code>null</code>
152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public final void testPKIXCertPathBuilderResult04() {
154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // pass null
156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new PKIXCertPathBuilderResult(
157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    new MyCertPath(testEncoding),
158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    null,
159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    TestUtils.getPolicyTree(),
160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    testPublicKey);
161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("NPE expected");
162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test #5 for <code>PKIXCertPathBuilderResult(CertPath, TrustAnchor,
168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     *   PolicyNode, PublicKey)</code> constructor<br>
169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Assertion: <code>NullPointerException</code>
170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * if publicKey is <code>null</code>
171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public final void testPKIXCertPathBuilderResult05() {
173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TrustAnchor ta = TestUtils.getTrustAnchor();
174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (ta == null) {
175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail(getName() + ": not performed (could not create test TrustAnchor)");
176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // pass null
180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new PKIXCertPathBuilderResult(
181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    new MyCertPath(testEncoding),
182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    ta,
183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    TestUtils.getPolicyTree(),
184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    null);
185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("NPE expected");
186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public final void test_clone() {
191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression for HARMONY-2786.
193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TrustAnchor ta = TestUtils.getTrustAnchor();
194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(getName()
195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                + ": not performed (could not create test TrustAnchor)", ta);
196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        PKIXCertPathBuilderResult init = new PKIXCertPathBuilderResult(
198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new MyCertPath(testEncoding), ta, TestUtils.getPolicyTree(),
199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                testPublicKey);
200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        PKIXCertPathBuilderResult clone = (PKIXCertPathBuilderResult) init
202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .clone();
203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertSame(init.getCertPath(), clone.getCertPath());
204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertSame(init.getPolicyTree(), clone.getPolicyTree());
205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertSame(init.getPublicKey(), clone.getPublicKey());
206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertSame(init.getTrustAnchor(), clone.getTrustAnchor());
207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test for <code>getCertPath()</code> method<br>
211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Assertion: the built and validated <code>CertPath</code>
212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * (never <code>null</code>)
213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @throws NoSuchAlgorithmException
214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @throws InvalidKeySpecException
215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public final void testGetCertPath() throws Exception {
217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TrustAnchor ta = TestUtils.getTrustAnchor();
218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (ta == null) {
219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail(getName() + ": not performed (could not create test TrustAnchor)");
220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        CertPath cp = new MyCertPath(testEncoding);
223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        CertPathBuilderResult r =
224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new PKIXCertPathBuilderResult(
225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    cp,
226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    ta,
227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    TestUtils.getPolicyTree(),
228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    testPublicKey);
229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // must return the same reference
231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // as passed to the constructor
232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertSame(cp, r.getCertPath());
233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test for <code>toString()</code> method<br>
237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Assertion: the printable representation of this object
238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @throws NoSuchAlgorithmException
239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @throws InvalidKeySpecException
240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public final void testToString()
242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        throws InvalidKeySpecException,
243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               NoSuchAlgorithmException {
244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TrustAnchor ta = TestUtils.getTrustAnchor();
245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (ta == null) {
246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail(getName() + ": not performed (could not create test TrustAnchor)");
247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        CertPathBuilderResult r =
249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new PKIXCertPathBuilderResult(
250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    new MyCertPath(testEncoding),
251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    ta,
252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    TestUtils.getPolicyTree(),
253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    testPublicKey);
254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(r.toString());
256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
259