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

Commit 72ff9029 authored by Rubin Xu's avatar Rubin Xu
Browse files

Add KeyChain.createManageCredentialsIntent

Missed from previous cherry-pick.

Test: make -j docs
Bug: 179180345
Merged-In: I1e57ed9c18a1ada463c55dbf17ce30e31aa7bad2
Change-Id: I1d88e11740a13490613962c944b528e6c2bd0fcb
parent 0aa18af4
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -35978,6 +35978,7 @@ package android.security {
    method public static void choosePrivateKeyAlias(@NonNull android.app.Activity, @NonNull android.security.KeyChainAliasCallback, @Nullable String[], @Nullable java.security.Principal[], @Nullable String, int, @Nullable String);
    method public static void choosePrivateKeyAlias(@NonNull android.app.Activity, @NonNull android.security.KeyChainAliasCallback, @Nullable String[], @Nullable java.security.Principal[], @Nullable android.net.Uri, @Nullable String);
    method @NonNull public static android.content.Intent createInstallIntent();
    method @NonNull public static android.content.Intent createManageCredentialsIntent(@NonNull android.security.AppUriAuthenticationPolicy);
    method @Nullable @WorkerThread public static java.security.cert.X509Certificate[] getCertificateChain(@NonNull android.content.Context, @NonNull String) throws java.lang.InterruptedException, android.security.KeyChainException;
    method @Nullable @WorkerThread public static java.security.PrivateKey getPrivateKey(@NonNull android.content.Context, @NonNull String) throws java.lang.InterruptedException, android.security.KeyChainException;
    method @Deprecated public static boolean isBoundKeyAlgorithm(@NonNull String);
+2 −0
Original line number Diff line number Diff line
@@ -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.
     *
+38 −0
Original line number Diff line number Diff line
@@ -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