diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2018-09-11 22:40:31 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2018-09-11 22:40:31 +0000 |
commit | d361839b30aedf1f8a5fd45b9740edb2bcf7a6a9 (patch) | |
tree | 8a4ca0e5116f7bb33ef6d989a2a3275b0ebe1cd5 /trusty | |
parent | 84d462d8850067bd159495638ea522fa7c478e20 (diff) | |
parent | 764d62e204380d1d9a218b31f5f9b48ae64eaf22 (diff) | |
download | system_core-d361839b30aedf1f8a5fd45b9740edb2bcf7a6a9.tar.gz system_core-d361839b30aedf1f8a5fd45b9740edb2bcf7a6a9.tar.bz2 system_core-d361839b30aedf1f8a5fd45b9740edb2bcf7a6a9.zip |
Merge "add the impementation of delete_key, delete_all_key for Legacy HAL"
Diffstat (limited to 'trusty')
-rw-r--r-- | trusty/keymaster/include/trusty_keymaster/legacy/trusty_keymaster_device.h | 2 | ||||
-rw-r--r-- | trusty/keymaster/legacy/trusty_keymaster_device.cpp | 43 |
2 files changed, 43 insertions, 2 deletions
diff --git a/trusty/keymaster/include/trusty_keymaster/legacy/trusty_keymaster_device.h b/trusty/keymaster/include/trusty_keymaster/legacy/trusty_keymaster_device.h index 5a80795e3..a483c0db6 100644 --- a/trusty/keymaster/include/trusty_keymaster/legacy/trusty_keymaster_device.h +++ b/trusty/keymaster/include/trusty_keymaster/legacy/trusty_keymaster_device.h @@ -80,6 +80,8 @@ class TrustyKeymasterDevice { const keymaster_blob_t* input, const keymaster_blob_t* signature, keymaster_key_param_set_t* out_params, keymaster_blob_t* output); keymaster_error_t abort(keymaster_operation_handle_t operation_handle); + keymaster_error_t delete_key(const keymaster_key_blob_t* key); + keymaster_error_t delete_all_keys(); private: keymaster_error_t Send(uint32_t command, const Serializable& request, diff --git a/trusty/keymaster/legacy/trusty_keymaster_device.cpp b/trusty/keymaster/legacy/trusty_keymaster_device.cpp index afdf43bb0..88c3e7bbd 100644 --- a/trusty/keymaster/legacy/trusty_keymaster_device.cpp +++ b/trusty/keymaster/legacy/trusty_keymaster_device.cpp @@ -70,8 +70,8 @@ TrustyKeymasterDevice::TrustyKeymasterDevice(const hw_module_t* module) { device_.export_key = export_key; device_.attest_key = attest_key; device_.upgrade_key = upgrade_key; - device_.delete_key = nullptr; - device_.delete_all_keys = nullptr; + device_.delete_key = delete_key; + device_.delete_all_keys = delete_all_keys; device_.begin = begin; device_.update = update; device_.finish = finish; @@ -606,6 +606,34 @@ keymaster_error_t TrustyKeymasterDevice::abort(keymaster_operation_handle_t oper return trusty_keymaster_send(KM_ABORT_OPERATION, request, &response); } +keymaster_error_t TrustyKeymasterDevice::delete_key(const keymaster_key_blob_t* key) { + ALOGD("Device received delete_key"); + + if (error_ != KM_ERROR_OK) { + return error_; + } + + if (!key || !key->key_material) + return KM_ERROR_UNEXPECTED_NULL_POINTER; + + DeleteKeyRequest request(message_version_); + request.SetKeyMaterial(*key); + DeleteKeyResponse response(message_version_); + return trusty_keymaster_send(KM_DELETE_KEY, request, &response); +} + +keymaster_error_t TrustyKeymasterDevice::delete_all_keys() { + ALOGD("Device received delete_all_key"); + + if (error_ != KM_ERROR_OK) { + return error_; + } + + DeleteAllKeysRequest request(message_version_); + DeleteAllKeysResponse response(message_version_); + return trusty_keymaster_send(KM_DELETE_ALL_KEYS, request, &response); +} + hw_device_t* TrustyKeymasterDevice::hw_device() { return &device_.common; } @@ -719,4 +747,15 @@ keymaster_error_t TrustyKeymasterDevice::abort(const keymaster2_device_t* dev, return convert_device(dev)->abort(operation_handle); } +/* static */ +keymaster_error_t TrustyKeymasterDevice::delete_key(const keymaster2_device_t* dev, + const keymaster_key_blob_t* key) { + return convert_device(dev)->delete_key(key); +} + +/* static */ +keymaster_error_t TrustyKeymasterDevice::delete_all_keys(const keymaster2_device_t* dev) { + return convert_device(dev)->delete_all_keys(); +} + } // namespace keymaster |