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

Commit f1a678e0 authored by Rob Barnes's avatar Rob Barnes
Browse files

Added listUidsForAuthBoundKeys to KeyStore

listUidsForAuthBoundKeys was added to IKeyStoreService.
This CL exposes this method in KeyStore for system apps.
This method will be hidden for non system apps.

Bug: b/112321280
Test: listUidsForAuthBoundKeys in IKeyStoreService has its own tests
Test: This method cannot be tested directly from CTS
Change-Id: Iac9e863079a1367ddb3a599bc3825baea96a1c31
parent 4a7a3934
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ import java.math.BigInteger;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import sun.security.util.ObjectIdentifier;
@@ -292,6 +293,31 @@ public class KeyStore {
        }
    }

    /**
     * List uids of all keys that are auth bound to the current user. 
     * Only system is allowed to call this method.
     */
    @UnsupportedAppUsage
    public int[] listUidsOfAuthBoundKeys() {
        final int MAX_RESULT_SIZE = 100;
        int[] uidsOut = new int[MAX_RESULT_SIZE];
        try {
            int rc = mBinder.listUidsOfAuthBoundKeys(uidsOut);
            if (rc != NO_ERROR) {
                Log.w(TAG, String.format("listUidsOfAuthBoundKeys failed with error code %d", rc));
                return null;
            }
        } catch (RemoteException e) {
            Log.w(TAG, "Cannot connect to keystore", e);
            return null;
        } catch (android.os.ServiceSpecificException e) {
            Log.w(TAG, "KeyStore exception", e);
            return null;
        }
        // Remove any 0 entries
        return Arrays.stream(uidsOut).filter(x -> x > 0).toArray();
   }

    public String[] list(String prefix) {
        return list(prefix, UID_SELF);
    }