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.InvalidAlgorithmParameterException; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.KeyStore; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.cert.PKIXBuilderParameters; 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.cert.PKIXParameters; 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.cert.X509CertSelector; 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.HashSet; 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Set; 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.security.tests.support.cert.TestUtils; 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase; 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests for <code>PKIXBuilderParameters</code> fields and methods 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class PKIXBuilderParametersTest extends TestCase { 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final int DEFAULT_MAX_PATH_LEN = 5; 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Constructor for PKIXBuilderParametersTest. 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @param name 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public PKIXBuilderParametersTest(String name) { 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(name); 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #1 for <code>PKIXBuilderParameters(Set, CertSelector)</code> 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * constructor<br> 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: creates an instance of <code>PKIXBuilderParameters</code> 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws InvalidAlgorithmParameterException 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testPKIXBuilderParametersSetCertSelector01() 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws InvalidAlgorithmParameterException { 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Set taSet = TestUtils.getTrustAnchorSet(); 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (taSet == null) { 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + ": not performed (could not create test TrustAnchor set)"); 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // both parameters are valid and non-null 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PKIXParameters p = 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new PKIXBuilderParameters(taSet, new X509CertSelector()); 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("instanceOf", p instanceof PKIXBuilderParameters); 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull("certSelector", p.getTargetCertConstraints()); 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #2 for <code>PKIXBuilderParameters(Set, CertSelector)</code> 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * constructor<br> 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: creates an instance of <code>PKIXBuilderParameters</code> 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws InvalidAlgorithmParameterException 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testPKIXBuilderParametersSetCertSelector02() 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws InvalidAlgorithmParameterException { 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Set taSet = TestUtils.getTrustAnchorSet(); 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (taSet == null) { 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + ": not performed (could not create test TrustAnchor set)"); 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // both parameters are valid but CertSelector is null 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PKIXParameters p = new PKIXBuilderParameters(taSet, null); 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("instanceOf", p instanceof PKIXBuilderParameters); 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("certSelector", p.getTargetCertConstraints()); 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #3 for <code>PKIXBuilderParameters(Set, CertSelector)</code> 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * constructor<br> 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: ... the <code>Set</code> is copied to protect against 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * subsequent modifications 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws InvalidAlgorithmParameterException 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testPKIXBuilderParametersSetCertSelector03() 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws InvalidAlgorithmParameterException { 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Set taSet = TestUtils.getTrustAnchorSet(); 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (taSet == null) { 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + ": not performed (could not create test TrustAnchor set)"); 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes HashSet originalSet = (HashSet)taSet; 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes HashSet originalSetCopy = (HashSet)originalSet.clone(); 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // create test object using originalSet 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PKIXBuilderParameters pp = 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new PKIXBuilderParameters(originalSetCopy, null); 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // modify originalSet 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes originalSetCopy.clear(); 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // check that test object's internal state 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // has not been affected by the above modification 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Set returnedSet = pp.getTrustAnchors(); 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(originalSet, returnedSet); 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #4 for <code>PKIXBuilderParameters(Set, CertSelector)</code> 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * constructor<br> 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: <code>NullPointerException</code> - 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * if the specified <code>Set</code> is null 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testPKIXBuilderParametersSetCertSelector04() throws Exception { 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // pass null 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new PKIXBuilderParameters((Set)null, null); 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("NPE expected"); 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #5 for <code>PKIXBuilderParameters(Set, CertSelector)</code> 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * constructor<br> 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: <code>InvalidAlgorithmParameterException</code> - 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * if the specified <code>Set</code> is empty 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (<code>trustAnchors.isEmpty() == true</code>) 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testPKIXBuilderParametersSetCertSelector05() { 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // use empty set 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new PKIXBuilderParameters(new HashSet(), null); 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("InvalidAlgorithmParameterException expected"); 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InvalidAlgorithmParameterException e) { 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #6 for <code>PKIXBuilderParameters(Set, CertSelector)</code> 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * constructor<br> 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: <code>ClassCastException</code> - 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * if any of the elements in the <code>Set</code> are not of type 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * <code>java.security.cert.TrustAnchor</code> 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testPKIXBuilderParametersSetCertSelector06() throws Exception { 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Set taSet = TestUtils.getTrustAnchorSet(); 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (taSet == null) { 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + ": not performed (could not create test TrustAnchor set)"); 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // add wrong object to valid set 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(taSet.add(new Object())); 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new PKIXBuilderParameters(taSet, null); 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassCastException expected"); 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassCastException e) { 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #4 for <code>PKIXBuilderParameters(KeyStore, CertSelector)</code> 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * constructor<br> 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: <code>NullPointerException</code> - 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * if the <code>keystore</code> is <code>null</code> 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testPKIXBuilderParametersKeyStoreCertSelector04() throws Exception { 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // pass null 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new PKIXBuilderParameters((KeyStore)null, null); 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("NPE expected"); 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 184