From 2bdef6aef9050cc3d9938cc8cd63e902e3881a3d Mon Sep 17 00:00:00 2001 From: Anthony Stange Date: Wed, 10 Feb 2021 15:11:38 +0000 Subject: [PATCH] Tweak ContextHub HAL 1.2 based on feedback To assist in making permissions attribution more robust at the ContextHub service level, tweak the V1.2 interface with the following changes: - Return the full list of supported permissions that all hubs support for attribution. This assists in limiting the number of permissions strings sent between the HAL and service to only those the HAL actually attempts to use. - Add new parameter to handleClientMsg_1_2 that allows nanoapps to denote the list of attributable permissions relating to the contents of the message being sent. This is strictly a subset of the permissions the nanoapp holds and allows a message to be sent without attributing the full nanoapp permission set to the host client when the message may not have been generated from data covered by the permissions. Bug: 166846988 Test: compile Change-Id: I2dc8e1ab4fce2a9ebcc393d07fdffe23dfceb4c2 --- contexthub/1.2/IContexthub.hal | 12 ++++++++++++ contexthub/1.2/IContexthubCallback.hal | 14 +++++++++++--- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/contexthub/1.2/IContexthub.hal b/contexthub/1.2/IContexthub.hal index 3488b7446c..4bb9361bc1 100644 --- a/contexthub/1.2/IContexthub.hal +++ b/contexthub/1.2/IContexthub.hal @@ -16,12 +16,24 @@ package android.hardware.contexthub@1.2; +import @1.0::ContextHub; import @1.0::Result; import @1.1::IContexthub; import @1.1::SettingValue; import IContexthubCallback; interface IContexthub extends @1.1::IContexthub { + /** + * Enumerate all available context hubs on the system. + * + * @return hubs list of hubs on this system. + * @return supportedPermissions list of Android permissions all hubs + * support for nanoapps to enforce host + * endpoints are granted in order to + * communicate with them. + */ + getHubs_1_2() generates (vec hubs, vec supportedPermissions); + /** * Register a callback for the HAL implementation to send asynchronous * messages to the service from a context hub. There can be a maximum of diff --git a/contexthub/1.2/IContexthubCallback.hal b/contexthub/1.2/IContexthubCallback.hal index 0236160305..1a405128b7 100644 --- a/contexthub/1.2/IContexthubCallback.hal +++ b/contexthub/1.2/IContexthubCallback.hal @@ -24,10 +24,18 @@ interface IContexthubCallback extends @1.0::IContexthubCallback { * implementation to allow the HAL to send asynchronous messages back * to the service and registered clients of the ContextHub service. * - * @param msg message that should be delivered to host app clients - * + * @param msg message that should be delivered to host app + * clients + * @param msgContentPerms list of Android permissions that cover the + * contents of the message being sent from the app. + * This is different from the permissions stored + * inside of ContextHubMsg in that these must be a + * subset of those permissions and are meant to + * assist in properly attributing the message + * contents when delivering to a ContextHub service + * client. */ - handleClientMsg_1_2(ContextHubMsg msg); + handleClientMsg_1_2(ContextHubMsg msg, vec msgContentPerms); /** * This callback is passed by the Contexthub service to the HAL