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