Fix build: Revert "Use keymaster 1.0 softkeymaster"
This reverts commit 919cb2a5a9dabd61cb02eff7a589f9f1f0f793ee.
diff --git a/keystore/keystore.cpp b/keystore/keystore.cpp
index c10dbdf..9aefd74 100644
--- a/keystore/keystore.cpp
+++ b/keystore/keystore.cpp
@@ -44,7 +44,6 @@
#include <hardware/keymaster0.h>
#include <keymaster/softkeymaster.h>
-#include <keymaster/soft_keymaster_device.h>
#include <UniquePtr.h>
#include <utils/String8.h>
@@ -128,12 +127,20 @@
return rc;
}
-static int fallback_keymaster_device_initialize(keymaster1_device_t** dev) {
- keymaster::SoftKeymasterDevice* softkeymaster =
- new keymaster::SoftKeymasterDevice();
- // SoftKeymasterDevice is designed to make this cast safe.
- *dev = reinterpret_cast<keymaster1_device_t*>(softkeymaster);
+static int fallback_keymaster_device_initialize(keymaster0_device_t** dev) {
+ int rc;
+ rc = openssl_open(reinterpret_cast<hw_module_t*>(&softkeymaster_module),
+ KEYSTORE_KEYMASTER,
+ reinterpret_cast<hw_device_t**>(dev));
+ if (rc) {
+ ALOGE("could not open softkeymaster device (%s)",
+ strerror(-rc));
+ goto out;
+ }
return 0;
+out:
+ *dev = NULL;
+ return rc;
}
static void keymaster_device_release(keymaster0_device_t* dev) {
@@ -957,7 +964,7 @@
class KeyStore {
public:
- KeyStore(Entropy* entropy, keymaster1_device_t* device, keymaster1_device_t* fallback)
+ KeyStore(Entropy* entropy, keymaster0_device_t* device, keymaster0_device_t* fallback)
: mEntropy(entropy)
, mDevice(device)
, mFallbackDevice(fallback)
@@ -979,21 +986,15 @@
mMasterKeys.clear();
}
- /**
- * Depending on the hardware keymaster version is this may return a
- * keymaster0_device_t* cast to a keymaster1_device_t*. All methods from
- * keymaster0 are safe to call, calls to keymaster1_device_t methods should
- * be guarded by a check on the device's version.
- */
- keymaster1_device_t *getDevice() const {
+ keymaster0_device_t *getDevice() const {
return mDevice;
}
- keymaster1_device_t *getFallbackDevice() const {
+ keymaster0_device_t *getFallbackDevice() const {
return mFallbackDevice;
}
- keymaster1_device_t *getDeviceForBlob(const Blob& blob) const {
+ keymaster0_device_t *getDeviceForBlob(const Blob& blob) const {
return blob.isFallback() ? mFallbackDevice: mDevice;
}
@@ -1391,8 +1392,8 @@
static const android::String16 sRSAKeyType;
Entropy* mEntropy;
- keymaster1_device_t* mDevice;
- keymaster1_device_t* mFallbackDevice;
+ keymaster0_device_t* mDevice;
+ keymaster0_device_t* mFallbackDevice;
android::Vector<UserState*> mMasterKeys;
@@ -1871,8 +1872,8 @@
int rc;
bool isFallback = false;
- const keymaster1_device_t* device = mKeyStore->getDevice();
- const keymaster1_device_t* fallback = mKeyStore->getFallbackDevice();
+ const keymaster0_device_t* device = mKeyStore->getDevice();
+ const keymaster0_device_t* fallback = mKeyStore->getFallbackDevice();
if (device == NULL) {
return ::SYSTEM_ERROR;
}
@@ -2047,7 +2048,7 @@
return responseCode;
}
- const keymaster1_device_t* device = mKeyStore->getDeviceForBlob(keyBlob);
+ const keymaster0_device_t* device = mKeyStore->getDeviceForBlob(keyBlob);
if (device == NULL) {
ALOGE("no keymaster device; cannot sign");
return ::SYSTEM_ERROR;
@@ -2096,7 +2097,7 @@
return responseCode;
}
- const keymaster1_device_t* device = mKeyStore->getDeviceForBlob(keyBlob);
+ const keymaster0_device_t* device = mKeyStore->getDeviceForBlob(keyBlob);
if (device == NULL) {
return ::SYSTEM_ERROR;
}
@@ -2148,7 +2149,7 @@
return responseCode;
}
- const keymaster1_device_t* device = mKeyStore->getDeviceForBlob(keyBlob);
+ const keymaster0_device_t* device = mKeyStore->getDeviceForBlob(keyBlob);
if (device == NULL) {
return ::SYSTEM_ERROR;
}
@@ -2349,7 +2350,7 @@
return ::PERMISSION_DENIED;
}
- const keymaster1_device_t* device = mKeyStore->getDevice();
+ const keymaster0_device_t* device = mKeyStore->getDevice();
if (device == NULL) {
ALOGW("can't get keymaster device");
return ::SYSTEM_ERROR;
@@ -2497,7 +2498,7 @@
return false;
}
- bool isKeyTypeSupported(const keymaster1_device_t* device, keymaster_keypair_t keyType) {
+ bool isKeyTypeSupported(const keymaster0_device_t* device, keymaster_keypair_t keyType) {
const int32_t device_api = device->common.module->module_api_version;
if (device_api == KEYMASTER_MODULE_API_VERSION_0_2) {
switch (keyType) {
@@ -2550,7 +2551,7 @@
return 1;
}
- keymaster1_device_t* fallback;
+ keymaster0_device_t* fallback;
if (fallback_keymaster_device_initialize(&fallback)) {
ALOGE("software keymaster could not be initialized; exiting");
return 1;
@@ -2569,7 +2570,7 @@
ALOGI("SELinux: Keystore SELinux is disabled.\n");
}
- KeyStore keyStore(&entropy, reinterpret_cast<keymaster1_device_t*>(dev), fallback);
+ KeyStore keyStore(&entropy, dev, fallback);
keyStore.initialize();
android::sp<android::IServiceManager> sm = android::defaultServiceManager();
android::sp<android::KeyStoreProxy> proxy = new android::KeyStoreProxy(&keyStore);