1a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri/* 2a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri * Copyright (C) 2017 The Android Open Source Project 3a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri * 4a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri * Licensed under the Apache License, Version 2.0 (the "License"); 5a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri * you may not use this file except in compliance with the License. 6a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri * You may obtain a copy of the License at 7a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri * 8a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri * http://www.apache.org/licenses/LICENSE-2.0 9a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri * 10a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri * Unless required by applicable law or agreed to in writing, software 11a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri * distributed under the License is distributed on an "AS IS" BASIS, 12a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri * See the License for the specific language governing permissions and 14a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri * limitations under the License. 15a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri */ 16a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri 17a173064047d304837d907b9b39ece5c14adf2b25Eran Messeripackage android.security.keystore; 18a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri 19a173064047d304837d907b9b39ece5c14adf2b25Eran Messeriimport static org.hamcrest.Matchers.is; 20a173064047d304837d907b9b39ece5c14adf2b25Eran Messeriimport static org.junit.Assert.assertEquals; 21a173064047d304837d907b9b39ece5c14adf2b25Eran Messeriimport static org.junit.Assert.assertThat; 22a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri 23a173064047d304837d907b9b39ece5c14adf2b25Eran Messeriimport android.security.keystore.KeyGenParameterSpec; 24a173064047d304837d907b9b39ece5c14adf2b25Eran Messeriimport android.security.keystore.KeyProperties; 25a173064047d304837d907b9b39ece5c14adf2b25Eran Messeriimport android.security.ParcelableKeyGenParameterSpecTest; 26a173064047d304837d907b9b39ece5c14adf2b25Eran Messeriimport android.support.test.runner.AndroidJUnit4; 27a173064047d304837d907b9b39ece5c14adf2b25Eran Messeriimport org.junit.Test; 28a173064047d304837d907b9b39ece5c14adf2b25Eran Messeriimport org.junit.runner.RunWith; 29a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri 30a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri/** Unit tests for {@link KeyGenParameterSpec}. */ 31a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri@RunWith(AndroidJUnit4.class) 32a173064047d304837d907b9b39ece5c14adf2b25Eran Messeripublic final class KeyGenParameterSpecTest { 33a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri static final String ALIAS = "keystore-alias"; 34a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri static final int KEY_PURPOSES = KeyProperties.PURPOSE_SIGN | KeyProperties.PURPOSE_VERIFY; 35a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri 36a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri @Test 37a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri public void testBuilderCopyingValues() { 38a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri KeyGenParameterSpec spec = ParcelableKeyGenParameterSpecTest.configureDefaultSpec(); 39a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri KeyGenParameterSpec copiedSpec = 40a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri new KeyGenParameterSpec.Builder(spec).build(); 41a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri ParcelableKeyGenParameterSpecTest.validateSpecValues( 42a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri copiedSpec, spec.getUid(), spec.getKeystoreAlias()); 43a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri } 44a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri 45a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri @Test 46a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri public void testBuilderCopyingEmptyValues() { 47a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri KeyGenParameterSpec spec = new KeyGenParameterSpec.Builder(ALIAS, KEY_PURPOSES).build(); 48a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri KeyGenParameterSpec copiedSpec = new KeyGenParameterSpec.Builder(spec).build(); 49a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri 50a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri assertThat(copiedSpec.getKeystoreAlias(), is(ALIAS)); 51a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri assertThat(copiedSpec.getPurposes(), is(KEY_PURPOSES)); 52a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri } 53a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri 54a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri @Test 55a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri public void testCanModifyValuesInCopiedBuilder() { 56a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri KeyGenParameterSpec spec = ParcelableKeyGenParameterSpecTest.configureDefaultSpec(); 57a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri KeyGenParameterSpec copiedSpec = 58a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri new KeyGenParameterSpec.Builder(spec) 59a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri .setAttestationChallenge(null) 60a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri .build(); 61a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri 62a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri assertEquals(copiedSpec.getAttestationChallenge(), null); 63a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri } 64a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri} 65