diff options
| author | Kenny Root <kroot@google.com> | 2013-03-21 16:07:11 -0700 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2013-03-21 16:07:11 -0700 |
| commit | e37478c4ebbe6e95ef3904b9f2fa0e93e1b258ac (patch) | |
| tree | 67283a16d7d176eb569abda66d7a4d91bf89228f | |
| parent | 116e56cdf4bf408bfa3e7f70efc325a2a9f4010b (diff) | |
| parent | 9d262c49d96de4d896594bfcf00ece873f1abb7f (diff) | |
| download | frameworks_base-e37478c4ebbe6e95ef3904b9f2fa0e93e1b258ac.zip frameworks_base-e37478c4ebbe6e95ef3904b9f2fa0e93e1b258ac.tar.gz frameworks_base-e37478c4ebbe6e95ef3904b9f2fa0e93e1b258ac.tar.bz2 | |
am 9d262c49: am f6c4dba2: Merge "KeyStore: change migrate to duplicate"
* commit '9d262c49d96de4d896594bfcf00ece873f1abb7f':
KeyStore: change migrate to duplicate
| -rw-r--r-- | core/java/android/security/IKeystoreService.java | 16 | ||||
| -rw-r--r-- | keystore/java/android/security/KeyStore.java | 4 | ||||
| -rw-r--r-- | keystore/tests/src/android/security/KeyStoreTest.java | 36 |
3 files changed, 42 insertions, 14 deletions
diff --git a/core/java/android/security/IKeystoreService.java b/core/java/android/security/IKeystoreService.java index 2ae3c64..a890d9b 100644 --- a/core/java/android/security/IKeystoreService.java +++ b/core/java/android/security/IKeystoreService.java @@ -407,15 +407,18 @@ public interface IKeystoreService extends IInterface { } @Override - public int migrate(String name, int targetUid) throws RemoteException { + public int duplicate(String srcKey, int srcUid, String destKey, int destUid) + throws RemoteException { Parcel _data = Parcel.obtain(); Parcel _reply = Parcel.obtain(); int _result; try { _data.writeInterfaceToken(DESCRIPTOR); - _data.writeString(name); - _data.writeInt(targetUid); - mRemote.transact(Stub.TRANSACTION_migrate, _data, _reply, 0); + _data.writeString(srcKey); + _data.writeInt(srcUid); + _data.writeString(destKey); + _data.writeInt(destUid); + mRemote.transact(Stub.TRANSACTION_duplicate, _data, _reply, 0); _reply.readException(); _result = _reply.readInt(); } finally { @@ -448,7 +451,7 @@ public interface IKeystoreService extends IInterface { static final int TRANSACTION_grant = IBinder.FIRST_CALL_TRANSACTION + 17; static final int TRANSACTION_ungrant = IBinder.FIRST_CALL_TRANSACTION + 18; static final int TRANSACTION_getmtime = IBinder.FIRST_CALL_TRANSACTION + 19; - static final int TRANSACTION_migrate = IBinder.FIRST_CALL_TRANSACTION + 20; + static final int TRANSACTION_duplicate = IBinder.FIRST_CALL_TRANSACTION + 20; /** * Cast an IBinder object into an IKeystoreService interface, generating @@ -534,5 +537,6 @@ public interface IKeystoreService extends IInterface { public long getmtime(String name) throws RemoteException; - public int migrate(String name, int targetUid) throws RemoteException; + public int duplicate(String srcKey, int srcUid, String destKey, int destUid) + throws RemoteException; } diff --git a/keystore/java/android/security/KeyStore.java b/keystore/java/android/security/KeyStore.java index 4dc0beb..12c0ed8 100644 --- a/keystore/java/android/security/KeyStore.java +++ b/keystore/java/android/security/KeyStore.java @@ -287,9 +287,9 @@ public class KeyStore { } } - public boolean migrate(String key, int uid) { + public boolean duplicate(String srcKey, int srcUid, String destKey, int destUid) { try { - return mBinder.migrate(key, uid) == NO_ERROR; + return mBinder.duplicate(srcKey, srcUid, destKey, destUid) == NO_ERROR; } catch (RemoteException e) { Log.w(TAG, "Cannot connect to keystore", e); return false; diff --git a/keystore/tests/src/android/security/KeyStoreTest.java b/keystore/tests/src/android/security/KeyStoreTest.java index 8f8ee92..1de1eaf 100644 --- a/keystore/tests/src/android/security/KeyStoreTest.java +++ b/keystore/tests/src/android/security/KeyStoreTest.java @@ -553,7 +553,7 @@ public class KeyStoreTest extends ActivityUnitTestCase<Activity> { mKeyStore.ungrant(TEST_KEYNAME, 0)); } - public void testMigrate_grantedUid_Wifi_Success() throws Exception { + public void testDuplicate_grantedUid_Wifi_Success() throws Exception { assertTrue(mKeyStore.password(TEST_PASSWD)); assertFalse(mKeyStore.contains(TEST_KEYNAME)); @@ -563,13 +563,35 @@ public class KeyStoreTest extends ActivityUnitTestCase<Activity> { assertTrue(mKeyStore.contains(TEST_KEYNAME)); assertFalse(mKeyStore.contains(TEST_KEYNAME, Process.WIFI_UID)); - assertTrue(mKeyStore.migrate(TEST_KEYNAME, Process.WIFI_UID)); + // source doesn't exist + assertFalse(mKeyStore.duplicate(TEST_KEYNAME1, -1, TEST_KEYNAME1, Process.WIFI_UID)); + assertFalse(mKeyStore.contains(TEST_KEYNAME1, Process.WIFI_UID)); - assertFalse(mKeyStore.contains(TEST_KEYNAME)); - assertTrue(mKeyStore.contains(TEST_KEYNAME, Process.WIFI_UID)); + // Copy from current UID to granted UID + assertTrue(mKeyStore.duplicate(TEST_KEYNAME, -1, TEST_KEYNAME1, Process.WIFI_UID)); + assertTrue(mKeyStore.contains(TEST_KEYNAME)); + assertFalse(mKeyStore.contains(TEST_KEYNAME1)); + assertFalse(mKeyStore.contains(TEST_KEYNAME, Process.WIFI_UID)); + assertTrue(mKeyStore.contains(TEST_KEYNAME1, Process.WIFI_UID)); + assertFalse(mKeyStore.duplicate(TEST_KEYNAME, -1, TEST_KEYNAME1, Process.WIFI_UID)); + + // Copy from granted UID to same granted UID + assertTrue(mKeyStore.duplicate(TEST_KEYNAME1, Process.WIFI_UID, TEST_KEYNAME2, + Process.WIFI_UID)); + assertFalse(mKeyStore.contains(TEST_KEYNAME, Process.WIFI_UID)); + assertTrue(mKeyStore.contains(TEST_KEYNAME1, Process.WIFI_UID)); + assertTrue(mKeyStore.contains(TEST_KEYNAME2, Process.WIFI_UID)); + assertFalse(mKeyStore.duplicate(TEST_KEYNAME1, Process.WIFI_UID, TEST_KEYNAME2, + Process.WIFI_UID)); + + assertTrue(mKeyStore.duplicate(TEST_KEYNAME, -1, TEST_KEYNAME2, -1)); + assertTrue(mKeyStore.contains(TEST_KEYNAME)); + assertFalse(mKeyStore.contains(TEST_KEYNAME1)); + assertTrue(mKeyStore.contains(TEST_KEYNAME2)); + assertFalse(mKeyStore.duplicate(TEST_KEYNAME, -1, TEST_KEYNAME2, -1)); } - public void testMigrate_ungrantedUid_Bluetooth_Failure() throws Exception { + public void testDuplicate_ungrantedUid_Bluetooth_Failure() throws Exception { assertTrue(mKeyStore.password(TEST_PASSWD)); assertFalse(mKeyStore.contains(TEST_KEYNAME)); @@ -579,7 +601,9 @@ public class KeyStoreTest extends ActivityUnitTestCase<Activity> { assertTrue(mKeyStore.contains(TEST_KEYNAME)); assertFalse(mKeyStore.contains(TEST_KEYNAME, Process.BLUETOOTH_UID)); - assertFalse(mKeyStore.migrate(TEST_KEYNAME, Process.BLUETOOTH_UID)); + assertFalse(mKeyStore.duplicate(TEST_KEYNAME, -1, TEST_KEYNAME2, Process.BLUETOOTH_UID)); + assertFalse(mKeyStore.duplicate(TEST_KEYNAME, Process.BLUETOOTH_UID, TEST_KEYNAME2, + Process.BLUETOOTH_UID)); assertTrue(mKeyStore.contains(TEST_KEYNAME)); assertFalse(mKeyStore.contains(TEST_KEYNAME, Process.BLUETOOTH_UID)); |
