summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenny Root <kroot@google.com>2012-08-14 14:05:06 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2012-08-14 14:05:06 -0700
commit65c1af4a3cbdbe11b17f57c7e47dc2848a5851e3 (patch)
treef54c67f716beb8e4eda51d16595f1ad159899e9c
parent3fff02b4f6c16df61ae89c4c02008a08dbcf5250 (diff)
parent593786c9b885a48a2674e3ebb5c3bab265de2e51 (diff)
downloadsystem_security-65c1af4a3cbdbe11b17f57c7e47dc2848a5851e3.zip
system_security-65c1af4a3cbdbe11b17f57c7e47dc2848a5851e3.tar.gz
system_security-65c1af4a3cbdbe11b17f57c7e47dc2848a5851e3.tar.bz2
am 593786c9: Merge "keymaster HAL users don\'t need delete_keypair"
* commit '593786c9b885a48a2674e3ebb5c3bab265de2e51': keymaster HAL users don't need delete_keypair
-rw-r--r--keystore/keystore.cpp20
1 files changed, 13 insertions, 7 deletions
diff --git a/keystore/keystore.cpp b/keystore/keystore.cpp
index 6f506dd..d90b999 100644
--- a/keystore/keystore.cpp
+++ b/keystore/keystore.cpp
@@ -1156,19 +1156,25 @@ static ResponseCode del_key(KeyStore* keyStore, int, uid_t uid, Value* keyName,
return responseCode;
}
+ ResponseCode rc = NO_ERROR;
+
const keymaster_device_t* device = keyStore->getDevice();
if (device == NULL) {
- return SYSTEM_ERROR;
+ rc = SYSTEM_ERROR;
+ } else {
+ // A device doesn't have to implement delete_keypair.
+ if (device->delete_keypair != NULL) {
+ if (device->delete_keypair(device, keyBlob.getValue(), keyBlob.getLength())) {
+ rc = SYSTEM_ERROR;
+ }
+ }
}
- if (device->delete_keypair == NULL) {
- ALOGE("device has no delete_keypair implementation!");
- return SYSTEM_ERROR;
+ if (rc != NO_ERROR) {
+ return rc;
}
- int rc = device->delete_keypair(device, keyBlob.getValue(), keyBlob.getLength());
-
- return rc ? SYSTEM_ERROR : NO_ERROR;
+ return (unlink(filename) && errno != ENOENT) ? SYSTEM_ERROR : NO_ERROR;
}
static ResponseCode sign(KeyStore* keyStore, int sock, uid_t uid, Value* keyName, Value* data,