Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d361839b authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "add the impementation of delete_key, delete_all_key for Legacy HAL"

parents 84d462d8 764d62e2
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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,
+41 −2
Original line number Diff line number Diff line
@@ -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