1f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes/* 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 8f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 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 Projectpackage org.apache.harmony.security.tests.java.security; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Identity; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.IdentityScope; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.KeyManagementException; 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.KeyPairGenerator; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.PublicKey; 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Enumeration; 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Hashtable; 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.tests.java.security.Identity2Test.IdentitySubclass; 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project@SuppressWarnings("deprecation") 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class IdentityScope2Test extends junit.framework.TestCase { 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 33003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom private static PublicKey PUB_KEY; 34003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom private static PublicKey getPubKey() throws Exception { 35003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom if (PUB_KEY == null) { 36003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom PUB_KEY = KeyPairGenerator.getInstance("DSA").genKeyPair().getPublic(); 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 38003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom return PUB_KEY; 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static class IdentityScopeSubclass extends IdentityScope { 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final long serialVersionUID = 1L; 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Hashtable<Identity, Identity> identities; 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public IdentityScopeSubclass(String name, PublicKey pk) { 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super(name); 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setPublicKey(pk); 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyManagementException e) { 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project identities = new Hashtable<Identity, Identity>(); 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public IdentityScopeSubclass() { 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super(); 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project identities = new Hashtable<Identity, Identity>(); 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public IdentityScopeSubclass(String name) { 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super(name); 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project identities = new Hashtable<Identity, Identity>(); 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public IdentityScopeSubclass(String name, IdentityScope scope) 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws KeyManagementException { 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super(name, scope); 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project identities = new Hashtable<Identity, Identity>(); 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int size() { 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return identities.size(); 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Identity getIdentity(String name) { 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Enumeration<Identity> en = identities(); 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (en.hasMoreElements()) { 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Identity current = (Identity) en.nextElement(); 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (current.getName().equals(name)) 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return current; 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Identity getIdentity(PublicKey pk) { 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Enumeration<Identity> en = identities(); 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (en.hasMoreElements()) { 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Identity current = (Identity) en.nextElement(); 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (current.getPublicKey() == pk) 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return current; 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Enumeration<Identity> identities() { 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return identities.elements(); 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void addIdentity(Identity id) throws KeyManagementException { 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (identities.containsKey(id)) 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new KeyManagementException( 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "This Identity is already contained in the scope"); 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (getIdentity(id.getPublicKey()) != null) 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new KeyManagementException( 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "This Identity's public key already exists in the scope"); 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project identities.put(id, id); 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void removeIdentity(Identity id) throws KeyManagementException { 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!identities.containsKey(id)) 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new KeyManagementException( 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "This Identity is not contained in the scope"); 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project identities.remove(id); 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 117229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.IdentityScope#IdentityScope() 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_Constructor() { 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new IdentityScopeSubclass(); 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 124229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.IdentityScope#IdentityScope(java.lang.String) 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_ConstructorLjava_lang_String() { 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] str = {"test", "", null}; 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project IdentityScopeSubclass iss; 129f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < str.length; i++) { 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project iss = new IdentityScopeSubclass(str[i]); 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(iss); 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(iss instanceof IdentityScope); 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected exception for parameter " + str[i]); 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 142229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.IdentityScope#IdentityScope(java.lang.String, 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * java.security.IdentityScope) 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_ConstructorLjava_lang_StringLjava_security_IdentityScope() { 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String nameNull = null; 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] str = {"test", "", "!@#$%^&*()", "identity name"}; 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project IdentityScope is; 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project IdentityScope iss = new IdentityScopeSubclass("test scope"); 150f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < str.length; i++) { 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project is = new IdentityScopeSubclass(str[i], new IdentityScopeSubclass()); 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(is); 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(is instanceof IdentityScope); 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected exception for parameter " + str[i]); 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 160f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project is = new IdentityScopeSubclass(nameNull, new IdentityScopeSubclass()); 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException npe) { 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Incorrect exception " + e + " was thrown"); 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 167f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project is = new IdentityScopeSubclass("test", iss); 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project is = new IdentityScopeSubclass("test", iss); 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("KeyManagementException was not thrown"); 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyManagementException npe) { 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //expected 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Incorrect exception " + e + " was thrown instead of KeyManagementException"); 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 180229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.IdentityScope#addIdentity(java.security.Identity) 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_addIdentityLjava_security_Identity() throws Exception { 183003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom IdentityScopeSubclass sub = new IdentityScopeSubclass("test", 184003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom new IdentityScopeSubclass()); 185003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom Identity id = new IdentitySubclass("id1"); 186003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom id.setPublicKey(getPubKey()); 187003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom sub.addIdentity(id); 188003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom try { 189003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom Identity id2 = new IdentitySubclass("id2"); 190003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom id2.setPublicKey(getPubKey()); 191003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom sub.addIdentity(id2); 192003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom fail("KeyManagementException should have been thrown"); 193003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom } catch (KeyManagementException e) { 194003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom // Expected 195003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom } 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 199229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.IdentityScope#removeIdentity(java.security.Identity) 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_removeIdentityLjava_security_Identity() throws Exception { 202003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom IdentityScopeSubclass sub = new IdentityScopeSubclass("test", 203003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom new IdentityScopeSubclass()); 204003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom Identity id = new IdentitySubclass(); 205003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom id.setPublicKey(getPubKey()); 206003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom sub.addIdentity(id); 207003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom sub.removeIdentity(id); 208003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom try { 209003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom sub.removeIdentity(id); 210003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom fail("KeyManagementException should have been thrown"); 211003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom } catch (KeyManagementException expected) { 212003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom } 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 216229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.IdentityScope#identities() 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_identities() throws Exception { 219003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom IdentityScopeSubclass sub = new IdentityScopeSubclass("test", 220003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom new IdentityScopeSubclass()); 221003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom Identity id = new IdentitySubclass(); 222003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom id.setPublicKey(getPubKey()); 223003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom sub.addIdentity(id); 224003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom Enumeration<Identity> en = sub.identities(); 225003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom assertEquals("Wrong object contained in identities", en.nextElement(), id); 226003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom assertFalse("Contains too many elements", en.hasMoreElements()); 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 230229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.IdentityScope#getIdentity(java.security.Principal) 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getIdentityLjava_security_Principal() throws Exception { 233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Identity id = new IdentitySubclass("principal name"); 234003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom id.setPublicKey(getPubKey()); 235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project IdentityScopeSubclass sub = new IdentityScopeSubclass("test", 236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new IdentityScopeSubclass()); 237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sub.getIdentity((java.security.Principal) null); 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 1: NullPointerException expected."); 241003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom } catch (NullPointerException expected) { 242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sub.addIdentity(id); 245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Identity returnedId = sub.getIdentity(id); 246003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom assertEquals("Test 2: Returned Identity not the same as the added one;", id, returnedId); 247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Identity id2 = new IdentitySubclass("Another identity"); 249003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom id2.setPublicKey(getPubKey()); 250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 251003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom assertNull("Test 3: Null value expected.", sub.getIdentity(id2)); 252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sub.getIdentity((java.security.Principal) null); 255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 4: NullPointerException expected."); 256003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom } catch (NullPointerException expected) { 257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 262229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.IdentityScope#getIdentity(java.security.PublicKey) 263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getIdentityLjava_security_PublicKey() throws Exception { 265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project IdentityScopeSubclass sub = new IdentityScopeSubclass("test", 266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new IdentityScopeSubclass()); 267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Identity id = new IdentitySubclass(); 268003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom id.setPublicKey(getPubKey()); 269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sub.addIdentity(id); 270003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom Identity returnedId = sub.getIdentity(getPubKey()); 271003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom assertEquals("Test 1: Returned Identity not the same as the added one;", id, returnedId); 272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 273003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom assertNull("Test 2: Null value expected.", sub.getIdentity((PublicKey) null)); 274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PublicKey anotherKey = KeyPairGenerator.getInstance("DSA").genKeyPair().getPublic(); 276003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom assertNull("Test 3: Null value expected.", sub.getIdentity(anotherKey)); 277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 280229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.IdentityScope#getIdentity(java.lang.String) 281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getIdentityLjava_lang_String() throws Exception { 283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project IdentityScopeSubclass sub = new IdentityScopeSubclass("test", 284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new IdentityScopeSubclass()); 285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Identity id = new IdentitySubclass("test"); 286003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom id.setPublicKey(getPubKey()); 287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sub.addIdentity(id); 288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Identity returnedId = sub.getIdentity("test"); 289003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom assertEquals("Returned Identity not the same as the added one", id, returnedId); 290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 293229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.IdentityScope#size() 294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_size() throws Exception { 296003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom IdentityScopeSubclass sub = new IdentityScopeSubclass("test", 297003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom new IdentityScopeSubclass()); 298003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom Identity id = new IdentitySubclass(); 299003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom id.setPublicKey(getPubKey()); 300003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom sub.addIdentity(id); 301003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom assertEquals("Wrong size", 1, sub.size()); 302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 305229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.IdentityScope#toString() 306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_toString() throws Exception { 308003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom IdentityScopeSubclass sub = new IdentityScopeSubclass("test", 309003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom new IdentityScopeSubclass()); 310003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom Identity id = new IdentitySubclass(); 311003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom id.setPublicKey(getPubKey()); 312003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom sub.addIdentity(id); 313003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom assertNotNull("toString returned a null", sub.toString()); 314003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom assertTrue("Not a valid String ", sub.toString().length() > 0); 315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 316f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getIdentity() throws Exception { 318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //Regression for HARMONY-1173 319f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes IdentityScope scope = IdentityScope.getSystemScope(); 320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project scope.getIdentity((String) null); 322003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom fail(); 323003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom } catch (NullPointerException expected) { 324003f7a4d100cd1527d94bac81a4a3c5a8216c6eeBrian Carlstrom } 325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 327