diff options
author | Kenny Root <kroot@google.com> | 2012-08-14 14:05:06 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2012-08-14 14:05:06 -0700 |
commit | 65c1af4a3cbdbe11b17f57c7e47dc2848a5851e3 (patch) | |
tree | f54c67f716beb8e4eda51d16595f1ad159899e9c | |
parent | 3fff02b4f6c16df61ae89c4c02008a08dbcf5250 (diff) | |
parent | 593786c9b885a48a2674e3ebb5c3bab265de2e51 (diff) | |
download | system_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.cpp | 20 |
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, |