From 72ff9029c6cc120bf335086f4bf10ae8017202f1 Mon Sep 17 00:00:00 2001 From: Rubin Xu Date: Sun, 14 Feb 2021 18:13:29 +0000 Subject: Add KeyChain.createManageCredentialsIntent Missed from previous cherry-pick. Test: make -j docs Bug: 179180345 Merged-In: I1e57ed9c18a1ada463c55dbf17ce30e31aa7bad2 Change-Id: I1d88e11740a13490613962c944b528e6c2bd0fcb --- keystore/java/android/security/Credentials.java | 2 ++ keystore/java/android/security/KeyChain.java | 38 +++++++++++++++++++++++++ 2 files changed, 40 insertions(+) (limited to 'keystore') diff --git a/keystore/java/android/security/Credentials.java b/keystore/java/android/security/Credentials.java index 9e1fb54bedbe..ae9f866459d6 100644 --- a/keystore/java/android/security/Credentials.java +++ b/keystore/java/android/security/Credentials.java @@ -49,6 +49,8 @@ public class Credentials { public static final String INSTALL_AS_USER_ACTION = "android.credentials.INSTALL_AS_USER"; + public static final String ACTION_MANAGE_CREDENTIALS = "android.security.MANAGE_CREDENTIALS"; + /** * Key prefix for CA certificates. * diff --git a/keystore/java/android/security/KeyChain.java b/keystore/java/android/security/KeyChain.java index 6df62c0a0cba..63690d3c1567 100644 --- a/keystore/java/android/security/KeyChain.java +++ b/keystore/java/android/security/KeyChain.java @@ -15,6 +15,8 @@ */ package android.security; +import static android.security.Credentials.ACTION_MANAGE_CREDENTIALS; + import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SdkConstant; @@ -121,6 +123,11 @@ public final class KeyChain { */ private static final String CERT_INSTALLER_PACKAGE = "com.android.certinstaller"; + /** + * Package name for Settings. + */ + private static final String SETTINGS_PACKAGE = "com.android.settings"; + /** * Extra for use with {@link #ACTION_CHOOSER} * @hide Also used by KeyChainActivity implementation @@ -201,6 +208,20 @@ public final class KeyChain { // Compatible with old android.security.Credentials.PKCS12 public static final String EXTRA_PKCS12 = "PKCS12"; + /** + * Extra used by {@link #createManageCredentialsIntent(AppUriAuthenticationPolicy)} to specify + * the authentication policy of the credential management app. + * + *

The authentication policy declares which alias for a private key and certificate pair + * should be used for authentication, given a list of apps and URIs. + * + *

The extra value should be a {@link AppUriAuthenticationPolicy}. + * + * @hide + */ + public static final String EXTRA_AUTHENTICATION_POLICY = + "android.security.extra.AUTHENTICATION_POLICY"; + /** * Broadcast Action: Indicates the trusted storage has changed. Sent when * one of this happens: @@ -385,6 +406,23 @@ public final class KeyChain { return intent; } + /** + * Returns an {@code Intent} that should be used by an app to request to manage the user's + * credentials. This is limited to unmanaged devices. The authentication policy must be + * provided to be able to make this request successfully. + * + * @param policy The authentication policy determines which alias for a private key and + * certificate pair should be used for authentication. + */ + @NonNull + public static Intent createManageCredentialsIntent(@NonNull AppUriAuthenticationPolicy policy) { + Intent intent = new Intent(ACTION_MANAGE_CREDENTIALS); + intent.setComponent(ComponentName.createRelative(SETTINGS_PACKAGE, + ".security.RequestManageCredentials")); + intent.putExtra(EXTRA_AUTHENTICATION_POLICY, policy); + return intent; + } + /** * Launches an {@code Activity} for the user to select the alias * for a private key and certificate pair for authentication. The -- cgit v1.2.3