diff options
author | Steve Kondik <shade@chemlab.org> | 2014-02-23 02:28:01 +0100 |
---|---|---|
committer | Steve Kondik <shade@chemlab.org> | 2014-02-23 02:28:01 +0100 |
commit | 87fb5927db55ba17dc87effac474855f3ee3b009 (patch) | |
tree | 2e094011b4d11b659f0ba4824a3f132065b90220 | |
parent | b2310a33f801b9e676467c101f11903ad4eaacbe (diff) | |
parent | 0be59acb05a25a0822d55a1bc8d1e4a652144d14 (diff) | |
download | android_hardware_qcom_keymaster-87fb5927db55ba17dc87effac474855f3ee3b009.tar.gz android_hardware_qcom_keymaster-87fb5927db55ba17dc87effac474855f3ee3b009.tar.bz2 android_hardware_qcom_keymaster-87fb5927db55ba17dc87effac474855f3ee3b009.zip |
Merge branch 'kk' of git://codeaurora.org/platform/hardware/qcom/keymaster into cm-11.0
Change-Id: I672bfaf0c681dacc677fbcc34279c4342e246ab4
-rw-r--r-- | Android.mk | 28 | ||||
-rw-r--r-- | keymaster_qcom.cpp | 23 |
2 files changed, 36 insertions, 15 deletions
@@ -1,28 +1,32 @@ LOCAL_PATH := $(call my-dir) -ifneq ($(filter msm8960 msm8974 msm8226,$(TARGET_BOARD_PLATFORM)),) - include $(CLEAR_VARS) -LOCAL_MODULE := keystore.$(TARGET_BOARD_PLATFORM) +ifneq ($(filter msm8960 msm8974 msm8226 msm8610,$(TARGET_BOARD_PLATFORM)),) + +LOCAL_MODULE := keystore.qcom LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/hw LOCAL_SRC_FILES := keymaster_qcom.cpp -LOCAL_C_INCLUDES := $(TARGET_OUT_HEADERS)/common/inc \ - $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include \ - external/openssl/include +LOCAL_C_INCLUDES := \ + $(TARGET_OUT_HEADERS)/common/inc \ + $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include \ + $(LOCAL_PATH)/../../../system/security/keystore \ + $(LOCAL_PATH)/../../../external/openssl/include LOCAL_C_FLAGS = -fvisibility=hidden -Wall -Werror -LOCAL_SHARED_LIBRARIES := \ - libcrypto \ - liblog \ - libc \ - libdl +LOCAL_SHARED_LIBRARIES := libcrypto liblog \ + libc \ + libcutils \ + libutils \ + libdl -LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr +LOCAL_ADDITIONAL_DEPENDENCIES := \ + $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr \ + $(LOCAL_PATH)/Android.mk LOCAL_MODULE_TAGS := optional diff --git a/keymaster_qcom.cpp b/keymaster_qcom.cpp index 55220d1..ebbcb97 100644 --- a/keymaster_qcom.cpp +++ b/keymaster_qcom.cpp @@ -62,8 +62,8 @@ struct qcom_km_ion_info_t { struct qcom_keymaster_handle { struct QSEECom_handle *qseecom; void *libhandle; - int (*QSEECom_start_app)(struct QSEECom_handle ** handle, char* path, - char* appname, uint32_t size); + int (*QSEECom_start_app)(struct QSEECom_handle ** handle, const char *path, + const char *appname, uint32_t size); int (*QSEECom_shutdown_app)(struct QSEECom_handle **handle); int (*QSEECom_send_cmd)(struct QSEECom_handle* handle, void *cbuf, uint32_t clen, void *rbuf, uint32_t rlen); @@ -664,6 +664,10 @@ static int qcom_km_close(hw_device_t *dev) keymaster_device_t* km_dev = (keymaster_device_t *)dev; struct qcom_keymaster_handle *km_handle =(struct qcom_keymaster_handle *)km_dev->context; + if (km_handle == NULL) { + ALOGE("km_handle == NULL"); + return -1; + } if (km_handle->qseecom == NULL) { ALOGE("Context == NULL"); return -1; @@ -676,7 +680,7 @@ static int qcom_km_close(hw_device_t *dev) static int qcom_km_get_lib_sym(qcom_keymaster_handle_t* km_handle) { - km_handle->libhandle = dlopen("/system/lib/libQSEEComAPI.so", RTLD_NOW); + km_handle->libhandle = dlopen("/vendor/lib/libQSEEComAPI.so", RTLD_NOW); if ( km_handle->libhandle ) { *(void **)(&km_handle->QSEECom_start_app) = dlsym(km_handle->libhandle,"QSEECom_start_app"); @@ -758,8 +762,21 @@ static int qcom_km_open(const hw_module_t* module, const char* name, ret = (*km_handle->QSEECom_start_app)((struct QSEECom_handle **)&km_handle->qseecom, "/vendor/firmware/keymaster", "keymaster", 4096*2); if (ret) { + ret = (*km_handle->QSEECom_start_app)((struct QSEECom_handle **)&km_handle->qseecom, + "/firmware/image", "keymaste", 4096*2); + } + if (ret) { ALOGE("Loading keymaster app failied"); free(km_handle); + dev->context = NULL; + dev->generate_keypair = NULL; + dev->import_keypair = NULL; + dev->get_keypair_public = NULL; + dev->delete_keypair = NULL; + dev->delete_all = NULL; + dev->sign_data = NULL; + dev->verify_data = NULL; + dev->common.close = NULL; return -1; } dev->common.tag = HARDWARE_DEVICE_TAG; |