Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5c95bf30 authored by Kenny Root's avatar Kenny Root Committed by Android Git Automerger
Browse files

am e37478c4: am 9d262c49: am f6c4dba2: Merge "KeyStore: change migrate to duplicate"

* commit 'e37478c4':
  KeyStore: change migrate to duplicate
parents 69c782f9 e37478c4
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -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;
}
+2 −2
Original line number Diff line number Diff line
@@ -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;
+30 −6
Original line number Diff line number Diff line
@@ -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));