Token Manager: use arbitrarily sized tokens.
Token manager tokens need to be larger then 64 bits so that we have
sufficient security. Allowing them to be variably sized gives us
sufficient flexibility to change the underlying implementation without
having to change the interface.
Test: hidl_test
Test: (sanity) YouTube videos work
Test: (sanity) watching movies works
Test: Camera record + replay works
Bug: 33842662
Change-Id: I1acc8b5ab5a06597366adbe5718b63acf88c635a
(cherry picked from commit 15716d525cff9487897e0841fa47092a30293d92)
diff --git a/transport/token/1.0/ITokenManager.hal b/transport/token/1.0/ITokenManager.hal
index b1bb735..23a44bd 100644
--- a/transport/token/1.0/ITokenManager.hal
+++ b/transport/token/1.0/ITokenManager.hal
@@ -26,10 +26,12 @@
* Register an interface. The server must keep a strong reference
* to the interface until the token is destroyed by calling unregister.
*
+ * Must return empty token on failure.
+ *
* @param store Interface which can later be fetched with the returned token.
* @return token Opaque value which may be used as inputs to other functions.
*/
- createToken(interface store) generates (uint64_t token);
+ createToken(interface store) generates (vec<uint8_t>token);
/**
* Destory a token and the strong reference to the associated interface.
@@ -37,7 +39,7 @@
* @param token Token received from createToken
* @return success Whether or not the token was successfully unregistered.
*/
- unregister(uint64_t token) generates (bool success);
+ unregister(vec<uint8_t> token) generates (bool success);
/**
* Fetch an interface from a provided token.
@@ -46,5 +48,5 @@
* @return store Interface registered with createToken and the corresponding
* token or nullptr.
*/
- get(uint64_t token) generates (interface store);
+ get(vec<uint8_t> token) generates (interface store);
};