KeyPairGeneratorSpecTest.java revision db026710ec0adcf7f72dfb24c65d38a882ee26d8
1db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root/* 2db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root * Copyright (C) 2012 The Android Open Source Project 3db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root * 4db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root * Licensed under the Apache License, Version 2.0 (the "License"); 5db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root * you may not use this file except in compliance with the License. 6db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root * You may obtain a copy of the License at 7db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root * 8db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root * http://www.apache.org/licenses/LICENSE-2.0 9db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root * 10db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root * Unless required by applicable law or agreed to in writing, software 11db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root * distributed under the License is distributed on an "AS IS" BASIS, 12db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root * See the License for the specific language governing permissions and 14db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root * limitations under the License. 15db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root */ 16db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root 17db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Rootpackage android.security; 18db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root 19db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Rootimport android.test.AndroidTestCase; 20db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root 21db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Rootimport java.math.BigInteger; 22db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Rootimport java.util.Date; 23db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root 24db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Rootimport javax.security.auth.x500.X500Principal; 25db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root 26db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Rootpublic class AndroidKeyPairGeneratorSpecTest extends AndroidTestCase { 27db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root private static final String TEST_ALIAS_1 = "test1"; 28db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root 29db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root private static final X500Principal TEST_DN_1 = new X500Principal("CN=test1"); 30db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root 31db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root private static final long NOW_MILLIS = System.currentTimeMillis(); 32db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root 33db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root private static final BigInteger SERIAL_1 = BigInteger.ONE; 34db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root 35db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root /* We have to round this off because X509v3 doesn't store milliseconds. */ 36db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root private static final Date NOW = new Date(NOW_MILLIS - (NOW_MILLIS % 1000L)); 37db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root 38db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root @SuppressWarnings("deprecation") 39db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root private static final Date NOW_PLUS_10_YEARS = new Date(NOW.getYear() + 10, 0, 1); 40db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root 41db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root public void testConstructor_Success() throws Exception { 42db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root AndroidKeyPairGeneratorSpec spec = new AndroidKeyPairGeneratorSpec(getContext(), 43db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root TEST_ALIAS_1, TEST_DN_1, SERIAL_1, NOW, NOW_PLUS_10_YEARS); 44db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root 45db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root assertEquals("Context should be the one specified", getContext(), spec.getContext()); 46db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root 47db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root assertEquals("Alias should be the one specified", TEST_ALIAS_1, spec.getKeystoreAlias()); 48db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root 49db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root assertEquals("subjectDN should be the one specified", TEST_DN_1, spec.getSubjectDN()); 50db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root 51db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root assertEquals("startDate should be the one specified", NOW, spec.getStartDate()); 52db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root 53db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root assertEquals("endDate should be the one specified", NOW_PLUS_10_YEARS, spec.getEndDate()); 54db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root } 55db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root 56db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root public void testConstructor_NullContext_Failure() throws Exception { 57db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root try { 58db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root new AndroidKeyPairGeneratorSpec(null, TEST_ALIAS_1, TEST_DN_1, SERIAL_1, NOW, 59db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root NOW_PLUS_10_YEARS); 60db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root fail("Should throw IllegalArgumentException when context is null"); 61db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root } catch (IllegalArgumentException success) { 62db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root } 63db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root } 64db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root 65db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root public void testConstructor_NullKeystoreAlias_Failure() throws Exception { 66db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root try { 67db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root new AndroidKeyPairGeneratorSpec(getContext(), null, TEST_DN_1, SERIAL_1, NOW, 68db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root NOW_PLUS_10_YEARS); 69db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root fail("Should throw IllegalArgumentException when keystoreAlias is null"); 70db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root } catch (IllegalArgumentException success) { 71db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root } 72db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root } 73db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root 74db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root public void testConstructor_NullSubjectDN_Failure() throws Exception { 75db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root try { 76db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root new AndroidKeyPairGeneratorSpec(getContext(), TEST_ALIAS_1, null, SERIAL_1, NOW, 77db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root NOW_PLUS_10_YEARS); 78db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root fail("Should throw IllegalArgumentException when subjectDN is null"); 79db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root } catch (IllegalArgumentException success) { 80db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root } 81db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root } 82db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root 83db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root public void testConstructor_NullSerial_Failure() throws Exception { 84db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root try { 85db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root new AndroidKeyPairGeneratorSpec(getContext(), TEST_ALIAS_1, TEST_DN_1, null, NOW, 86db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root NOW_PLUS_10_YEARS); 87db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root fail("Should throw IllegalArgumentException when startDate is null"); 88db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root } catch (IllegalArgumentException success) { 89db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root } 90db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root } 91db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root 92db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root public void testConstructor_NullStartDate_Failure() throws Exception { 93db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root try { 94db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root new AndroidKeyPairGeneratorSpec(getContext(), TEST_ALIAS_1, TEST_DN_1, SERIAL_1, null, 95db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root NOW_PLUS_10_YEARS); 96db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root fail("Should throw IllegalArgumentException when startDate is null"); 97db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root } catch (IllegalArgumentException success) { 98db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root } 99db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root } 100db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root 101db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root public void testConstructor_NullEndDate_Failure() throws Exception { 102db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root try { 103db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root new AndroidKeyPairGeneratorSpec(getContext(), TEST_ALIAS_1, TEST_DN_1, SERIAL_1, NOW, 104db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root null); 105db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root fail("Should throw IllegalArgumentException when keystoreAlias is null"); 106db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root } catch (IllegalArgumentException success) { 107db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root } 108db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root } 109db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root 110db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root public void testConstructor_EndBeforeStart_Failure() throws Exception { 111db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root try { 112db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root new AndroidKeyPairGeneratorSpec(getContext(), TEST_ALIAS_1, TEST_DN_1, SERIAL_1, 113db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root NOW_PLUS_10_YEARS, NOW); 114db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root fail("Should throw IllegalArgumentException when end is before start"); 115db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root } catch (IllegalArgumentException success) { 116db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root } 117db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root } 118db026710ec0adcf7f72dfb24c65d38a882ee26d8Kenny Root} 119