diff options
author | Kenny Root <kroot@google.com> | 2013-09-04 22:17:56 -0700 |
---|---|---|
committer | Kenny Root <kroot@google.com> | 2013-09-04 22:17:56 -0700 |
commit | c124b23f94a0a88e872253720c0e27594a9a9938 (patch) | |
tree | a0daabf6a914f655a7fd7525ab377a7c266c88e6 | |
parent | 2541a0a8f7a2c86658d435efb49843a88b4d97e0 (diff) | |
download | libhardware-c124b23f94a0a88e872253720c0e27594a9a9938.tar.gz |
keymaster: use new version fields in hw_module
The original version of this HAL used a field in keymaster_module to
represent the module's version number, but a later revision of the HAL
interface added a distinguisher between HAL module and device versions.
This is needed to support upgrade code in keystore.
Bug: 10600582
Change-Id: Ied34cf382e2b7725e648faada00df2dee993e6c5
-rw-r--r-- | include/hardware/keymaster.h | 18 | ||||
-rw-r--r-- | tests/keymaster/keymaster_test.cpp | 2 |
2 files changed, 11 insertions, 9 deletions
diff --git a/include/hardware/keymaster.h b/include/hardware/keymaster.h index 968beb96..67521461 100644 --- a/include/hardware/keymaster.h +++ b/include/hardware/keymaster.h @@ -33,11 +33,13 @@ __BEGIN_DECLS #define KEYSTORE_KEYMASTER "keymaster" /** - * The API level of this version of the header. The allows the implementing - * module to recognize which API level of the client it is dealing with in - * the case of pre-compiled binary clients. + * Settings for "module_api_version" and "hal_api_version" + * fields in the keymaster_module initialization. */ -#define KEYMASTER_API_VERSION 2 +#define KEYMASTER_HEADER_VERSION 2 + +#define KEYMASTER_MODULE_API_VERSION_0_2 HARDWARE_MODULE_API_VERSION(0, 2) +#define KEYMASTER_DEVICE_API_VERSION_0_2 HARDWARE_DEVICE_API_VERSION_2(0, 2, KEYMASTER_HEADER_VERSION) /** * Flags for keymaster_device::flags @@ -139,6 +141,10 @@ typedef struct { struct keymaster_device { struct hw_device_t common; + /** + * THIS IS DEPRECATED. Use the new "module_api_version" and "hal_api_version" + * fields in the keymaster_module initialization instead. + */ uint32_t client_version; /** @@ -238,10 +244,6 @@ static inline int keymaster_open(const struct hw_module_t* module, int rc = module->methods->open(module, KEYSTORE_KEYMASTER, (struct hw_device_t**) device); - if (!rc) { - (*device)->client_version = KEYMASTER_API_VERSION; - } - return rc; } diff --git a/tests/keymaster/keymaster_test.cpp b/tests/keymaster/keymaster_test.cpp index b3d3f359..ad89012e 100644 --- a/tests/keymaster/keymaster_test.cpp +++ b/tests/keymaster/keymaster_test.cpp @@ -343,7 +343,7 @@ public: ASSERT_EQ(0, keymaster_open(mod, &sDevice)) << "Should be able to open the keymaster device"; - ASSERT_EQ(2U, sDevice->client_version) + ASSERT_EQ(KEYMASTER_MODULE_API_VERSION_0_2, mod->module_api_version) << "Keymaster should implement API version 2"; ASSERT_TRUE(sDevice->generate_keypair != NULL) |