Author: Feras Aldahlawi (faldahlawi)
Other contributors: None
Created: March 30, 2021
Redfish API does not have a resource type that is similar to Google's Root of Trust (RoT) chips. Google needs APIs that are not in the Redfish standard yet. There are working groups dedicated to bring RoT chips support to the Redfish standard already. Hence adding this support under a Google namespace would avoid conflict with those working groups. This document provides the schema of what Google needs for its new service root.
At Google, we rely on communicating with RoT chips using a variety of transport mechanisms. Google wants to extend the support to include REST based APIs. The future of RoT devices at Google will adopt the SPDM protocol. However, this design doc is targeting a group of RoT devices that will never be capable of supporting standards based interface.
A new service root under google/v1
. This service root will contain a collection of RootOfTrust
entities that have the following properties and Actions:
This new API is designed to forward calls to RoT devices and avoid and inspections of data. An example call would be:
{ "#RootOfTrust.Mailbox": { "target": "/redfish/v1/RootsOfTrust/0/Actions.Mailbox", "@Redfish.ActionInfo": "/redfish/v1/RootsOfTrust/0/Actions.Mailbox" } "RawRequest": "some_bytes_to_be_parsed_by_receiver" }
This new service root is very similar to /ibm/v1
. This would require a new dbus interface to service this API:
description: > Forward bytes to Google RoT devices. methods: - name: Mailbox description: > A method to forward bytes to RoT device. parameters: - name: rawRequest type: array[byte] description: > Value to be updated for the keyword. errors: - xyz.openbmc_project.Common.Error.InvalidArgument - xyz.openbmc_project.Common.Error.InternalFailure
Considered adding the new APIs as an OEM extension to the TPM resource. However, it was an unnatural extension. Here are the reason why it is somewhat unnatural to use TPM for Google's RoT:
Though we can put everything under TPM's OEM (e.g. version numbers and other functionality), most of the fields will be unusable for Google's RoT.
New daemon, new Rest API.
Testing will be done in Google internally. This feature should not impact CI testing. We will try golden paths and bad paths. We will also implement fuzz tests as well.