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