Streamline Android Keystore delete entry operation.
This ensures that all four entry subtypes are deleted.
Bug: 18088752
Change-Id: Ia020dbede562a123c8c81cc9449ba5ab4aac61dd
diff --git a/keystore/java/android/security/keystore/AndroidKeyStoreSpi.java b/keystore/java/android/security/keystore/AndroidKeyStoreSpi.java
index 701bd67..05ddef6 100644
--- a/keystore/java/android/security/keystore/AndroidKeyStoreSpi.java
+++ b/keystore/java/android/security/keystore/AndroidKeyStoreSpi.java
@@ -674,12 +674,13 @@
@Override
public void engineDeleteEntry(String alias) throws KeyStoreException {
- if (!isKeyEntry(alias) && !isCertificateEntry(alias)) {
+ if (!engineContainsAlias(alias)) {
return;
}
+ // At least one entry corresponding to this alias exists in keystore
if (!Credentials.deleteAllTypesForAlias(mKeyStore, alias)) {
- throw new KeyStoreException("No such entry " + alias);
+ throw new KeyStoreException("Failed to delete entry: " + alias);
}
}
@@ -849,9 +850,7 @@
throw new KeyStoreException("entry == null");
}
- if (engineContainsAlias(alias)) {
- engineDeleteEntry(alias);
- }
+ Credentials.deleteAllTypesForAlias(mKeyStore, alias);
if (entry instanceof KeyStore.TrustedCertificateEntry) {
KeyStore.TrustedCertificateEntry trE = (KeyStore.TrustedCertificateEntry) entry;