summaryrefslogtreecommitdiff
path: root/keystore/java
diff options
context:
space:
mode:
author Treehugger Robot <treehugger-gerrit@google.com> 2021-01-20 23:25:35 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2021-01-20 23:25:35 +0000
commit758c0c54bf5115e1a9f3b77c2c07d14bbf75ff53 (patch)
treedeb1015d336b41a7c75d880e083cb090faa0ae2c /keystore/java
parentdf24f2b2d96419c9a1aa0e709ff0583e3dfa8741 (diff)
parent396957acad423f43a1e7641527f5c8cec6a27c7d (diff)
Merge "Keystore 2.0: Integrate onLockScreenEvent." am: 01460b0bd8 am: 2670006095 am: 396957acad
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1546381 MUST ONLY BE SUBMITTED BY AUTOMERGER Change-Id: I801c764ca7c4927ff7ac57e6a9b130e803fa8ebd
Diffstat (limited to 'keystore/java')
-rw-r--r--keystore/java/android/security/Authorization.java29
1 files changed, 29 insertions, 0 deletions
diff --git a/keystore/java/android/security/Authorization.java b/keystore/java/android/security/Authorization.java
index 1fde2b5412ed..fcc518c374e3 100644
--- a/keystore/java/android/security/Authorization.java
+++ b/keystore/java/android/security/Authorization.java
@@ -17,11 +17,13 @@
package android.security;
import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.hardware.security.keymint.HardwareAuthToken;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.ServiceSpecificException;
import android.security.authorization.IKeystoreAuthorization;
+import android.security.authorization.LockScreenEvent;
import android.system.keystore2.ResponseCode;
import android.util.Log;
@@ -75,4 +77,31 @@ public class Authorization {
return addAuthToken(AuthTokenUtils.toHardwareAuthToken(authToken));
}
+ /**
+ * Informs keystore2 about lock screen event.
+ *
+ * @param locked - whether it is a lock (true) or unlock (false) event
+ * @param syntheticPassword - if it is an unlock event with the password, pass the synthetic
+ * password provided by the LockSettingService
+ *
+ * @return 0 if successful or a {@code ResponseCode}.
+ */
+ public int onLockScreenEvent(@NonNull boolean locked, @NonNull int userId,
+ @Nullable byte[] syntheticPassword) {
+ if (!android.security.keystore2.AndroidKeyStoreProvider.isInstalled()) return 0;
+ try {
+ if (locked) {
+ getService().onLockScreenEvent(LockScreenEvent.LOCK, userId, null);
+ } else {
+ getService().onLockScreenEvent(LockScreenEvent.UNLOCK, userId, syntheticPassword);
+ }
+ return 0;
+ } catch (RemoteException e) {
+ Log.w(TAG, "Can not connect to keystore", e);
+ return SYSTEM_ERROR;
+ } catch (ServiceSpecificException e) {
+ return e.errorCode;
+ }
+ }
+
}