Revert "Delete KM1"
Revert "Delete KM1"
Revert "Delete KM1"
Revert "Delete KM1"
Revert submission 1844016-delkm1
Reason for revert: b/202675261
Reverted Changes:
Iba996962b:Delete KM1
Ia4c5359cd:Delete KM1
Iee6ec9816:Delete KM1
I6058e4d86:Delete KM1
I8abb9c570:Delete KM1
I9c4dc5c9e:Delete KM1
Change-Id: I2a2d4b737a90f8ce31cd14b68f64564d8d245ab3
diff --git a/keymaster/3.0/default/KeymasterDevice.cpp b/keymaster/3.0/default/KeymasterDevice.cpp
index 25f16b5..8b416c3 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 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 @@
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)) {