# Print output for @column tags ?>
public
class
ConfirmationPrompt
extends Object
| java.lang.Object | |
| ↳ | android.security.ConfirmationPrompt |
Class used for displaying confirmation prompts.
Confirmation prompts are prompts shown to the user to confirm a given text and are implemented in a way that a positive response indicates with high confidence that the user has seen the given text, even if the Android framework (including the kernel) was compromised. Implementing confirmation prompts with these guarantees requires dedicated hardware-support and may not always be available.
Confirmation prompts are typically used with an external entitity - the Relying Party - in the following way. The setup steps are as follows:
CONFIRMATION tag set. Device attestation,
e.g. getCertificateChain(), is used to
generate a certificate chain that includes the public key (Kpub in the following)
of the newly generated key.
Kpub and the certificate chain resulting from device
attestation to the Relying Party.
Kpub, and that the attestation certificate
asserts that Kpub has the
CONFIRMATION tag set.
Additionally the relying party stores Kpub and associates it with the device
it was received from.
The Relying Party is typically an external device (for example connected via Bluetooth) or application server.
Before executing a transaction which requires a high assurance of user content, the application does the following:
extraData (via the Builder helper class) to the
presentPrompt() method. The Relying Party stores the nonce locally
since it'll use it in a later step.
ConfirmationCallback#onConfirmed callback as the
dataThatWasConfirmed parameter. This blob contains the text that was shown to the
user, the extraData parameter, and possibly other data.
Kpub and then
extracts promptText matches what is expected and extraData matches the
previously created nonce. If all checks passes, the transaction is executed.
A common way of implementing the "promptText is what is expected" check in the
last bullet, is to have the Relying Party generate promptText and store it
along the nonce in the extraData blob.
Nested classes | |
|---|---|
class |
ConfirmationPrompt.Builder
A builder that collects arguments, to be shown on the system-provided confirmation prompt. |
Public methods | |
|---|---|
void
|
cancelPrompt()
Cancels a prompt currently being displayed. |
static
boolean
|
isSupported(Context context)
Checks if the device supports confirmation prompts. |
void
|
presentPrompt(Executor executor, ConfirmationCallback callback)
Requests a confirmation prompt to be presented to the user. |
Inherited methods | |
|---|---|
public void cancelPrompt ()
Cancels a prompt currently being displayed.
On success, the
ConfirmationCallback#onCanceled method on
the supplied callback object will be called asynchronously.
| Throws | |
|---|---|
IllegalStateException |
if no prompt is currently being presented. |
public static boolean isSupported (Context context)
Checks if the device supports confirmation prompts.
| Parameters | |
|---|---|
context |
Context: the application context. |
| Returns | |
|---|---|
boolean |
true if confirmation prompts are supported by the device. |
public void presentPrompt (Executor executor, ConfirmationCallback callback)
Requests a confirmation prompt to be presented to the user.
When the prompt is no longer being presented, one of the methods in
ConfirmationCallback is called on the supplied callback object.
Confirmation prompts may not be available when accessibility services are running so this
may fail with a ConfirmationNotAvailableException exception even if
isSupported(Context) returns true.
| Parameters | |
|---|---|
executor |
Executor: the executor identifying the thread that will receive the callback.
This value cannot be null. |
callback |
ConfirmationCallback: the callback to use when the prompt is done showing.
This value cannot be null. |
| Throws | |
|---|---|
IllegalArgumentException |
if the prompt text is too long or malfomed. |
ConfirmationAlreadyPresentingException |
if another prompt is being presented. |
ConfirmationNotAvailableException |
if confirmation prompts are not supported. |