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

Commit 164ba67a authored by Eric Biggers's avatar Eric Biggers Committed by Automerger Merge Worker
Browse files

Remove HardwareAuthToken support from FakeStorageManager am: 401e447e am: 7028c0f4

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/2021755

Change-Id: I919229f6959ab38794a3698ce5134f3c2d65afae
parents 96b78e41 7028c0f4
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -221,7 +221,6 @@ public abstract class BaseLockSettingsServiceTests {
                Object[] args = invocation.getArguments();
                mStorageManager.addUserKeyAuth((int) args[0] /* userId */,
                        (int) args[1] /* serialNumber */,
                        (byte[]) args[2] /* token */,
                        (byte[]) args[3] /* secret */);
                return null;
            }
@@ -233,7 +232,6 @@ public abstract class BaseLockSettingsServiceTests {
                Object[] args = invocation.getArguments();
                mStorageManager.clearUserKeyAuth((int) args[0] /* userId */,
                        (int) args[1] /* serialNumber */,
                        (byte[]) args[2] /* token */,
                        (byte[]) args[3] /* secret */);
                return null;
            }
+19 −20
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ package com.android.server.locksettings;
import android.os.IProgressListener;
import android.os.RemoteException;
import android.util.ArrayMap;
import android.util.Pair;


import junit.framework.AssertionFailedError;
@@ -29,56 +28,56 @@ import java.util.Arrays;

public class FakeStorageManager {

    private ArrayMap<Integer, ArrayList<Pair<byte[], byte[]>>> mAuth = new ArrayMap<>();
    private ArrayMap<Integer, ArrayList<byte[]>> mAuth = new ArrayMap<>();
    private boolean mIgnoreBadUnlock;

    public void addUserKeyAuth(int userId, int serialNumber, byte[] token, byte[] secret) {
        getUserAuth(userId).add(new Pair<>(token, secret));
    public void addUserKeyAuth(int userId, int serialNumber, byte[] secret) {
        getUserAuth(userId).add(secret);
    }

    public void clearUserKeyAuth(int userId, int serialNumber, byte[] token, byte[] secret) {
        ArrayList<Pair<byte[], byte[]>> auths = getUserAuth(userId);
        if (token == null && secret == null) {
    public void clearUserKeyAuth(int userId, int serialNumber, byte[] secret) {
        ArrayList<byte[]> auths = getUserAuth(userId);
        if (secret == null) {
            return;
        }
        auths.remove(new Pair<>(token, secret));
        auths.add(new Pair<>(null, null));
        auths.remove(secret);
        auths.add(null);
    }

    public void fixateNewestUserKeyAuth(int userId) {
        ArrayList<Pair<byte[], byte[]>> auths = mAuth.get(userId);
        Pair<byte[], byte[]> latest = auths.get(auths.size() - 1);
        ArrayList<byte[]> auths = mAuth.get(userId);
        byte[] latest = auths.get(auths.size() - 1);
        auths.clear();
        auths.add(latest);
    }

    private ArrayList<Pair<byte[], byte[]>> getUserAuth(int userId) {
    private ArrayList<byte[]> getUserAuth(int userId) {
        if (!mAuth.containsKey(userId)) {
            ArrayList<Pair<byte[], byte[]>> auths = new ArrayList<Pair<byte[], byte[]>>();
            auths.add(new Pair(null, null));
            ArrayList<byte[]> auths = new ArrayList<>();
            auths.add(null);
            mAuth.put(userId, auths);
        }
        return mAuth.get(userId);
    }

    public byte[] getUserUnlockToken(int userId) {
        ArrayList<Pair<byte[], byte[]>> auths = getUserAuth(userId);
        ArrayList<byte[]> auths = getUserAuth(userId);
        if (auths.size() != 1) {
            throw new AssertionFailedError("More than one secret exists");
        }
        return auths.get(0).second;
        return auths.get(0);
    }

    public void unlockUser(int userId, byte[] secret, IProgressListener listener)
            throws RemoteException {
        listener.onStarted(userId, null);
        listener.onFinished(userId, null);
        ArrayList<Pair<byte[], byte[]>> auths = getUserAuth(userId);
        ArrayList<byte[]> auths = getUserAuth(userId);
        if (auths.size() > 1) {
            throw new AssertionFailedError("More than one secret exists");
        }
        Pair<byte[], byte[]> auth = auths.get(0);
        if (!Arrays.equals(secret, auth.second)) {
        byte[] auth = auths.get(0);
        if (!Arrays.equals(secret, auth)) {
            if (!mIgnoreBadUnlock) {
                throw new AssertionFailedError("Invalid secret to unlock user " + userId);
            }