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 Boris V. Kuznetsov 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @version $Revision$ 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage org.apache.harmony.security.tests.java.security; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.InvalidParameterException; 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Provider; 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Security; 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Arrays; 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.HashMap; 30a695e8fafadd2591cd148e78f19bc6d7c15121bbJesse Wilsonimport java.util.Locale; 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Map; 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Set; 33a695e8fafadd2591cd148e78f19bc6d7c15121bbJesse Wilsonimport junit.framework.TestCase; 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class SecurityTest extends TestCase { 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 39229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.Security#insertProviderAt(Provider, int) 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final void test_insertProviderAtLjava_security_ProviderLI() { 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.insertProviderAt(null, 1); 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("No expected NullPointerException"); 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Provider p = new MyProvider(); 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int initNum = Security.getProviders().length; // initial number of 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // providers 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Provider initialSecondProviderName = Security.getProviders()[1]; 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Insert at position -1, the provider is inserted at the end 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(initNum + 1, Security.insertProviderAt(p, -1)); 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertSame(p, Security.getProviders()[initNum]); 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // A provider cannot be added if it is already installed 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(-1, Security.insertProviderAt(p, 1)); 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.removeProvider(p.getName()); 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // insert at the end 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(initNum + 1, Security.insertProviderAt(p, 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project initNum + 100)); 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertSame(p, Security.getProviders()[initNum]); 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.removeProvider(p.getName()); 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // insert at the first position 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(1, Security.insertProviderAt(p, 1)); 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertSame(p, Security.getProviders()[0]); 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertSame(initialSecondProviderName, // provider shifted down 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.getProviders()[2]); 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { // clean up 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.removeProvider(p.getName()); 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 83229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.Security#addProvider(Provider) 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final void test_addProviderLjava_security_Provider() { 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.addProvider(null); 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("No expected NullPointerException"); 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Provider p = new MyProvider(); 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int initNum = Security.getProviders().length; // initial number of 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // providers 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // add 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(initNum + 1, Security.addProvider(p)); 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertSame(p, Security.getProviders()[initNum]); 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // A provider cannot be added if it is already installed 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(-1, Security.addProvider(p)); 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { // clean up 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.removeProvider(p.getName()); 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 110229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.Security#getAlgorithmProperty(String algName, String 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * propName) 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @disabled because Security.getAlgorithmProperty looks for 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * "propName.algName" instead of "Alg.propName.algName" 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @SuppressWarnings("deprecation") 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final void testGetAlgorithmPropertyLjava_lang_String_java_lang_String() { 117f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Provider provider = new MyProvider(); 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Map<String, String> m = new HashMap<String, String>(); 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project m.clear(); 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project m.put("Alg.propName.algName", "value"); 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project provider.putAll(m); 123f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1255850b60b2000dfdfd7c7bbe27d9ecee52d243933Jorg Pleumann Security.addProvider(provider); 126f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 1275850b60b2000dfdfd7c7bbe27d9ecee52d243933Jorg Pleumann assertNotNull(Security.getAlgorithmProperty("algName", "propName")); 128f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 1295850b60b2000dfdfd7c7bbe27d9ecee52d243933Jorg Pleumann assertNull(Security.getAlgorithmProperty("DSA", null)); 1305850b60b2000dfdfd7c7bbe27d9ecee52d243933Jorg Pleumann assertNull(Security.getAlgorithmProperty("DSA", "propName")); 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.removeProvider(provider.getName()); 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 137229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.Security#getAlgorithms(String serviceName) 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final void testGetAlgorithmsLjava_lang_String() { 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] servicesNames = { "Signature", "MessageDigest", "Cipher", 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "Mac", "KeyStore" }; 142f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] invalidServiceNames = { "Rubbish", "", null }; 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < servicesNames.length; i++) { 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Set<String> algs = Security.getAlgorithms(servicesNames[i]); 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("no services with specified name: " + servicesNames[i], algs.size() > 0); 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 149f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < invalidServiceNames.length; i++) { 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Set<String> algs = Security.getAlgorithms(invalidServiceNames[i]); 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("services with specified name: " + invalidServiceNames[i], algs.size() == 0); 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final void testRemoveProvider() { 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Provider[] providers; 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Provider[] providers1; 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project providers = Security.getProviders(); 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < providers.length; i++) { 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.removeProvider(providers[i].getName()); 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Providers not removed", 0, 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.getProviders().length); 1682f9e468ed4985edfd5e351faf2089d91e561e41dElliott Hughes } finally { // restore providers 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < providers.length; i++) { 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.addProvider(providers[i]); 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project providers1 = Security.getProviders(); 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < providers1.length; i++) { 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Providers not restored correctly", providers[i], 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project providers1[i]); 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 181229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.Security#getProvider(String) 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final void test_getProviderLjava_lang_String() { 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Returns null if no provider with the specified name is installed 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(Security.getProvider("SOMEINCORRECTPROVIDERNAME")); 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Returns null if name is null 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(Security.getProvider(null)); 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // test for existing providers 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Provider[] providers = Security.getProviders(); 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("getProviders returned zero length array", 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project providers.length > 0); 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (Provider p : providers) { 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String providerName = p.getName(); 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertSame(p, Security.getProvider(providerName)); 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // test for newly installed provider 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Provider p = new MyProvider(); 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.addProvider(p); 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertSame(p, Security.getProvider(p.getName())); 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { // clean up 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.removeProvider(p.getName()); 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 212229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.Security#getProviders(String) 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getProvidersLjava_lang_String() { 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.getProviders(""); 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("No expected InvalidParameterException"); 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InvalidParameterException e) { 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.getProviders((String) null); 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("No expected NullPointerException"); 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 227a695e8fafadd2591cd148e78f19bc6d7c15121bbJesse Wilson testGetProviders(Locale.US); 228a695e8fafadd2591cd148e78f19bc6d7c15121bbJesse Wilson testGetProviders(new Locale("tr", "TR")); 229a695e8fafadd2591cd148e78f19bc6d7c15121bbJesse Wilson } 230a695e8fafadd2591cd148e78f19bc6d7c15121bbJesse Wilson 231a695e8fafadd2591cd148e78f19bc6d7c15121bbJesse Wilson /** 232a695e8fafadd2591cd148e78f19bc6d7c15121bbJesse Wilson * Test that Security.getProviders does case sensitive operations 233a695e8fafadd2591cd148e78f19bc6d7c15121bbJesse Wilson * independent of its locale. 234a695e8fafadd2591cd148e78f19bc6d7c15121bbJesse Wilson */ 235a695e8fafadd2591cd148e78f19bc6d7c15121bbJesse Wilson private void testGetProviders(Locale locale) { 236a695e8fafadd2591cd148e78f19bc6d7c15121bbJesse Wilson Locale defaultLocale = Locale.getDefault(); 237a695e8fafadd2591cd148e78f19bc6d7c15121bbJesse Wilson Locale.setDefault(locale); 238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Provider p = new MyProvider(); 239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.addProvider(p); 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String filter = "MyService.MyAlgorithm"; 243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(filter, Arrays.equals(new Provider[] { p }, Security 244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getProviders(filter))); 245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project filter = "MyService.MyAlgorithm KeySize:512"; 247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(filter, Arrays.equals(new Provider[] { p }, Security 248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getProviders(filter))); 249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project filter = "MyService.MyAlgorithm KeySize:1025"; 251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(filter, Security.getProviders(filter)); 252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // attribute name and value are case insensitive 254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project filter = "MyService.MyAlgorithm imPLementedIn:softWARE"; 255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(filter, Arrays.equals(new Provider[] { p }, Security 256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getProviders(filter))); 257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project filter = "MyService.MyAlgorithm ATTribute:attributeVALUE"; 258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(filter, Arrays.equals(new Provider[] { p }, Security 259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getProviders(filter))); 260a695e8fafadd2591cd148e78f19bc6d7c15121bbJesse Wilson filter = "MyService.MyAlgorithm \u0130mPLemented\u0131n:softWARE"; // Turkish dotless i 261a695e8fafadd2591cd148e78f19bc6d7c15121bbJesse Wilson assertTrue(filter, Arrays.equals(new Provider[] { p }, Security 262a695e8fafadd2591cd148e78f19bc6d7c15121bbJesse Wilson .getProviders(filter))); 263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Regression for HARMONY-2761 265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project filter = "MyService.NoKeySize KeySize:512"; 266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(filter, Security.getProviders(filter)); 267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project filter = "MyService.NoImplementedIn ImplementedIn:Software"; 269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(filter, Security.getProviders(filter)); 270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project filter = "ABCService.NoAttribute Attribute:ABC"; 272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(filter, Security.getProviders(filter)); 273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { // clean up 274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.removeProvider(p.getName()); 275a695e8fafadd2591cd148e78f19bc6d7c15121bbJesse Wilson Locale.setDefault(defaultLocale); 276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 280229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.Security#getProviders(java.util.Map) 281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getProvidersLjava_util_Map() { 283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Map<String, String> m = new HashMap<String, String>(); 285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.getProviders(m); 286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Not null result on empty map", Security.getProviders(m)); 288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.getProviders((Map<String, String>) null); 291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("No expected NullPointerException"); 292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project m.put("AAA.BBB.CCC", "aaaa"); // key has dot instead of space 296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.getProviders(m); 298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("No expected InvalidParameterException"); 299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InvalidParameterException e) { 300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Provider p = new MyProvider(); 303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.addProvider(p); 305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project m.clear(); 307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project m.put("MyService.MyAlgorithm", ""); 308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project m.put("MessageDigest.SHA-1", ""); 309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("MyService.MyAlgorithm", Arrays.equals( 310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new Provider[] { p }, Security.getProviders(m))); 311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project m.clear(); 313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project m.put("MyService.MyAlgorithm KeySize", "512"); 314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project m.put("MessageDigest.SHA-1", ""); 315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("MyService.MyAlgorithm KeySize:512", Arrays.equals( 316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new Provider[] { p }, Security.getProviders(m))); 317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project m.clear(); 319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project m.put("MyService.MyAlgorithm KeySize", "1025"); 320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project m.put("MessageDigest.SHA-1", ""); 321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("MyService.MyAlgorithm KeySize:1025", Security 322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getProviders(m)); 323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // attribute name and value are case insensitive 325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project m.clear(); 326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project m.put("MyService.MyAlgorithm imPLementedIn", "softWARE"); 327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(Arrays.equals(new Provider[] { p }, Security 328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getProviders(m))); 329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project m.clear(); 330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project m.put("MyService.MyAlgorithm ATTribute", "attributeVALUE"); 331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(Arrays.equals(new Provider[] { p }, Security 332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getProviders(m))); 333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Regression for HARMONY-2761 335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project m.clear(); 336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project m.put("MyService.NoKeySize KeySize", "512"); 337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("No KeySize attribute", Security.getProviders(m)); 338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project m.clear(); 340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project m.put("MyService.NoImplementedIn ImplementedIn", "Software"); 341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("No ImplementedIn attribute", Security.getProviders(m)); 342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project m.clear(); 344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project m.put("ABCService.NoAttribute Attribute", "ABC"); 345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(Security.getProviders(m)); 346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { // clean up 347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.removeProvider(p.getName()); 348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 350f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 351adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 352229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.Security#getProviders() 353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 354adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getProviders() { 355adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Provider[] prv; 356f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project MyProvider provider = new MyProvider(); 358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project prv = Security.getProviders(); 360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int len1 = prv.length; 361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (len1 == 0) { 362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Array of providers is ampty"); 363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 364adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.addProvider(provider); 365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project prv = Security.getProviders(); 366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int len2 = prv.length; 367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if ((len2 == len1 + 1) && (prv[len2-1].toString().equals("MyProvider version 1.0"))) { 368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } else { 370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Method getProviders() returned incorrect values"); 371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception ex) { 373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected exception"); 374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project finally { 376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.removeProvider(provider.getName()); 377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 381229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.Security#getProperty(String) 382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getPropertyLjava_lang_String() { 384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.getProperty(null); 387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("No expected NullPointerException."); 388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 390f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 3912f9e468ed4985edfd5e351faf2089d91e561e41dElliott Hughes Security.setProperty("myprop","test white space "); 3922f9e468ed4985edfd5e351faf2089d91e561e41dElliott Hughes assertEquals("test white space", Security.getProperty("myprop")); 393adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 395adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 396229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.security.Security#setProperty(String,String) 397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 398adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setPropertyLjava_lang_StringLjava_lang_String() { 399adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 400adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.setProperty(null, ""); 402adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("No expected NullPointerException."); 403adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.setProperty("", null); 408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("No expected NullPointerException."); 409adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 410adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 411adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 412adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.setProperty("", ""); 413adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Empty property", "", Security.getProperty("")); 414adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.setProperty("My Test Property", "My property value"); 416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("My property value", Security 417adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getProperty("My Test Property")); 418adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 419adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @SuppressWarnings("serial") 421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project class MyProvider extends Provider { 422adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project MyProvider() { 423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super("MyProvider", 1.0, "Provider for testing"); 424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project put("MessageDigest.SHA-1", "SomeClassName"); 425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project put("MyService.MyAlgorithm", "SomeClassName"); 426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project put("MyService.MyAlgorithm KeySize", "1024"); 427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project put("MyService.MyAlgorithm ImplementedIn", "Software"); 428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project put("MyService.MyAlgorithm Attribute", "AttributeValue"); 429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 430adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // service has no KeySize attribute 431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project put("MyService.NoKeySize", "SomeClassName"); 432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 433adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // service has no ImplementedIn attribute 434adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project put("MyService.NoImplementedIn", "SomeClassName"); 435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // service has no 'Attribute' attribute 437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project put("ABCService.NoAttribute", "SomeClassName"); 438adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 440adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 441