diff options
author | Kenny Root <kroot@google.com> | 2013-03-20 11:36:50 -0700 |
---|---|---|
committer | Kenny Root <kroot@google.com> | 2013-03-20 11:57:46 -0700 |
commit | bd79419ef84ae31f3765721b50aa413fa462d1d1 (patch) | |
tree | d2eb8242f5a770452d7100d38b6c273aac242134 /keystore | |
parent | 78ad849163a7b01073b46fbd7d818392720005d1 (diff) | |
download | frameworks_base-bd79419ef84ae31f3765721b50aa413fa462d1d1.zip frameworks_base-bd79419ef84ae31f3765721b50aa413fa462d1d1.tar.gz frameworks_base-bd79419ef84ae31f3765721b50aa413fa462d1d1.tar.bz2 |
KeyStore: add "migrate" command
To support the WiFi service, we need to support migration from the
system UID to the wifi UID. This adds a command to achieve the
migration.
Bug: 8122243
Change-Id: I65f7a91504c1d2a2aac22b9c3051adffd28d66c1
Diffstat (limited to 'keystore')
-rw-r--r-- | keystore/java/android/security/KeyStore.java | 9 | ||||
-rw-r--r-- | keystore/tests/src/android/security/KeyStoreTest.java | 32 |
2 files changed, 41 insertions, 0 deletions
diff --git a/keystore/java/android/security/KeyStore.java b/keystore/java/android/security/KeyStore.java index 9000668..4dc0beb 100644 --- a/keystore/java/android/security/KeyStore.java +++ b/keystore/java/android/security/KeyStore.java @@ -287,6 +287,15 @@ public class KeyStore { } } + public boolean migrate(String key, int uid) { + try { + return mBinder.migrate(key, uid) == NO_ERROR; + } catch (RemoteException e) { + Log.w(TAG, "Cannot connect to keystore", e); + return false; + } + } + public int getLastError() { return mError; } diff --git a/keystore/tests/src/android/security/KeyStoreTest.java b/keystore/tests/src/android/security/KeyStoreTest.java index 6ce3ed3..8f8ee92 100644 --- a/keystore/tests/src/android/security/KeyStoreTest.java +++ b/keystore/tests/src/android/security/KeyStoreTest.java @@ -553,6 +553,38 @@ public class KeyStoreTest extends ActivityUnitTestCase<Activity> { mKeyStore.ungrant(TEST_KEYNAME, 0)); } + public void testMigrate_grantedUid_Wifi_Success() throws Exception { + assertTrue(mKeyStore.password(TEST_PASSWD)); + + assertFalse(mKeyStore.contains(TEST_KEYNAME)); + + assertTrue(mKeyStore.generate(TEST_KEYNAME)); + + assertTrue(mKeyStore.contains(TEST_KEYNAME)); + assertFalse(mKeyStore.contains(TEST_KEYNAME, Process.WIFI_UID)); + + assertTrue(mKeyStore.migrate(TEST_KEYNAME, Process.WIFI_UID)); + + assertFalse(mKeyStore.contains(TEST_KEYNAME)); + assertTrue(mKeyStore.contains(TEST_KEYNAME, Process.WIFI_UID)); + } + + public void testMigrate_ungrantedUid_Bluetooth_Failure() throws Exception { + assertTrue(mKeyStore.password(TEST_PASSWD)); + + assertFalse(mKeyStore.contains(TEST_KEYNAME)); + + assertTrue(mKeyStore.generate(TEST_KEYNAME)); + + assertTrue(mKeyStore.contains(TEST_KEYNAME)); + assertFalse(mKeyStore.contains(TEST_KEYNAME, Process.BLUETOOTH_UID)); + + assertFalse(mKeyStore.migrate(TEST_KEYNAME, Process.BLUETOOTH_UID)); + + assertTrue(mKeyStore.contains(TEST_KEYNAME)); + assertFalse(mKeyStore.contains(TEST_KEYNAME, Process.BLUETOOTH_UID)); + } + /** * The amount of time to allow before and after expected time for variance * in timing tests. |