diff options
author | Jim Blackler <jimblackler@google.com> | 2021-10-11 14:04:30 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2021-10-11 14:04:30 +0000 |
commit | 0531c94771054fc513819cf3bb33fd99f65873b7 (patch) | |
tree | 2c7aeda1240b52af286b47e0816c01f75994f16e /keymaster/3.0/default/KeymasterDevice.cpp | |
parent | 13274fa22de87925b7e56e779bbdb4d32e574dc6 (diff) | |
parent | a08ea2d23f0c268cde49f8531b56bf440ae5960f (diff) |
Merge "Revert "Delete KM1""
Diffstat (limited to 'keymaster/3.0/default/KeymasterDevice.cpp')
-rw-r--r-- | keymaster/3.0/default/KeymasterDevice.cpp | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/keymaster/3.0/default/KeymasterDevice.cpp b/keymaster/3.0/default/KeymasterDevice.cpp index 25f16b57df..8b416c3f9a 100644 --- a/keymaster/3.0/default/KeymasterDevice.cpp +++ b/keymaster/3.0/default/KeymasterDevice.cpp @@ -22,6 +22,7 @@ #include <log/log.h> #include <AndroidKeymaster3Device.h> +#include <hardware/keymaster1.h> #include <hardware/keymaster2.h> #include <hardware/keymaster_defs.h> @@ -31,6 +32,18 @@ namespace keymaster { namespace V3_0 { namespace implementation { +static int get_keymaster1_dev(keymaster1_device_t** dev, const hw_module_t* mod) { + int rc = keymaster1_open(mod, dev); + if (rc) { + ALOGE("Error %d opening keystore keymaster1 device", rc); + if (*dev) { + (*dev)->common.close(&(*dev)->common); + *dev = nullptr; + } + } + return rc; +} + static int get_keymaster2_dev(keymaster2_device_t** dev, const hw_module_t* mod) { int rc = keymaster2_open(mod, dev); if (rc) { @@ -50,8 +63,14 @@ static IKeymasterDevice* createKeymaster3Device() { return ::keymaster::ng::CreateKeymasterDevice(); } - if (mod->module_api_version < KEYMASTER_MODULE_API_VERSION_2_0) { + if (mod->module_api_version < KEYMASTER_MODULE_API_VERSION_1_0) { return nullptr; + } else if (mod->module_api_version == KEYMASTER_MODULE_API_VERSION_1_0) { + keymaster1_device_t* dev = nullptr; + if (get_keymaster1_dev(&dev, mod)) { + return nullptr; + } + return ::keymaster::ng::CreateKeymasterDevice(dev); } else { keymaster2_device_t* dev = nullptr; if (get_keymaster2_dev(&dev, mod)) { |