Add KeyChain.KEY_ALIAS_SELECTION_DENIED constant.

Add KEY_ALIAS_SELECTION_DENIED contant to flag that no private key alias has
been chosen in onChoosePrivateKeyAlias, but no KeyChainActivity selection dialog
should be presented to the user.

Bug: 136649900
Test: run cts --test MixedManagedProfileOwnerTest#testDelegationCertSelection
Change-Id: I9aeea7be0c2a6172ca054f91d49183c843ecfa6e
This commit is contained in:
Polina Bondarenko
2019-09-20 14:29:15 +02:00
parent 644c2bb97f
commit a75bf0ca59
4 changed files with 19 additions and 0 deletions

View File

@@ -40789,6 +40789,7 @@ package android.security {
field public static final String EXTRA_KEY_ALIAS = "android.security.extra.KEY_ALIAS";
field public static final String EXTRA_NAME = "name";
field public static final String EXTRA_PKCS12 = "PKCS12";
field public static final String KEY_ALIAS_SELECTION_DENIED = "alias-selection-denied-ef829e15-210a-409d-96c9-ee684fc41972";
}
public interface KeyChainAliasCallback {

View File

@@ -63,6 +63,10 @@ public class DelegatedAdminReceiver extends BroadcastReceiver {
* Allows this receiver to select the alias for a private key and certificate pair for
* authentication. If this method returns null, the default {@link android.app.Activity} will
* be shown that lets the user pick a private key and certificate pair.
* If this method returns {@link KeyChain#KEY_ALIAS_SELECTION_DENIED},
* the default {@link android.app.Activity} will not be shown and the user will not be allowed
* to pick anything. And the app, that called {@link KeyChain#choosePrivateKeyAlias}, will
* receive {@code null} back.
*
* <p> This callback is only applicable if the delegated app has
* {@link DevicePolicyManager#DELEGATION_CERT_SELECTION} capability. Additionally, it must

View File

@@ -791,6 +791,10 @@ public class DeviceAdminReceiver extends BroadcastReceiver {
* Allows this receiver to select the alias for a private key and certificate pair for
* authentication. If this method returns null, the default {@link android.app.Activity} will be
* shown that lets the user pick a private key and certificate pair.
* If this method returns {@link KeyChain#KEY_ALIAS_SELECTION_DENIED},
* the default {@link android.app.Activity} will not be shown and the user will not be allowed
* to pick anything. And the app, that called {@link KeyChain#choosePrivateKeyAlias}, will
* receive {@code null} back.
*
* @param context The running context as per {@link #onReceive}.
* @param intent The received intent as per {@link #onReceive}.

View File

@@ -342,6 +342,16 @@ public final class KeyChain {
*/
public static final int KEY_ATTESTATION_FAILURE = 4;
/**
* Used by DPC or delegated app in
* {@link android.app.admin.DeviceAdminReceiver#onChoosePrivateKeyAlias} or
* {@link android.app.admin.DelegatedAdminReceiver#onChoosePrivateKeyAlias} to identify that
* the requesting app is not granted access to any key, and nor will the user be able to grant
* access manually.
*/
public static final String KEY_ALIAS_SELECTION_DENIED =
"alias-selection-denied-ef829e15-210a-409d-96c9-ee684fc41972";
/**
* Returns an {@code Intent} that can be used for credential
* installation. The intent may be used without any extras, in