Merge "keystore: Change superclass of UserPresenceUnavailableException." into pi-dev
diff --git a/api/current.txt b/api/current.txt
index b62953b..ed58ad1 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -38754,7 +38754,7 @@
     ctor public UserNotAuthenticatedException(java.lang.String, java.lang.Throwable);
   }
 
-  public class UserPresenceUnavailableException extends java.security.InvalidAlgorithmParameterException {
+  public class UserPresenceUnavailableException extends java.security.InvalidKeyException {
     ctor public UserPresenceUnavailableException();
     ctor public UserPresenceUnavailableException(java.lang.String);
     ctor public UserPresenceUnavailableException(java.lang.String, java.lang.Throwable);
diff --git a/keystore/java/android/security/keystore/KeyProtection.java b/keystore/java/android/security/keystore/KeyProtection.java
index 4daf30c..41dc201 100644
--- a/keystore/java/android/security/keystore/KeyProtection.java
+++ b/keystore/java/android/security/keystore/KeyProtection.java
@@ -445,6 +445,9 @@
     /**
      * Returns {@code true} if the key is authorized to be used only if a test of user presence has
      * been performed between the {@code Signature.initSign()} and {@code Signature.sign()} calls.
+     * It requires that the KeyStore implementation have a direct way to validate the user presence
+     * for example a KeyStore hardware backed strongbox can use a button press that is observable
+     * in hardware.
      */
     public boolean isUserPresenceRequired() {
         return mUserPresenceRequred;
diff --git a/keystore/java/android/security/keystore/UserPresenceUnavailableException.java b/keystore/java/android/security/keystore/UserPresenceUnavailableException.java
index cf4099e..1b053a5 100644
--- a/keystore/java/android/security/keystore/UserPresenceUnavailableException.java
+++ b/keystore/java/android/security/keystore/UserPresenceUnavailableException.java
@@ -16,13 +16,13 @@
 
 package android.security.keystore;
 
-import java.security.InvalidAlgorithmParameterException;
+import java.security.InvalidKeyException;
 
 /**
  * Indicates the condition that a proof of user-presence was
  * requested but this proof was not presented.
  */
-public class UserPresenceUnavailableException extends InvalidAlgorithmParameterException {
+public class UserPresenceUnavailableException extends InvalidKeyException {
     /**
      * Constructs a {@code UserPresenceUnavailableException} without a detail message or cause.
      */