1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 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 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 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 Project/** 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project* @author Vladimir N. Molotkov 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project* @version $Revision$ 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project*/ 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage tests.security.cert; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase; 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchAlgorithmException; 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.PublicKey; 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.PKIXCertPathValidatorResult; 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.PolicyNode; 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.TrustAnchor; 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.spec.InvalidKeySpecException; 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.tests.support.cert.TestUtils; 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Tests for <code>PKIXCertPathValidatorResult</code> 38f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class PKIXCertPathValidatorResultTest extends TestCase { 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * PublicKey stub 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static PublicKey testPublicKey = new PublicKey() { 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final long serialVersionUID = -737454523739489192L; 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String getAlgorithm() { 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return "NeverMind"; 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String getFormat() { 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return "NeverMind"; 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public byte[] getEncoded() { 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return new byte[] {}; 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }; 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Tests 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test #1 for <code>PKIXCertPathValidatorResult(TrustAnchor, 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * PolicyNode, PublicKey)</code> constructor<br> 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: creates an instance of 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <code>PKIXCertPathValidatorResult</code> 66f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws NoSuchAlgorithmException 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws InvalidKeySpecException 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final void testPKIXCertPathValidatorResult01() 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws InvalidKeySpecException, 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project NoSuchAlgorithmException { 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustAnchor ta = TestUtils.getTrustAnchor(); 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (ta == null) { 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(getName() + ": not performed (could not create test TrustAnchor)"); 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new PKIXCertPathValidatorResult( 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ta, 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestUtils.getPolicyTree(), 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project testPublicKey); 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test #2 for <code>PKIXCertPathValidatorResult(TrustAnchor, 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * PolicyNode, PublicKey)</code> constructor<br> 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: <code>NullPointerException</code> if 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <code>TrustAnchor</code> parameter is <code>null</code> 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final void testPKIXCertPathValidatorResult02() { 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // pass null 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new PKIXCertPathValidatorResult( 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project null, 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestUtils.getPolicyTree(), 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project testPublicKey); 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NPE expected"); 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test #3 for <code>PKIXCertPathValidatorResult(TrustAnchor, 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * PolicyNode, PublicKey)</code> constructor<br> 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: <code>NullPointerException</code> if 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <code>PublicKey</code> parameter is <code>null</code> 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final void testPKIXCertPathValidatorResult03() { 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustAnchor ta = TestUtils.getTrustAnchor(); 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (ta == null) { 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(getName() + ": not performed (could not create test TrustAnchor)"); 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // pass null 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new PKIXCertPathValidatorResult( 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ta, 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestUtils.getPolicyTree(), 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project null); 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NPE expected"); 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test #4 for <code>PKIXCertPathValidatorResult(TrustAnchor, 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * PolicyNode, PublicKey)</code> constructor<br> 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: <code>PolicyNode</code>can be <code>null</code> 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final void testPKIXCertPathValidatorResult04() throws Exception { 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustAnchor ta = TestUtils.getTrustAnchor(); 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (ta == null) { 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(getName() + ": not performed (could not create test TrustAnchor)"); 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new PKIXCertPathValidatorResult( 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ta, 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project null, 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project testPublicKey); 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getTrustAnchor()</code> method<br> 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: returns <code>TrustAnchor</code> (never <code>null</code>) 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws NoSuchAlgorithmException 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws InvalidKeySpecException 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final void testGetTrustAnchor() throws Exception { 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustAnchor ta = TestUtils.getTrustAnchor(); 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (ta == null) { 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(getName() + ": not performed (could not create test TrustAnchor)"); 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PKIXCertPathValidatorResult vr = 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new PKIXCertPathValidatorResult( 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ta, 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project null, 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project testPublicKey); 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // must return the same reference passed 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // as a parameter to the constructor 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertSame(ta, vr.getTrustAnchor()); 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getPublicKey()</code> method<br> 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: returns the subject's public key (never <code>null</code>) 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws NoSuchAlgorithmException 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws InvalidKeySpecException 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final void testGetPublicKey() throws Exception { 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustAnchor ta = TestUtils.getTrustAnchor(); 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (ta == null) { 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(getName() + ": not performed (could not create test TrustAnchor)"); 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PublicKey pk = testPublicKey; 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PKIXCertPathValidatorResult vr = 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new PKIXCertPathValidatorResult( 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ta, 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project null, 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project pk); 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // must return the same reference passed 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // as a parameter to the constructor 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertSame(pk, vr.getPublicKey()); 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getPolicyTree()</code> method<br> 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: returns the root node of the valid 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * policy tree or <code>null</code> if there are 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * no valid policies 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws NoSuchAlgorithmException 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws InvalidKeySpecException 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final void testGetPolicyTree01() throws Exception { 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustAnchor ta = TestUtils.getTrustAnchor(); 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (ta == null) { 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(getName() + ": not performed (could not create test TrustAnchor)"); 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // valid policy tree case; 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PolicyNode pn = TestUtils.getPolicyTree(); 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PKIXCertPathValidatorResult vr = 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new PKIXCertPathValidatorResult( 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ta, 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project pn, 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project testPublicKey); 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // must return the same reference passed 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // as a parameter to the constructor 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertSame(pn, vr.getPolicyTree()); 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getPolicyTree()</code> method<br> 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: returns the root node of the valid 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * policy tree or <code>null</code> if there are 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * no valid policies 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws NoSuchAlgorithmException 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws InvalidKeySpecException 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final void testGetPolicyTree02() throws Exception { 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustAnchor ta = TestUtils.getTrustAnchor(); 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (ta == null) { 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(getName() + ": not performed (could not create test TrustAnchor)"); 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // no valid policy tree case (null) 229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PKIXCertPathValidatorResult vr = 230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new PKIXCertPathValidatorResult( 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ta, 232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project null, 233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project testPublicKey); 234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // must return the same reference passed 236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // as a parameter to the constructor 237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(vr.getPolicyTree()); 238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>clone()</code> method<br> 242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: returns a copy of this object 243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws NoSuchAlgorithmException 244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws InvalidKeySpecException 245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final void testClone() throws Exception { 247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustAnchor ta = TestUtils.getTrustAnchor(); 248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (ta == null) { 249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(getName() + ": not performed (could not create test TrustAnchor)"); 250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PKIXCertPathValidatorResult vr1 = 253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new PKIXCertPathValidatorResult( 254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ta, 255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestUtils.getPolicyTree(), 256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project testPublicKey); 257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PKIXCertPathValidatorResult vr2 = 259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project (PKIXCertPathValidatorResult) vr1.clone(); 260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // check that method makes shallow copy 262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotSame("notSame", vr1, vr2); 263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertSame("trustAncor", vr1.getTrustAnchor(), vr2.getTrustAnchor()); 264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertSame("policyTree", vr1.getPolicyTree(), vr2.getPolicyTree()); 265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertSame("publicKey", vr1.getPublicKey(), vr2.getPublicKey()); 266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Regression for HARMONY-2786. 268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] encoding = { 0x01 }; 269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project MyPKIXCertPathBuilderResult my = new MyPKIXCertPathBuilderResult(ta, 270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestUtils.getPolicyTree(), testPublicKey, encoding); 271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project MyPKIXCertPathBuilderResult myClone = (MyPKIXCertPathBuilderResult) my 272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .clone(); 273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertSame(my.getPolicyTree(), myClone.getPolicyTree()); 274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertSame(my.getPublicKey(), myClone.getPublicKey()); 275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertSame(my.getTrustAnchor(), myClone.getTrustAnchor()); 276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertSame(my.enc, myClone.enc); 277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project class MyPKIXCertPathBuilderResult extends PKIXCertPathValidatorResult { 280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public byte[] enc; // byte array is cloneable 282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public MyPKIXCertPathBuilderResult(TrustAnchor trustAnchor, 284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PolicyNode policyTree, PublicKey subjectPublicKey, byte[] enc) { 285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super(trustAnchor, policyTree, subjectPublicKey); 286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.enc = enc; 288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test #1 for <code>toString()</code> method<br> 293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: Returns a formatted string describing this object 294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws NoSuchAlgorithmException 295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws InvalidKeySpecException 296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final void testToString01() throws Exception { 298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustAnchor ta = TestUtils.getTrustAnchor(); 299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (ta == null) { 300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(getName() + ": not performed (could not create test TrustAnchor)"); 301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PKIXCertPathValidatorResult vr = 304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new PKIXCertPathValidatorResult( 305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ta, 306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestUtils.getPolicyTree(), 307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project testPublicKey); 308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(vr.toString()); 310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test #2 for <code>toString()</code> method<br> 314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertion: Returns a formatted string describing this object 315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws NoSuchAlgorithmException 316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws InvalidKeySpecException 317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final void testToString02() throws Exception { 319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustAnchor ta = TestUtils.getTrustAnchor(); 320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (ta == null) { 321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(getName() + ": not performed (could not create test TrustAnchor)"); 322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PKIXCertPathValidatorResult vr = 325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new PKIXCertPathValidatorResult( 326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ta, 327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project null, 328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project testPublicKey); 329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(vr.toString()); 331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 334