Loading keymaster/4.0/IKeymasterDevice.hal +2 −2 Original line number Diff line number Diff line Loading @@ -54,7 +54,7 @@ interface IKeymasterDevice { * device with a StrongBox Keymaster has two Keymasters instances, because there must be a TEE * Keymaster as well. The HMAC key used to MAC and verify authentication tokens must be shared * between TEE and StrongBox so they can each validate tokens produced by the other. This * method is the second and final step in the process for for agreeing on a shared key. It is * method is the second and final step in the process for agreeing on a shared key. It is * called by Keystore during startup if and only if Keystore loads multiple Keymaster HALs. * Keystore calls it on each of the HAL instances, and sends to it all of the * HmacSharingParameters returned by all HALs. Loading Loading @@ -94,7 +94,7 @@ interface IKeymasterDevice { * Any method of securely establishing K that ensures that an attacker cannot obtain or * derive its value is acceptable. What follows is a recommended approach, to be executed * during each factory reset. It relies on use of the factory-installed attestation keys to * mitigate man-in-the-middle attacks. This protocol requires that one of the instancess * mitigate man-in-the-middle attacks. This protocol requires that one of the instances * have secure persistent storage. This model was chosen because StrongBox has secure * persistent storage (by definition), but the TEE may not. The instance without storage is * assumed to be able to derive a unique hardware-bound key (HBK) which is used only for Loading radio/1.2/Android.bp +3 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ hidl_interface { "android.hidl.base@1.0", ], types: [ "CardStatus", "CellIdentityCdma", "CellIdentityGsm", "CellIdentityLte", Loading @@ -35,6 +36,8 @@ hidl_interface { "NetworkScanResult", "RadioConst", "ScanIntervalRange", "SimSlotStatus", "SlotState", ], gen_java: true, } Loading radio/1.2/IRadio.hal +42 −0 Original line number Diff line number Diff line Loading @@ -37,4 +37,46 @@ interface IRadio extends @1.1::IRadio { * Response function is IRadioResponse.startNetworkScanResponse() */ oneway startNetworkScan_1_2(int32_t serial, NetworkScanRequest request); /** * Get SIM Slot status. * * Request provides the slot status of all active and inactive SIM slots and whether card is * present in the slots or not. * * @param serial Serial number of request. * * Response callback is IRadioResponse.getSimSlotsStatusResponse() */ oneway getSimSlotsStatus(int32_t serial); /** * Set SIM Slot mapping. * Maps the logical slots to the physical slots. Logical slot is the slot that is seen by modem. * Physical slot is the actual physical slot. Request maps the physical slot to logical slot. * Logical slots that are already mapped to the requested physical slot are not impacted. * * Example no. of logical slots 1 and physical slots 2: * The only logical slot (index 0) can be mapped to first physical slot (value 0) or second * physical slot(value 1), while the other physical slot remains unmapped and inactive. * slotMap[0] = 1 or slotMap[0] = 0 * * Example no. of logical slots 2 and physical slots 2: * First logical slot (index 0) can be mapped to physical slot 1 or 2 and other logical slot * can be mapped to other physical slot. Each logical slot must be mapped to a physical slot. * slotMap[0] = 0 and slotMap[1] = 1 or slotMap[0] = 1 and slotMap[1] = 0 * * @param serial Serial number of request * @param slotMap Logical to physical slot mapping, size == no. of radio instances. Index is * mapping to logical slot and value to physical slot, need to provide all the slots * mapping when sending request in case of multi slot device. * EX: uint32_t slotMap[logical slot] = physical slot * index 0 is the first logical_slot number of logical slots is equal to number of Radio * instances and number of physical slots is equal to size of slotStatus in * getSimSlotsStatusResponse * * Response callback is IRadioResponse.setSimSlotsMappingResponse() */ oneway setSimSlotsMapping(int32_t serial, vec<uint32_t> slotMap); }; radio/1.2/IRadioIndication.hal +10 −1 Original line number Diff line number Diff line Loading @@ -28,4 +28,13 @@ interface IRadioIndication extends @1.1::IRadioIndication { * Incremental network scan results */ oneway networkScanResult_1_2(RadioIndicationType type, NetworkScanResult result); /** * Indicates SIM slot status change. * * @param type Type of radio indication * @param slotStatus new slot status info with size equals to the number of physical slots on * the device */ oneway simSlotsStatusChanged(RadioIndicationType type, vec<SimSlotStatus> slotStatus); }; radio/1.2/IRadioResponse.hal +38 −0 Original line number Diff line number Diff line Loading @@ -41,4 +41,42 @@ interface IRadioResponse extends @1.1::IRadioResponse { * RadioError:CANCELLED */ oneway getCellInfoListResponse_1_2(RadioResponseInfo info, vec<CellInfo> cellInfo); /** * @param info Response info struct containing response type, serial no. and error * @param cardStatus ICC card status as defined by CardStatus in types.hal * * Valid errors returned: * RadioError:NONE */ oneway getIccCardStatusResponse_1_2(RadioResponseInfo info, CardStatus cardStatus); /** * @param info Response info struct containing response type, serial no. and error * @param slotStatus Sim slot struct containing all the physical SIM slots info with size * equals to the number of physical slots on the device * * Valid errors returned: * RadioError:NONE * RadioError:RADIO_NOT_AVAILABLE * RadioError:REQUEST_NOT_SUPPORTED * RadioError:NO_MEMORY * RadioError:INTERNAL_ERR * RadioError:MODEM_ERR * RadioError:INVALID_ARGUMENTS */ oneway getSimSlotsStatusResponse(RadioResponseInfo info, vec<SimSlotStatus> slotStatus); /** * @param info Response info struct containing response type, serial no. and error * * Valid errors returned: * RadioError:NONE * RadioError:RADIO_NOT_AVAILABLE * RadioError:REQUEST_NOT_SUPPORTED * RadioError:NO_MEMORY * RadioError:INTERNAL_ERR * RadioError:MODEM_ERR */ oneway setSimSlotsMappingResponse(RadioResponseInfo info); }; Loading
keymaster/4.0/IKeymasterDevice.hal +2 −2 Original line number Diff line number Diff line Loading @@ -54,7 +54,7 @@ interface IKeymasterDevice { * device with a StrongBox Keymaster has two Keymasters instances, because there must be a TEE * Keymaster as well. The HMAC key used to MAC and verify authentication tokens must be shared * between TEE and StrongBox so they can each validate tokens produced by the other. This * method is the second and final step in the process for for agreeing on a shared key. It is * method is the second and final step in the process for agreeing on a shared key. It is * called by Keystore during startup if and only if Keystore loads multiple Keymaster HALs. * Keystore calls it on each of the HAL instances, and sends to it all of the * HmacSharingParameters returned by all HALs. Loading Loading @@ -94,7 +94,7 @@ interface IKeymasterDevice { * Any method of securely establishing K that ensures that an attacker cannot obtain or * derive its value is acceptable. What follows is a recommended approach, to be executed * during each factory reset. It relies on use of the factory-installed attestation keys to * mitigate man-in-the-middle attacks. This protocol requires that one of the instancess * mitigate man-in-the-middle attacks. This protocol requires that one of the instances * have secure persistent storage. This model was chosen because StrongBox has secure * persistent storage (by definition), but the TEE may not. The instance without storage is * assumed to be able to derive a unique hardware-bound key (HBK) which is used only for Loading
radio/1.2/Android.bp +3 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ hidl_interface { "android.hidl.base@1.0", ], types: [ "CardStatus", "CellIdentityCdma", "CellIdentityGsm", "CellIdentityLte", Loading @@ -35,6 +36,8 @@ hidl_interface { "NetworkScanResult", "RadioConst", "ScanIntervalRange", "SimSlotStatus", "SlotState", ], gen_java: true, } Loading
radio/1.2/IRadio.hal +42 −0 Original line number Diff line number Diff line Loading @@ -37,4 +37,46 @@ interface IRadio extends @1.1::IRadio { * Response function is IRadioResponse.startNetworkScanResponse() */ oneway startNetworkScan_1_2(int32_t serial, NetworkScanRequest request); /** * Get SIM Slot status. * * Request provides the slot status of all active and inactive SIM slots and whether card is * present in the slots or not. * * @param serial Serial number of request. * * Response callback is IRadioResponse.getSimSlotsStatusResponse() */ oneway getSimSlotsStatus(int32_t serial); /** * Set SIM Slot mapping. * Maps the logical slots to the physical slots. Logical slot is the slot that is seen by modem. * Physical slot is the actual physical slot. Request maps the physical slot to logical slot. * Logical slots that are already mapped to the requested physical slot are not impacted. * * Example no. of logical slots 1 and physical slots 2: * The only logical slot (index 0) can be mapped to first physical slot (value 0) or second * physical slot(value 1), while the other physical slot remains unmapped and inactive. * slotMap[0] = 1 or slotMap[0] = 0 * * Example no. of logical slots 2 and physical slots 2: * First logical slot (index 0) can be mapped to physical slot 1 or 2 and other logical slot * can be mapped to other physical slot. Each logical slot must be mapped to a physical slot. * slotMap[0] = 0 and slotMap[1] = 1 or slotMap[0] = 1 and slotMap[1] = 0 * * @param serial Serial number of request * @param slotMap Logical to physical slot mapping, size == no. of radio instances. Index is * mapping to logical slot and value to physical slot, need to provide all the slots * mapping when sending request in case of multi slot device. * EX: uint32_t slotMap[logical slot] = physical slot * index 0 is the first logical_slot number of logical slots is equal to number of Radio * instances and number of physical slots is equal to size of slotStatus in * getSimSlotsStatusResponse * * Response callback is IRadioResponse.setSimSlotsMappingResponse() */ oneway setSimSlotsMapping(int32_t serial, vec<uint32_t> slotMap); };
radio/1.2/IRadioIndication.hal +10 −1 Original line number Diff line number Diff line Loading @@ -28,4 +28,13 @@ interface IRadioIndication extends @1.1::IRadioIndication { * Incremental network scan results */ oneway networkScanResult_1_2(RadioIndicationType type, NetworkScanResult result); /** * Indicates SIM slot status change. * * @param type Type of radio indication * @param slotStatus new slot status info with size equals to the number of physical slots on * the device */ oneway simSlotsStatusChanged(RadioIndicationType type, vec<SimSlotStatus> slotStatus); };
radio/1.2/IRadioResponse.hal +38 −0 Original line number Diff line number Diff line Loading @@ -41,4 +41,42 @@ interface IRadioResponse extends @1.1::IRadioResponse { * RadioError:CANCELLED */ oneway getCellInfoListResponse_1_2(RadioResponseInfo info, vec<CellInfo> cellInfo); /** * @param info Response info struct containing response type, serial no. and error * @param cardStatus ICC card status as defined by CardStatus in types.hal * * Valid errors returned: * RadioError:NONE */ oneway getIccCardStatusResponse_1_2(RadioResponseInfo info, CardStatus cardStatus); /** * @param info Response info struct containing response type, serial no. and error * @param slotStatus Sim slot struct containing all the physical SIM slots info with size * equals to the number of physical slots on the device * * Valid errors returned: * RadioError:NONE * RadioError:RADIO_NOT_AVAILABLE * RadioError:REQUEST_NOT_SUPPORTED * RadioError:NO_MEMORY * RadioError:INTERNAL_ERR * RadioError:MODEM_ERR * RadioError:INVALID_ARGUMENTS */ oneway getSimSlotsStatusResponse(RadioResponseInfo info, vec<SimSlotStatus> slotStatus); /** * @param info Response info struct containing response type, serial no. and error * * Valid errors returned: * RadioError:NONE * RadioError:RADIO_NOT_AVAILABLE * RadioError:REQUEST_NOT_SUPPORTED * RadioError:NO_MEMORY * RadioError:INTERNAL_ERR * RadioError:MODEM_ERR */ oneway setSimSlotsMappingResponse(RadioResponseInfo info); };