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)) {