Add KeyChain.createManageCredentialsIntent

Missed from previous cherry-pick.

Test: make -j docs
Bug: 179180345
Merged-In: I1e57ed9c18a1ada463c55dbf17ce30e31aa7bad2
Change-Id: I1d88e11740a13490613962c944b528e6c2bd0fcb
This commit is contained in:
Rubin Xu
2021-02-14 18:13:29 +00:00
parent 0aa18af47d
commit 72ff9029c6
3 changed files with 41 additions and 0 deletions

View File

@@ -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.
*
* <p>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.
*
* <p>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