diff options
-rw-r--r-- | keystore/java/android/security/Credentials.java | 7 | ||||
-rw-r--r-- | keystore/java/android/security/KeyStore.java | 12 |
2 files changed, 13 insertions, 6 deletions
diff --git a/keystore/java/android/security/Credentials.java b/keystore/java/android/security/Credentials.java index 7216a2201c88..072fe7321826 100644 --- a/keystore/java/android/security/Credentials.java +++ b/keystore/java/android/security/Credentials.java @@ -282,8 +282,11 @@ public class Credentials { * 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 e1c1138fe52d..6ac52d109032 100644 --- a/keystore/java/android/security/KeyStore.java +++ b/keystore/java/android/security/KeyStore.java @@ -255,16 +255,20 @@ public class KeyStore { } } - 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); |