| # Remote Provisioning Changelog |
| |
| This document provides an exact description of which changes have occurred in the |
| `IRemotelyProvisionedComponent` HAL interface in each Android release. |
| |
| ## Releases |
| * **Android S (12):** IRemotelyProvisionedComponent v1 |
| * **Android T (13):** IRemotelyProvisionedComponent v2 |
| * **Android U (14):** IRemotelyProvisionedComponent v3 |
| |
| ## IRemotelyProvisionedComponent 1 -> 2 |
| * DeviceInfo |
| * Most entries are no longer optional. |
| * `att_id_state` is now `fused`. `fused` is used to indicate if SecureBoot is enabled. |
| * `version` is now `2`. |
| * `board` has been removed. |
| * `device` has been added. |
| * RpcHardwareInfo |
| * `uniqueId` String added as a field in order to differentiate IRPC instances on device. |
| |
| ## IRemotelyProvisionedComponent 2 -> 3 |
| * The RKP HAL now builds separately from KeyMint. |
| * The HAL remains under the `android.hardware.security.keymint` package for |
| compatibility with previous releases. ABI compatibility requires this. |
| * Dependencies on the RKP HAL must add a dependency on |
| `"android.hardware.security.rkp"` generated code (instead of |
| `"android.hardward.security.keymint"`). |
| * ProtectedData has been removed. |
| * DeviceInfo |
| * `version` has moved to a top-level field within the CSR generated by the HAL. |
| * IRemotelyProvisionedComponent |
| * The need for an EEK has been removed. There is no longer an encrypted portion of the CSR. |
| * Keys for new CSR format must be generated with test mode set to false, effectively removing test |
| mode in the new CSR flow. |
| * The schema for the CSR itself has been significantly simplified, please see |
| IRemotelyProvisionedComponent.aidl for more details. Notably, |
| * the chain of signing, MACing, and encryption operations has been replaced with a single |
| COSE_Sign1 object. |
| * CertificateType has been added to identify the type of certificate being requested. |
| * The structure has been composed to enable a clear split between what is required to validate a |
| payload and the implementation-defined payload itself. This is done by creating a typed |
| `AuthenticatedRequest<T>` object representing the top level data required to authenticate |
| the data provided in the payload, `T`. |
| * The new CSR format supports P-384 signing keys and SHA-384 hashes in the DICE chain. |
| * The component version can now be either an int or a string. |
| * RpcHardwareInfo |
| * `supportedNumKeysInCsr` added to report the maximum number of keys supported in a CSR. |
| * `supportedEekCurve` is no longer used, due to the removal of the EEK from the scheme. |