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

Commit 3fc735da authored by Dave McCloskey's avatar Dave McCloskey Committed by Android (Google) Code Review
Browse files

Merge "Changes to support adding CTS Test TrustTestCases."

parents 7e50dd1e a7da0e26
Loading
Loading
Loading
Loading
+20 −2
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@
package android {

  public static final class Manifest.permission {
    field public static final String ACCESS_KEYGUARD_SECURE_STORAGE = "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE";
    field public static final String ACCESS_NOTIFICATIONS = "android.permission.ACCESS_NOTIFICATIONS";
    field public static final String ACTIVITY_EMBEDDING = "android.permission.ACTIVITY_EMBEDDING";
    field public static final String APPROVE_INCIDENT_REPORTS = "android.permission.APPROVE_INCIDENT_REPORTS";
@@ -287,8 +288,8 @@ package android.app {
  }

  public class KeyguardManager {
    method @RequiresPermission(anyOf={android.Manifest.permission.SET_AND_VERIFY_LOCKSCREEN_CREDENTIALS, "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE"}) public boolean checkLock(int, @Nullable byte[]);
    method @RequiresPermission(anyOf={android.Manifest.permission.SET_AND_VERIFY_LOCKSCREEN_CREDENTIALS, "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE"}) public boolean setLock(int, @Nullable byte[], int, @Nullable byte[]);
    method @RequiresPermission(anyOf={android.Manifest.permission.SET_AND_VERIFY_LOCKSCREEN_CREDENTIALS, android.Manifest.permission.ACCESS_KEYGUARD_SECURE_STORAGE}) public boolean checkLock(int, @Nullable byte[]);
    method @RequiresPermission(anyOf={android.Manifest.permission.SET_AND_VERIFY_LOCKSCREEN_CREDENTIALS, android.Manifest.permission.ACCESS_KEYGUARD_SECURE_STORAGE}) public boolean setLock(int, @Nullable byte[], int, @Nullable byte[]);
  }

  public class LocaleManager {
@@ -582,6 +583,15 @@ package android.app.prediction {

}

package android.app.trust {

  public class TrustManager {
    method @RequiresPermission(android.Manifest.permission.ACCESS_KEYGUARD_SECURE_STORAGE) public void enableTrustAgentForUserForTest(@NonNull android.content.ComponentName, int);
    method @RequiresPermission(android.Manifest.permission.ACCESS_KEYGUARD_SECURE_STORAGE) public void reportUserRequestedUnlock(int);
  }

}

package android.app.usage {

  public class NetworkStatsManager {
@@ -2362,6 +2372,14 @@ package android.service.quicksettings {

}

package android.service.trust {

  public class TrustAgentService extends android.app.Service {
    method public void onUserRequestedUnlock();
  }

}

package android.service.voice {

  public class AlwaysOnHotwordDetector implements android.service.voice.HotwordDetector {
+2 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package android.app.trust;

import android.app.trust.ITrustListener;
import android.content.ComponentName;
import android.hardware.biometrics.BiometricSourceType;

/**
@@ -29,6 +30,7 @@ interface ITrustManager {
    void reportUserRequestedUnlock(int userId);
    void reportUnlockLockout(int timeoutMs, int userId);
    void reportEnabledTrustAgentsChanged(int userId);
    void enableTrustAgentForUserForTest(in ComponentName componentName, int userId);
    void registerTrustListener(in ITrustListener trustListener);
    void unregisterTrustListener(in ITrustListener trustListener);
    void reportKeyguardShowingChanged();
+67 −6
Original line number Diff line number Diff line
@@ -16,10 +16,14 @@

package android.app.trust;

import android.Manifest;
import static android.Manifest.permission.ACCESS_KEYGUARD_SECURE_STORAGE;

import android.annotation.NonNull;
import android.annotation.RequiresPermission;
import android.annotation.SystemService;
import android.annotation.TestApi;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.ComponentName;
import android.content.Context;
import android.hardware.biometrics.BiometricSourceType;
import android.os.Handler;
@@ -33,9 +37,17 @@ import java.util.ArrayList;
import java.util.List;

/**
 * See {@link com.android.server.trust.TrustManagerService}
 * Interface to the system service managing trust.
 *
 * <p>This class is for internal use only. This class is marked {@code @TestApi} to
 * enable testing the trust system including {@link android.service.trust.TrustAgentService}.
 * Methods which are currently not used in tests are marked @hide.
 *
 * @see com.android.server.trust.TrustManagerService
 *
 * @hide
 */
@TestApi
@SystemService(Context.TRUST_SERVICE)
public class TrustManager {

@@ -51,7 +63,8 @@ public class TrustManager {
    private final ITrustManager mService;
    private final ArrayMap<TrustListener, ITrustListener> mTrustListeners;

    public TrustManager(IBinder b) {
    /** @hide */
    public TrustManager(@NonNull IBinder b) {
        mService = ITrustManager.Stub.asInterface(b);
        mTrustListeners = new ArrayMap<TrustListener, ITrustListener>();
    }
@@ -62,8 +75,10 @@ public class TrustManager {
     *
     * @param userId The id for the user to be locked/unlocked.
     * @param locked The value for that user's locked state.
     *
     * @hide
     */
    @RequiresPermission(Manifest.permission.ACCESS_KEYGUARD_SECURE_STORAGE)
    @RequiresPermission(ACCESS_KEYGUARD_SECURE_STORAGE)
    public void setDeviceLockedForUser(int userId, boolean locked) {
        try {
            mService.setDeviceLockedForUser(userId, locked);
@@ -78,8 +93,11 @@ public class TrustManager {
     * @param successful if true, the unlock attempt was successful.
     *
     * Requires the {@link android.Manifest.permission#ACCESS_KEYGUARD_SECURE_STORAGE} permission.
     *
     * @hide
     */
    @UnsupportedAppUsage
    @RequiresPermission(ACCESS_KEYGUARD_SECURE_STORAGE)
    public void reportUnlockAttempt(boolean successful, int userId) {
        try {
            mService.reportUnlockAttempt(successful, userId);
@@ -93,6 +111,7 @@ public class TrustManager {
     *
     * Requires the {@link android.Manifest.permission#ACCESS_KEYGUARD_SECURE_STORAGE} permission.
     */
    @RequiresPermission(ACCESS_KEYGUARD_SECURE_STORAGE)
    public void reportUserRequestedUnlock(int userId) {
        try {
            mService.reportUserRequestedUnlock(userId);
@@ -112,7 +131,10 @@ public class TrustManager {
     *    attempt to unlock the device again.
     *
     * Requires the {@link android.Manifest.permission#ACCESS_KEYGUARD_SECURE_STORAGE} permission.
     *
     * @hide
     */
    @RequiresPermission(ACCESS_KEYGUARD_SECURE_STORAGE)
    public void reportUnlockLockout(int timeoutMs, int userId) {
        try {
            mService.reportUnlockLockout(timeoutMs, userId);
@@ -125,7 +147,10 @@ public class TrustManager {
     * Reports that the list of enabled trust agents changed for user {@param userId}.
     *
     * Requires the {@link android.Manifest.permission#ACCESS_KEYGUARD_SECURE_STORAGE} permission.
     *
     * @hide
     */
    @RequiresPermission(ACCESS_KEYGUARD_SECURE_STORAGE)
    public void reportEnabledTrustAgentsChanged(int userId) {
        try {
            mService.reportEnabledTrustAgentsChanged(userId);
@@ -134,11 +159,34 @@ public class TrustManager {
        }
    }

    /**
     * Enables a trust agent.
     *
     * <p>The agent is specified by {@code componentName} and must be a subclass of
     * {@link android.service.trust.TrustAgentService} and otherwise meet the requirements
     * to be a trust agent.
     *
     * <p>This method can only be used in tests.
     *
     * @param componentName the trust agent to enable
     */
    @RequiresPermission(ACCESS_KEYGUARD_SECURE_STORAGE)
    public void enableTrustAgentForUserForTest(@NonNull ComponentName componentName, int userId) {
        try {
            mService.enableTrustAgentForUserForTest(componentName, userId);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    /**
     * Reports that the visibility of the keyguard has changed.
     *
     * Requires the {@link android.Manifest.permission#ACCESS_KEYGUARD_SECURE_STORAGE} permission.
     *
     * @hide
     */
    @RequiresPermission(ACCESS_KEYGUARD_SECURE_STORAGE)
    public void reportKeyguardShowingChanged() {
        try {
            mService.reportKeyguardShowingChanged();
@@ -151,7 +199,10 @@ public class TrustManager {
     * Registers a listener for trust events.
     *
     * Requires the {@link android.Manifest.permission#TRUST_LISTENER} permission.
     *
     * @hide
     */
    @RequiresPermission(android.Manifest.permission.TRUST_LISTENER)
    public void registerTrustListener(final TrustListener trustListener) {
        try {
            ITrustListener.Stub iTrustListener = new ITrustListener.Stub() {
@@ -192,7 +243,10 @@ public class TrustManager {
     * Unregisters a listener for trust events.
     *
     * Requires the {@link android.Manifest.permission#TRUST_LISTENER} permission.
     *
     * @hide
     */
    @RequiresPermission(android.Manifest.permission.TRUST_LISTENER)
    public void unregisterTrustListener(final TrustListener trustListener) {
        ITrustListener iTrustListener = mTrustListeners.remove(trustListener);
        if (iTrustListener != null) {
@@ -207,6 +261,8 @@ public class TrustManager {
    /**
     * @return whether {@param userId} has enabled and configured trust agents. Ignores short-term
     * unavailability of trust due to {@link LockPatternUtils.StrongAuthTracker}.
     *
     * @hide
     */
    @RequiresPermission(android.Manifest.permission.TRUST_LISTENER)
    public boolean isTrustUsuallyManaged(int userId) {
@@ -223,8 +279,10 @@ public class TrustManager {
     * can be skipped.
     *
     * @param userId
     *
     * @hide
     */
    @RequiresPermission(Manifest.permission.ACCESS_KEYGUARD_SECURE_STORAGE)
    @RequiresPermission(ACCESS_KEYGUARD_SECURE_STORAGE)
    public void unlockedByBiometricForUser(int userId, BiometricSourceType source) {
        try {
            mService.unlockedByBiometricForUser(userId, source);
@@ -235,8 +293,10 @@ public class TrustManager {

    /**
     * Clears authentication by the specified biometric type for all users.
     *
     * @hide
     */
    @RequiresPermission(Manifest.permission.ACCESS_KEYGUARD_SECURE_STORAGE)
    @RequiresPermission(ACCESS_KEYGUARD_SECURE_STORAGE)
    public void clearAllBiometricRecognized(BiometricSourceType source, int unlockedUser) {
        try {
            mService.clearAllBiometricRecognized(source, unlockedUser);
@@ -264,6 +324,7 @@ public class TrustManager {
        }
    };

    /** @hide */
    public interface TrustListener {

        /**
+3 −1
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.SdkConstant;
import android.annotation.SystemApi;
import android.annotation.TestApi;
import android.app.Service;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
@@ -310,9 +311,10 @@ public class TrustAgentService extends Service {
     *
     * @see #FLAG_GRANT_TRUST_TEMPORARY_AND_RENEWABLE
     *
     * TODO(b/213631672): Add CTS tests
     * TODO(b/213631672): Remove @hide and @TestApi
     * @hide
     */
    @TestApi
    public void onUserRequestedUnlock() {
    }

+1 −1
Original line number Diff line number Diff line
@@ -5416,7 +5416,7 @@
                android:protectionLevel="signature|setup|role" />

    <!-- Allows access to keyguard secure storage.  Only allowed for system processes.
        @hide -->
         @hide @TestApi -->
    <permission android:name="android.permission.ACCESS_KEYGUARD_SECURE_STORAGE"
        android:protectionLevel="signature|setup" />

Loading