Merge "Fix deleting legacy key blobs" am: c24a4b5f44 am: b3c61fac5f
am: 4d8a0decdb
Change-Id: I74ba06e7371696806a8ab1adbd7e65d806e208c4
diff --git a/keystore/java/android/security/Credentials.java b/keystore/java/android/security/Credentials.java
index 7216a22..072fe73 100644
--- a/keystore/java/android/security/Credentials.java
+++ b/keystore/java/android/security/Credentials.java
@@ -282,8 +282,11 @@
* Returns {@code true} if the entry no longer exists.
*/
public static boolean deleteUserKeyTypeForAlias(KeyStore keystore, String alias, int uid) {
- return keystore.delete(Credentials.USER_PRIVATE_KEY + alias, uid) ||
- keystore.delete(Credentials.USER_SECRET_KEY + alias, uid);
+ int ret = keystore.delete2(Credentials.USER_PRIVATE_KEY + alias, uid);
+ if (ret == KeyStore.KEY_NOT_FOUND) {
+ return keystore.delete(Credentials.USER_SECRET_KEY + alias, uid);
+ }
+ return ret == KeyStore.NO_ERROR;
}
/**
diff --git a/keystore/java/android/security/KeyStore.java b/keystore/java/android/security/KeyStore.java
index 6d58d95..6e6ed30 100644
--- a/keystore/java/android/security/KeyStore.java
+++ b/keystore/java/android/security/KeyStore.java
@@ -267,16 +267,20 @@
}
}
- public boolean delete(String key, int uid) {
+ int delete2(String key, int uid) {
try {
- int ret = mBinder.del(key, uid);
- return (ret == NO_ERROR || ret == KEY_NOT_FOUND);
+ return mBinder.del(key, uid);
} catch (RemoteException e) {
Log.w(TAG, "Cannot connect to keystore", e);
- return false;
+ return SYSTEM_ERROR;
}
}
+ public boolean delete(String key, int uid) {
+ int ret = delete2(key, uid);
+ return ret == NO_ERROR || ret == KEY_NOT_FOUND;
+ }
+
@UnsupportedAppUsage
public boolean delete(String key) {
return delete(key, UID_SELF);