mirror of
https://github.com/openharmony/tee_tee_os_framework.git
synced 2026-07-20 23:46:14 -04:00
no message
Match-id-7fde6ec40f9b90dbeb3c9ace912f951bf5331b21
This commit is contained in:
-2
@@ -1,2 +0,0 @@
|
||||
add_subdirectory(libvendor_shared)
|
||||
add_subdirectory(libvendor_static)
|
||||
@@ -1,104 +0,0 @@
|
||||
include(apps_lib_common)
|
||||
include(apps_svc_common)
|
||||
include(apps_sub_cfg)
|
||||
include(apps_subcommon)
|
||||
include(apps_feature_macro)
|
||||
|
||||
list(APPEND TEE_C_SOURCES
|
||||
${PROJECT_SOURCE_DIR}/vendor/common/src/chip_info.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/efuse/efuse_lib.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/hsm_upgrade/hsm_update_lib.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/scmi/scmi_lib.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/sec/sec_lib.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/libhsm_client/src/hsm_counter_api.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/libhsm_client/src/hsm_crypto_api.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/libhsm_client/src/hsm_efuse_api.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/libhsm_client/src/hsm_kms_internal.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/libhsm_client/src/hsm_rpmb_api.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/libhsm_client/src/hsm_counter_internal.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/libhsm_client/src/hsm_crypto_internal.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/libhsm_client/src/hsm_kms_api.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/libhsm_client/src/hsm_verify_api.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/libhsm_client/src/hsm_fuzz_api.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/hsm_pg_info_get/hsm_pg_info_lib.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/sfc/sfc_lib.c
|
||||
)
|
||||
|
||||
list(APPEND TEE_INCLUDE_PATH
|
||||
${PROJECT_SOURCE_DIR}/drivers/platdrv/include
|
||||
${PROJECT_SOURCE_DIR}/vendor/common/include
|
||||
${PLATFORM_DIR}/common/tee_config
|
||||
${PLATFORM_DIR}/${PLATFORM_NAME}/${PRODUCT_NAME}/common/tee_config
|
||||
${PROJECT_SOURCE_DIR}/libs/libplatdrv/platform/ascend/efuse
|
||||
${PROJECT_SOURCE_DIR}/libs/libplatdrv/platform/ascend/include
|
||||
${PROJECT_SOURCE_DIR}/libs/libplatdrv/platform/ascend/sec/include
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/include
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/libhsm_client/include
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/hsm_upgrade
|
||||
${PROJECT_SOURCE_DIR}/sys_libs/libteeagentcommon_client/include
|
||||
${PROJECT_SOURCE_DIR}/sys_libs/libteeagentcommon_client/src
|
||||
${PROJECT_SOURCE_DIR}/libs/libplatdrv/platform/ascend/efuse
|
||||
${PROJECT_SOURCE_DIR}/libs/libplatdrv/platform/ascend/sfc
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/efuse
|
||||
)
|
||||
|
||||
if ("${TARGET_BUILD_VARIANT}" STREQUAL "user")
|
||||
list(APPEND TEE_C_DEFINITIONS
|
||||
DEF_BUILDUSERMODE
|
||||
)
|
||||
endif()
|
||||
|
||||
list(APPEND VENDOR_SHARED_LINKER_FLAGS
|
||||
-Wl,-shared
|
||||
-Wl,-X
|
||||
-Wl,-EL
|
||||
-Wl,-z,text
|
||||
-Wl,-z,now
|
||||
-Wl,-z,relro
|
||||
-Wl,-z,noexecstack
|
||||
-Wl,--gc-sections
|
||||
-L${PREBUILD_LIBS}/${ARCH}
|
||||
-nostdlib
|
||||
-Wl,-z,max-page-size=4096
|
||||
)
|
||||
|
||||
list(FIND PRODUCT_APPS "vendor_shared" index)
|
||||
if (${index} GREATER -1)
|
||||
set(IF_INSTALL DO_INSTALL)
|
||||
endif()
|
||||
|
||||
list(REMOVE_ITEM TEE_C_FLAGS "-Werror")
|
||||
|
||||
tee_add_library(vendor_shared SHARED
|
||||
SOURCES
|
||||
${TEE_C_SOURCES}
|
||||
|
||||
COMPILE_TOOL
|
||||
clang
|
||||
|
||||
COMPILER_FLAGS
|
||||
${TEE_C_FLAGS}
|
||||
|
||||
COMPILER_DEFINITIONS
|
||||
${TEE_C_DEFINITIONS}
|
||||
|
||||
PRIVATE_INCLUDES
|
||||
${TEE_INCLUDE_PATH}
|
||||
|
||||
LINKER_FLAGS
|
||||
${CHOOSE_LLD}
|
||||
${VENDOR_SHARED_LINKER_FLAGS}
|
||||
${COMMON_LDFLAGS}
|
||||
|
||||
LINKGROUP
|
||||
${VENDOR_SHARED_LIBRARIES}
|
||||
${COMMON_LIBGCC_COMPS}
|
||||
|
||||
LIBS_INSTALL_PATH
|
||||
${BOOTFS_STAGE_DIR}
|
||||
|
||||
${IF_INSTALL}
|
||||
)
|
||||
if ("${ARCH}" STREQUAL "arm")
|
||||
set_target_properties(vendor_shared PROPERTIES OUTPUT_NAME "vendor_shared_a32")
|
||||
endif()
|
||||
@@ -1,62 +0,0 @@
|
||||
SONAME := libvendor_shared$(TARG).so
|
||||
|
||||
libvendor_shared_c_files := $(wildcard src/*.c)
|
||||
libvendor_shared_c_files += $(wildcard $(TOPDIR)/vendor/common/src/*.c)
|
||||
libvendor_shared_c_files += $(wildcard src/efuse/*.c)
|
||||
libvendor_shared_c_files += $(wildcard src/hsm_upgrade/*.c)
|
||||
libvendor_shared_c_files += $(wildcard src/scmi/*.c)
|
||||
libvendor_shared_c_files += $(wildcard src/sec/*.c)
|
||||
libvendor_shared_c_files += $(wildcard $(TOPDIR)/vendor/ascend/libvendor_shared/src/libhsm_client/src/*.c)
|
||||
libvendor_shared_c_files += $(wildcard src/hsm_pg_info_get/*.c)
|
||||
libvendor_shared_c_files += $(wildcard src/sfc/*.c)
|
||||
|
||||
inc-flags += -I$(TOPDIR)/drivers/platdrv/include
|
||||
inc-flags += -I$(TOPDIR)/vendor/common/include
|
||||
inc-flags += -I$(PLATFORM_DIR)/common/tee_config
|
||||
inc-flags += -I$(PLATFORM_DIR)/$(PLATFORM_NAME)/$(PRODUCT_NAME)/common/tee_config
|
||||
inc-flags += -I$(TOPDIR)/libs/libplatdrv/platform/ascend/efuse
|
||||
inc-flags += -I$(TOPDIR)/libs/libplatdrv/platform/ascend/include
|
||||
inc-flags += -I$(TOPDIR)/libs/libplatdrv/platform/ascend/sec/include/
|
||||
inc-flags += -I$(TOPDIR)/vendor/ascend/libvendor_shared/src/include
|
||||
inc-flags += -I$(TOPDIR)/libs/libplatdrv/platform/ascend/sfc
|
||||
|
||||
# for hsm_client
|
||||
inc-flags += -I$(TOPDIR)/vendor/ascend/libvendor_shared/src/libhsm_client/include
|
||||
inc-flags += -I$(TOPDIR)/sys_libs/libteeagentcommon_client/include
|
||||
inc-flags += -I$(TOPDIR)/sys_libs/libteeagentcommon_client/src
|
||||
inc-flags += -I$(TOPDIR)/libs/libplatdrv/platform/ascend/efuse
|
||||
inc-flags += -I$(TOPDIR)/vendor/ascend/libvendor_shared/src/efuse
|
||||
inc-flags += -I$(TOPDIR)/vendor/ascend/libvendor_shared/src/hsm_upgrade
|
||||
|
||||
ifeq ($(strip $(TARGET_BUILD_VARIANT)), user)
|
||||
inc-flags += -DDEF_BUILDUSERMODE
|
||||
endif
|
||||
|
||||
include $(TOPDIR)/mk/lib-common.mk
|
||||
include $(TOPDIR)/mk/feature-macro.mk
|
||||
|
||||
MODULE_FILE = $(BUILD_DIR)/$(SONAME)
|
||||
INSTALL_FILE = $(LIB_DIR)/$(SONAME)
|
||||
|
||||
target: $(MODULE_FILE)
|
||||
|
||||
$(INSTALL_FILE): $(MODULE_FILE)
|
||||
@test -d $(LIB_DIR) || mkdir -p $(LIB_DIR)
|
||||
@echo "[ INSTALL ] $(MODULE_FILE)"
|
||||
$(VER)cp -rafp $(MODULE_FILE) $(LIB_DIR)
|
||||
|
||||
ifeq (${TARG},)
|
||||
$(MODULE_FILE): $(libvendor_shared_objs)
|
||||
@echo "[ LD ] $@ LIB_DIR=$(LIB_DIR)"
|
||||
$(VER)$(LD) --shared -X -EL -z text -z now -z relro -z noexecstack --gc-sections -o $@ \
|
||||
$^ -L$(LIB_DIR) -L$(PREBUILD_LIBS)/$(ARCH) --start-group $(LIB_VENDOR_FLAGS) \
|
||||
$(LIBCOMPILER_RT_BUILTINS) --end-group -nostdlib -z max-page-size=4096
|
||||
endif
|
||||
|
||||
ifeq (${TARG}, _a32)
|
||||
$(MODULE_FILE): $(libvendor_shared_objs)
|
||||
@echo "[ LD ] $@ LIB_DIR=$(LIB_DIR)"
|
||||
$(VER)$(LD) --shared -X -EL -z text -z now -z relro -z noexecstack --gc-sections -o $@ \
|
||||
$^ -L$(LIB_DIR) -L$(PREBUILD_LIBS)/$(ARCH) --start-group \
|
||||
$(LIBCOMPILER_RT_BUILTINS) --end-group -nostdlib
|
||||
endif
|
||||
@@ -1,85 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2020-2021. All rights reserved.
|
||||
* Description: efuse libs source file
|
||||
* Author: chenyao
|
||||
* Create: 2020/4/27
|
||||
*/
|
||||
#include "tee_bit_ops.h"
|
||||
#include "sre_syscall.h"
|
||||
#include "sre_syscalls_id_ext.h"
|
||||
|
||||
#include "hmdrv.h"
|
||||
|
||||
#include "syscall_api_common.h"
|
||||
#include "efuse_lib_api.h"
|
||||
|
||||
uint32_t lib_efuse_write(uint32_t efuse_block_num, uint32_t start_bit, uint32_t dest_size,
|
||||
uint8_t *efuse_ctx, uint32_t efuse_len, uint32_t dev_id)
|
||||
{
|
||||
uint64_t input_addr = (uint64_t)(uintptr_t)efuse_ctx;
|
||||
uint64_t args[] = {
|
||||
efuse_block_num,
|
||||
start_bit,
|
||||
dest_size,
|
||||
(uint64_t)HIGH_32BIT(input_addr), (uint64_t)LOW_32BIT(input_addr),
|
||||
efuse_len,
|
||||
dev_id,
|
||||
};
|
||||
|
||||
return hm_drv_call(SYSCALL_HSM_EFUSE_WRITE, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_efuse_burn(uint32_t efuse_block_num, uint32_t dev_id)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
efuse_block_num,
|
||||
dev_id,
|
||||
};
|
||||
|
||||
return hm_drv_call(SYSCALL_HSM_EFUSE_BURN, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_efuse_check(uint32_t efuse_block_num, uint32_t start_bit, uint32_t dest_size,
|
||||
uint8_t *efuse_ctx, uint32_t efuse_len, uint32_t dev_id)
|
||||
{
|
||||
uint64_t input_addr = (uint64_t)(uintptr_t)efuse_ctx;
|
||||
|
||||
uint64_t args[] = {
|
||||
efuse_block_num,
|
||||
start_bit,
|
||||
dest_size,
|
||||
(uint64_t)HIGH_32BIT(input_addr), (uint64_t)LOW_32BIT(input_addr),
|
||||
efuse_len,
|
||||
dev_id,
|
||||
};
|
||||
|
||||
return hm_drv_call(SYSCALL_HSM_EFUSE_CHECK, args, ARRAY_SIZE(args));
|
||||
}
|
||||
uint32_t lib_efuse_nv_cnt_burn(uint32_t nv_cnt, uint32_t dev_id)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
nv_cnt,
|
||||
dev_id,
|
||||
};
|
||||
|
||||
return hm_drv_call(SYSCALL_HSM_EFUSE_NV_CNT_BURN, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_efuse_nv_cnt_check(uint32_t nv_cnt, uint32_t dev_id)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
nv_cnt,
|
||||
dev_id,
|
||||
};
|
||||
|
||||
return hm_drv_call(SYSCALL_HSM_EFUSE_NV_CNT_CHECK, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_efuse_boot_check(uint32_t dev_id)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
dev_id,
|
||||
};
|
||||
|
||||
return hm_drv_call(SYSCALL_HSM_EFUSE_NS_FORIBID_CHECK, args, ARRAY_SIZE(args));
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2020-2021. All rights reserved.
|
||||
* Description: efuse libs api file
|
||||
* Author: huawei
|
||||
* Create: 2020/4/27
|
||||
*/
|
||||
|
||||
#ifndef EFUSE_LIB_API_H
|
||||
#define EFUSE_LIB_API_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
uint32_t lib_efuse_write(uint32_t efuse_block_num, uint32_t start_bit, uint32_t dest_size,
|
||||
uint8_t *efuse_ctx, uint32_t efuse_len, uint32_t dev_id);
|
||||
|
||||
uint32_t lib_efuse_burn(uint32_t efuse_block_num, uint32_t dev_id);
|
||||
|
||||
uint32_t lib_efuse_check(uint32_t efuse_block_num, uint32_t start_bit, uint32_t dest_size,
|
||||
uint8_t *efuse_ctx, uint32_t efuse_len, uint32_t dev_id);
|
||||
|
||||
uint32_t lib_efuse_nv_cnt_burn(uint32_t nv_cnt, uint32_t dev_id);
|
||||
|
||||
uint32_t lib_efuse_nv_cnt_check(uint32_t nv_cnt, uint32_t dev_id);
|
||||
|
||||
uint32_t lib_efuse_boot_check(uint32_t dev_id);
|
||||
|
||||
#endif
|
||||
-23
@@ -1,23 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved.
|
||||
* Description: hsm pg info get lib
|
||||
* Author: chenyao
|
||||
* Create: 2020/9/3
|
||||
*/
|
||||
#include "sre_syscalls_id_ext.h"
|
||||
#include "hmdrv.h"
|
||||
|
||||
#include "syscall_api_common.h"
|
||||
#include "hsm_pg_info_lib_api.h"
|
||||
|
||||
uint32_t lib_pg_info_read(uint32_t dev_id, uint32_t module, uint32_t data, uint64_t *out_data)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX6] = {0};
|
||||
|
||||
args[ARRAY_INDEX0] = dev_id;
|
||||
args[ARRAY_INDEX1] = module;
|
||||
args[ARRAY_INDEX2] = data;
|
||||
args[ARRAY_INDEX3] = (uint64_t)(uintptr_t)out_data;
|
||||
|
||||
return hm_drv_call(SYSCALL_HSM_PG_GET, args, ARRAY_SIZE(args));
|
||||
}
|
||||
-15
@@ -1,15 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2020-2021. All rights reserved.
|
||||
* Description: hsm pg info get lib head file
|
||||
* Author: chenyao
|
||||
* Create: 2020/9/3
|
||||
*/
|
||||
|
||||
#ifndef HSM_PG_INFO_LIB_API
|
||||
#define HSM_PG_INFO_LIB_API
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
uint32_t lib_pg_info_read(uint32_t dev_id, uint32_t module, uint32_t data, uint64_t *out_data);
|
||||
|
||||
#endif
|
||||
-365
@@ -1,365 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2019-2021. All rights reserved.
|
||||
* Description: firmware update libs source file
|
||||
* Author: huawei
|
||||
* Create: 2019/4/6
|
||||
*/
|
||||
|
||||
#include "sre_syscalls_id_ext.h"
|
||||
#include "hmdrv.h"
|
||||
|
||||
#include "syscall_api_common.h"
|
||||
#include "hsm_update_lib_api.h"
|
||||
|
||||
uint32_t lib_secure_flash_read(uint32_t offset, uint8_t *buffer, uint32_t length, uint32_t chip_id)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX6] = {0};
|
||||
|
||||
args[ARRAY_INDEX0] = offset;
|
||||
args[ARRAY_INDEX1] = (uint64_t)(uintptr_t)buffer;
|
||||
args[ARRAY_INDEX3] = length;
|
||||
args[ARRAY_INDEX4] = chip_id;
|
||||
|
||||
return hm_drv_call(SYSCALL_SECURE_FLASH_READ, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_secure_flash_write(uint32_t offset, uint8_t *buffer, uint32_t length, uint32_t chip_id)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX6] = {0};
|
||||
|
||||
args[ARRAY_INDEX0] = offset;
|
||||
args[ARRAY_INDEX1] = (uint64_t)(uintptr_t)buffer;
|
||||
args[ARRAY_INDEX3] = length;
|
||||
args[ARRAY_INDEX4] = chip_id;
|
||||
|
||||
return hm_drv_call(SYSCALL_SECURE_FLASH_WRITE, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_secure_flash_erase(uint32_t offset, uint32_t length, uint32_t chip_id)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX6] = {0};
|
||||
|
||||
args[ARRAY_INDEX0] = offset;
|
||||
args[ARRAY_INDEX3] = length;
|
||||
args[ARRAY_INDEX4] = chip_id;
|
||||
|
||||
return hm_drv_call(SYSCALL_SECURE_FLASH_ERASE, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_secure_img_verify(uint64_t nsecure_addr, uint32_t length,
|
||||
uint32_t chip_id, uint32_t img_id, uint64_t *img_addr, uint32_t pss_cfg)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX8] = {0};
|
||||
|
||||
args[ARRAY_INDEX0] = img_id;
|
||||
args[ARRAY_INDEX1] = upper_32_bits((uintptr_t)nsecure_addr);
|
||||
args[ARRAY_INDEX2] = lower_32_bits((uintptr_t)nsecure_addr);
|
||||
args[ARRAY_INDEX3] = length;
|
||||
args[ARRAY_INDEX4] = chip_id;
|
||||
args[ARRAY_INDEX5] = upper_32_bits((uintptr_t)img_addr);
|
||||
args[ARRAY_INDEX6] = lower_32_bits((uintptr_t)img_addr);
|
||||
args[ARRAY_INDEX7] = pss_cfg;
|
||||
|
||||
return hm_drv_call(SYSCALL_SECURE_IMG_VERIFY, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_secure_verify_status_update(uint32_t chip_id, uint32_t img_id)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX8] = {0};
|
||||
|
||||
args[ARRAY_INDEX0] = img_id;
|
||||
args[ARRAY_INDEX4] = chip_id;
|
||||
|
||||
return hm_drv_call(SYSCALL_SECURE_VERIFY_STATUS_UPDATE, args, ARRAY_SIZE(args));
|
||||
}
|
||||
uint32_t lib_secure_img_update(uint32_t img_index, uint32_t chip_id, uint32_t *slice)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX6] = {0};
|
||||
|
||||
args[ARRAY_INDEX0] = img_index;
|
||||
args[ARRAY_INDEX1] = upper_32_bits((uintptr_t)slice);
|
||||
args[ARRAY_INDEX2] = lower_32_bits((uintptr_t)slice);
|
||||
args[ARRAY_INDEX4] = chip_id;
|
||||
|
||||
return hm_drv_call(SYSCALL_SECURE_IMG_UPDATE, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_secure_update_finish(uint32_t chip_id)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX6] = {0};
|
||||
|
||||
args[ARRAY_INDEX4] = chip_id;
|
||||
|
||||
return hm_drv_call(SYSCALL_SECURE_UPDATE_FINISH, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_secure_version_get(uint32_t img_id, uint8_t *buffer, uint32_t buffer_size,
|
||||
uint32_t chip_id, uint32_t area_check)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX6] = {0};
|
||||
|
||||
args[ARRAY_INDEX0] = img_id;
|
||||
args[ARRAY_INDEX1] = upper_32_bits((uintptr_t)buffer);
|
||||
args[ARRAY_INDEX2] = lower_32_bits((uintptr_t)buffer);
|
||||
args[ARRAY_INDEX3] = buffer_size;
|
||||
args[ARRAY_INDEX4] = chip_id;
|
||||
args[ARRAY_INDEX5] = area_check;
|
||||
|
||||
return hm_drv_call(SYSCALL_SECURE_VERSION_GET, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_secure_count_get(uint32_t *count, uint32_t chip_id)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX6] = {0};
|
||||
|
||||
args[ARRAY_INDEX1] = upper_32_bits((uintptr_t)count);
|
||||
args[ARRAY_INDEX2] = lower_32_bits((uintptr_t)count);
|
||||
args[ARRAY_INDEX4] = chip_id;
|
||||
|
||||
return hm_drv_call(SYSCALL_SECURE_COUNT_GET, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_secure_info_get(uint32_t flash_index, uint8_t *buffer, uint32_t *buffer_size, uint32_t chip_id)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX6] = {0};
|
||||
|
||||
args[ARRAY_INDEX0] = flash_index;
|
||||
args[ARRAY_INDEX1] = upper_32_bits((uintptr_t)buffer);
|
||||
args[ARRAY_INDEX2] = lower_32_bits((uintptr_t)buffer);
|
||||
args[ARRAY_INDEX3] = upper_32_bits((uintptr_t)buffer_size);
|
||||
args[ARRAY_INDEX4] = chip_id;
|
||||
args[ARRAY_INDEX5] = lower_32_bits((uintptr_t)buffer_size);
|
||||
|
||||
return hm_drv_call(SYSCALL_SECURE_INFO_GET, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_secure_ufs_cnt_read(uint32_t *out_value, uint32_t chip_id)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX6] = {0};
|
||||
|
||||
args[ARRAY_INDEX1] = upper_32_bits((uintptr_t)out_value);
|
||||
args[ARRAY_INDEX2] = lower_32_bits((uintptr_t)out_value);
|
||||
args[ARRAY_INDEX4] = chip_id;
|
||||
|
||||
return hm_drv_call(SYSCALL_SECURE_UFS_CNT_READ, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_secure_ufs_cnt_write(uint32_t in_value, uint32_t chip_id)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX6] = {0};
|
||||
|
||||
args[ARRAY_INDEX0] = in_value;
|
||||
args[ARRAY_INDEX4] = chip_id;
|
||||
|
||||
return hm_drv_call(SYSCALL_SECURE_UFS_CNT_WRITE, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_secure_recovery_cnt_write(uint32_t chip_id)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX6] = {0};
|
||||
|
||||
args[ARRAY_INDEX4] = chip_id;
|
||||
|
||||
return hm_drv_call(SYSCALL_SECURE_RECOVERY_CNT_WRITE, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
/* sram read */
|
||||
uint32_t lib_secure_sram_read(uint32_t offset, uint8_t *buf, uint32_t length, uint32_t chip_id)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX6] = {0};
|
||||
|
||||
args[ARRAY_INDEX0] = offset;
|
||||
args[ARRAY_INDEX1] = upper_32_bits((uintptr_t)buf);
|
||||
args[ARRAY_INDEX2] = lower_32_bits((uintptr_t)buf);
|
||||
args[ARRAY_INDEX3] = length;
|
||||
args[ARRAY_INDEX4] = chip_id;
|
||||
|
||||
return hm_drv_call(SYSCALL_UPGRADE_SRAM_READ, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
/* read flash api for imgs upgrade */
|
||||
uint32_t lib_upgrade_flash_read(uint32_t offset, uint8_t *buffer, uint32_t length, uint32_t chip_id)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX6] = {0};
|
||||
|
||||
args[ARRAY_INDEX0] = offset;
|
||||
args[ARRAY_INDEX1] = upper_32_bits((uintptr_t)buffer);
|
||||
args[ARRAY_INDEX2] = lower_32_bits((uintptr_t)buffer);
|
||||
args[ARRAY_INDEX3] = length;
|
||||
args[ARRAY_INDEX4] = chip_id;
|
||||
|
||||
return hm_drv_call(SYSCALL_UPGRADE_FLASH_READ, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
/* write flash api for imgs upgrade */
|
||||
uint32_t lib_upgrade_flash_write(uint32_t offset, uint8_t *buffer, uint32_t length, uint32_t chip_id)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX6] = {0};
|
||||
|
||||
args[ARRAY_INDEX0] = offset;
|
||||
args[ARRAY_INDEX1] = upper_32_bits((uintptr_t)buffer);
|
||||
args[ARRAY_INDEX2] = lower_32_bits((uintptr_t)buffer);
|
||||
args[ARRAY_INDEX3] = length;
|
||||
args[ARRAY_INDEX4] = chip_id;
|
||||
|
||||
return hm_drv_call(SYSCALL_UPGRADE_FLASH_WRITE, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
/* sysctrl read api */
|
||||
uint32_t lib_secure_sysctrl_read(uint32_t offset, uint32_t *val, uint32_t chip_id)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX6] = {0};
|
||||
|
||||
args[ARRAY_INDEX0] = offset;
|
||||
args[ARRAY_INDEX1] = upper_32_bits((uintptr_t)val);
|
||||
args[ARRAY_INDEX2] = lower_32_bits((uintptr_t)val);
|
||||
args[ARRAY_INDEX3] = 0x0;
|
||||
args[ARRAY_INDEX4] = chip_id;
|
||||
|
||||
return hm_drv_call(SYSCALL_UPGRADE_RESET_CNT_READ, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
/* sysctrl write api */
|
||||
uint32_t lib_secure_sysctrl_write(uint32_t offset, uint32_t *val, uint32_t chip_id)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX6] = {0};
|
||||
|
||||
args[ARRAY_INDEX0] = offset;
|
||||
args[ARRAY_INDEX1] = upper_32_bits((uintptr_t)val);
|
||||
args[ARRAY_INDEX2] = lower_32_bits((uintptr_t)val);
|
||||
args[ARRAY_INDEX3] = 0x0;
|
||||
args[ARRAY_INDEX4] = chip_id;
|
||||
|
||||
return hm_drv_call(SYSCALL_UPGRADE_RESET_CNT_WRITE, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_secure_img_sync(uint32_t chip_id, uint32_t img_id, uint32_t base_part,
|
||||
uint32_t baseline_flag)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX6] = {0};
|
||||
|
||||
args[ARRAY_INDEX0] = img_id;
|
||||
args[ARRAY_INDEX1] = base_part;
|
||||
args[ARRAY_INDEX2] = baseline_flag;
|
||||
args[ARRAY_INDEX3] = 0x0;
|
||||
args[ARRAY_INDEX4] = chip_id;
|
||||
args[ARRAY_INDEX5] = 0x0;
|
||||
|
||||
return hm_drv_call(SYSCALL_SECURE_IMG_SYNC, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_root_key_get(uint8_t *buffer, uint32_t buffer_size)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX6] = {0};
|
||||
|
||||
args[ARRAY_INDEX1] = upper_32_bits((uintptr_t)buffer);
|
||||
args[ARRAY_INDEX2] = lower_32_bits((uintptr_t)buffer);
|
||||
args[ARRAY_INDEX3] = buffer_size;
|
||||
|
||||
return hm_drv_call(SYSCALL_SECURE_ROOTKEY_GET, args, ARRAY_SIZE(args));
|
||||
}
|
||||
uint32_t lib_get_cmdline_info(uint32_t dev_id, uint32_t *buffer, uint32_t buffer_size)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX6] = {0};
|
||||
|
||||
args[ARRAY_INDEX0] = dev_id;
|
||||
args[ARRAY_INDEX1] = upper_32_bits((uintptr_t)buffer);
|
||||
args[ARRAY_INDEX2] = lower_32_bits((uintptr_t)buffer);
|
||||
args[ARRAY_INDEX3] = buffer_size;
|
||||
|
||||
return hm_drv_call(SYSCALL_SECURE_CMDLINE_GET, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_reflash_hilink_ram(uint32_t chip_id)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX6] = {0};
|
||||
|
||||
args[ARRAY_INDEX4] = chip_id;
|
||||
|
||||
return hm_drv_call(SYSCALL_REFLASH_HILINK, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_secure_part_read(uint32_t chip_id, uint32_t img_id, uint64_t *img_addr,
|
||||
uint32_t *length, uint32_t base_part)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX8] = { 0 };
|
||||
|
||||
args[ARRAY_INDEX0] = img_id;
|
||||
args[ARRAY_INDEX1] = upper_32_bits((uintptr_t)length);
|
||||
args[ARRAY_INDEX2] = lower_32_bits((uintptr_t)length);
|
||||
args[ARRAY_INDEX3] = base_part;
|
||||
args[ARRAY_INDEX4] = chip_id;
|
||||
args[ARRAY_INDEX5] = upper_32_bits((uintptr_t)img_addr);
|
||||
args[ARRAY_INDEX6] = lower_32_bits((uintptr_t)img_addr);
|
||||
|
||||
return hm_drv_call(SYSCALL_SECURE_PART_READ, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_secure_get_baseline_flag(uint32_t chip_id, uint32_t *flag)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX6] = {0};
|
||||
|
||||
args[ARRAY_INDEX4] = chip_id;
|
||||
args[ARRAY_INDEX1] = (uint64_t)(uintptr_t)flag;
|
||||
|
||||
return hm_drv_call(SYSCALL_SECURE_GET_BLFLAG, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_secure_set_baseline_flag(uint32_t chip_id)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX6] = {0};
|
||||
|
||||
args[ARRAY_INDEX4] = chip_id;
|
||||
|
||||
return hm_drv_call(SYSCALL_SECURE_SET_BLFLAG, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_hboot1a_addr_get(uint32_t chip_id, uint32_t *image_addr, uint32_t *img_len)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX8] = { 0 };
|
||||
|
||||
args[ARRAY_INDEX1] = (uint64_t)(uintptr_t)(image_addr);
|
||||
args[ARRAY_INDEX2] = (uint64_t)(uintptr_t)(img_len);
|
||||
args[ARRAY_INDEX4] = chip_id;
|
||||
|
||||
return hm_drv_call(SYSCALL_SECURE_HBOOT_TRANS, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_is_update_finished(uint32_t chip_id)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX8] = { 0 };
|
||||
|
||||
args[ARRAY_INDEX4] = chip_id;
|
||||
|
||||
return hm_drv_call(SYSCALL_SECURE_UPDATE_STATUS, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_get_efuse_nvcnt(uint32_t *addr, uint32_t len, uint32_t dev_id)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX8] = { 0 };
|
||||
|
||||
args[ARRAY_INDEX0] = (uint64_t)dev_id;
|
||||
args[ARRAY_INDEX1] = (uint64_t)(uintptr_t)addr;
|
||||
args[ARRAY_INDEX2] = (uint64_t)len;
|
||||
|
||||
return hm_drv_call(SYSCALL_GET_EFUSE_NVCNT, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_sync_flag_get(uint32_t chip_id, uint32_t *sync_flag)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX6] = {0};
|
||||
|
||||
args[ARRAY_INDEX0] = (uint64_t)(uintptr_t)sync_flag;
|
||||
args[ARRAY_INDEX4] = chip_id;
|
||||
|
||||
return hm_drv_call(SYSCALL_GET_SYNC_FLAG, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_get_device_num(uint32_t *dev_num)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX8] = { 0 };
|
||||
|
||||
args[ARRAY_INDEX0] = (uint64_t)(uintptr_t)(dev_num);
|
||||
|
||||
return hm_drv_call(SYSCALL_GET_DEV_NUM, args, ARRAY_SIZE(args));
|
||||
}
|
||||
-47
@@ -1,47 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2020-2021. All rights reserved.
|
||||
* Description: update firmware libs api file
|
||||
* Author: chenyao
|
||||
* Create: 2020/4/6
|
||||
*/
|
||||
|
||||
#ifndef HSM_UPDATE_LIB_API
|
||||
#define HSM_UPDATE_LIB_API
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
uint32_t lib_secure_flash_read(uint32_t offset, uint8_t *buffer, uint32_t length, uint32_t chip_id);
|
||||
uint32_t lib_secure_flash_write(uint32_t offset, uint8_t *buffer, uint32_t length, uint32_t chip_id);
|
||||
uint32_t lib_secure_flash_erase(uint32_t offset, uint32_t length, uint32_t chip_id);
|
||||
uint32_t lib_secure_img_verify(uint64_t nsecure_addr, uint32_t length,
|
||||
uint32_t chip_id, uint32_t img_id, uint64_t *img_addr, uint32_t pss_cfg);
|
||||
uint32_t lib_secure_img_update(uint32_t img_index, uint32_t chip_id, uint32_t *slice);
|
||||
uint32_t lib_secure_update_finish(uint32_t chip_id);
|
||||
uint32_t lib_secure_version_get(uint32_t img_id, uint8_t *buffer, uint32_t buffer_size,
|
||||
uint32_t chip_id, uint32_t area_check);
|
||||
uint32_t lib_secure_count_get(uint32_t *count, uint32_t chip_id);
|
||||
uint32_t lib_secure_info_get(uint32_t flash_index, uint8_t *buffer, uint32_t *buffer_size, uint32_t chip_id);
|
||||
uint32_t lib_secure_ufs_cnt_read(uint32_t *out_value, uint32_t chip_id);
|
||||
uint32_t lib_secure_ufs_cnt_write(uint32_t in_value, uint32_t chip_id);
|
||||
uint32_t lib_secure_verify_status_update(uint32_t chip_id, uint32_t img_id);
|
||||
uint32_t lib_secure_sram_read(uint32_t offset, uint8_t *buf, uint32_t length, uint32_t chip_id);
|
||||
uint32_t lib_upgrade_flash_read(uint32_t offset, uint8_t *buffer, uint32_t length, uint32_t chip_id);
|
||||
uint32_t lib_upgrade_flash_write(uint32_t offset, uint8_t *buffer, uint32_t length, uint32_t chip_id);
|
||||
uint32_t lib_secure_sysctrl_read(uint32_t offset, uint32_t *val, uint32_t chip_id);
|
||||
uint32_t lib_secure_sysctrl_write(uint32_t offset, uint32_t *val, uint32_t chip_id);
|
||||
uint32_t lib_secure_img_sync(uint32_t chip_id, uint32_t img_id, uint32_t base_part, uint32_t baseline_flag);
|
||||
uint32_t lib_root_key_get(uint8_t *buffer, uint32_t buffer_size);
|
||||
uint32_t lib_get_cmdline_info(uint32_t dev_id, uint32_t *buffer, uint32_t buffer_size);
|
||||
uint32_t lib_reflash_hilink_ram(uint32_t chip_id);
|
||||
uint32_t lib_secure_part_read(uint32_t chip_id, uint32_t img_id, uint64_t *img_addr, uint32_t *length,
|
||||
uint32_t base_part);
|
||||
uint32_t lib_secure_get_baseline_flag(uint32_t chip_id, uint32_t *flag);
|
||||
uint32_t lib_secure_set_baseline_flag(uint32_t chip_id);
|
||||
uint32_t lib_hboot1a_addr_get(uint32_t chip_id, uint32_t *image_addr, uint32_t *img_len);
|
||||
uint32_t lib_get_efuse_nvcnt(uint32_t *addr, uint32_t len, uint32_t dev_id);
|
||||
uint32_t lib_get_device_num(uint32_t *dev_num);
|
||||
uint32_t lib_is_update_finished(uint32_t chip_id);
|
||||
uint32_t lib_sync_flag_get(uint32_t chip_id, uint32_t *sync_flag);
|
||||
uint32_t lib_secure_recovery_cnt_write(uint32_t chip_id);
|
||||
|
||||
#endif
|
||||
-28
@@ -1,28 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2021-2021. All rights reserved.
|
||||
* Description: efuse libs header file
|
||||
* Author: huawei
|
||||
* Create: 2021/09/17
|
||||
*/
|
||||
#ifndef SYSCALL_API_COMMON_H
|
||||
#define SYSCALL_API_COMMON_H
|
||||
|
||||
#define upper_32_bits(data) (uint32_t)(((data) >> 16) >> 16)
|
||||
#define lower_32_bits(data) (uint32_t)(data)
|
||||
|
||||
/* array index */
|
||||
#define ARRAY_INDEX0 0
|
||||
#define ARRAY_INDEX1 1
|
||||
#define ARRAY_INDEX2 2
|
||||
#define ARRAY_INDEX3 3
|
||||
#define ARRAY_INDEX4 4
|
||||
#define ARRAY_INDEX5 5
|
||||
#define ARRAY_INDEX6 6
|
||||
#define ARRAY_INDEX7 7
|
||||
#define ARRAY_INDEX8 8
|
||||
|
||||
#ifndef ARRAY_SIZE
|
||||
#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
|
||||
#endif
|
||||
|
||||
#endif
|
||||
-50
@@ -1,50 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2019-2020. All rights reserved.
|
||||
* Description: HSM counter api function and algorithm check head
|
||||
* Author: chenyao
|
||||
* Create: 2020-01-08
|
||||
*/
|
||||
#ifndef _HSM_COUNT_API_H_
|
||||
#define _HSM_COUNT_API_H_
|
||||
|
||||
#include "hsm_public.h"
|
||||
|
||||
#define HSM_AC_STATUS_CHECK_LEN 0x4
|
||||
|
||||
typedef struct {
|
||||
uint8_t *counter_info;
|
||||
uint8_t *counter_auth;
|
||||
uint32_t counter_auth_len;
|
||||
uint32_t *counter_id;
|
||||
} HSM_COUNT_CREATE_INFO;
|
||||
|
||||
typedef struct {
|
||||
uint8_t *counter_info;
|
||||
uint32_t counter_id;
|
||||
uint64_t *count_value;
|
||||
} HSM_COUNT_READ_INFO;
|
||||
|
||||
typedef struct {
|
||||
uint8_t *counter_info;
|
||||
uint32_t counter_id;
|
||||
uint8_t *counter_auth;
|
||||
uint32_t counter_auth_len;
|
||||
} HSM_COUNT_DELETE_INFO;
|
||||
|
||||
typedef struct {
|
||||
uint8_t *counter_info;
|
||||
uint32_t counter_id;
|
||||
uint8_t *counter_auth;
|
||||
uint32_t counter_auth_len;
|
||||
uint64_t counter_value_add;
|
||||
uint64_t *counter_value;
|
||||
} HSM_COUNT_INC_INFO;
|
||||
|
||||
TEE_Result TEE_HSM_CounterInit(uint32_t dev_id, uint8_t *counter_info);
|
||||
TEE_Result TEE_HSM_CounterCreate(uint32_t dev_id, HSM_COUNT_CREATE_INFO *hsm_count_create_info);
|
||||
TEE_Result TEE_HSM_CounterRead(uint32_t dev_id, HSM_COUNT_READ_INFO *hsm_count_read_info);
|
||||
TEE_Result TEE_HSM_CounterDelete(uint32_t dev_id, HSM_COUNT_DELETE_INFO *hsm_count_delete_info);
|
||||
TEE_Result TEE_HSM_CounterInc(uint32_t dev_id, HSM_COUNT_INC_INFO *hsm_count_inc_info);
|
||||
TEE_Result TEE_HSM_AlgCheck(uint32_t dev_id, uint32_t *hsm_accelerator_status, uint32_t hsm_status_len);
|
||||
|
||||
#endif
|
||||
Vendored
-26
@@ -1,26 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2012-2020. All rights reserved.
|
||||
* Description: HSM kms internal function head
|
||||
* Author: chenyao
|
||||
* Create: 2019-01-08
|
||||
*/
|
||||
#ifndef _HSM_COUNT_INTERNAL_H_
|
||||
#define _HSM_COUNT_INTERNAL_H_
|
||||
|
||||
#include "hsm_public.h"
|
||||
#include "hsm_counter_api.h"
|
||||
|
||||
TEE_Result counter_create_para_check(HSM_COUNT_CREATE_INFO *hsm_count_create_info);
|
||||
TEE_Result counter_create_request_sharemem(uint8_t **buffer_local, uint32_t *buffer_size,
|
||||
HSM_COUNT_CREATE_INFO *hsm_count_create_info);
|
||||
TEE_Result counter_read_para_check(HSM_COUNT_READ_INFO *hsm_count_read_info);
|
||||
TEE_Result counter_read_request_sharemem(uint8_t **buffer_local, uint32_t *buffer_size,
|
||||
HSM_COUNT_READ_INFO *hsm_count_read_info);
|
||||
TEE_Result counter_delete_para_check(HSM_COUNT_DELETE_INFO *hsm_count_delete_info);
|
||||
TEE_Result counter_delete_request_sharemem(uint8_t **buffer_local, uint32_t *buffer_size,
|
||||
HSM_COUNT_DELETE_INFO *hsm_count_delete_info);
|
||||
TEE_Result counter_inc_para_check(HSM_COUNT_INC_INFO *hsm_count_inc_info);
|
||||
TEE_Result counter_inc_request_sharemem(uint8_t **buffer_local, uint32_t *buffer_size,
|
||||
HSM_COUNT_INC_INFO *hsm_count_inc_info);
|
||||
|
||||
#endif
|
||||
-155
@@ -1,155 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2012-2020. All rights reserved.
|
||||
* Description: hsm_api function
|
||||
* Author: chenyao
|
||||
* Create: 2020-02-09
|
||||
*/
|
||||
#ifndef _HSM_CRYPTO_API_H_
|
||||
#define _HSM_CRYPTO_API_H_
|
||||
|
||||
#include "hsm_public.h"
|
||||
|
||||
typedef struct {
|
||||
uint32_t alg_id;
|
||||
uint32_t crypto_service;
|
||||
CRYPTO_KEY_ELEMENT cipher_key;
|
||||
uint8_t *iv_ptr;
|
||||
uint32_t iv_size;
|
||||
uint8_t *cipherkey_auth;
|
||||
uint32_t cipherkey_authsize;
|
||||
uint8_t *cipherkey_protectmsg;
|
||||
uint32_t *session_handle;
|
||||
uint32_t *max_chunk_size;
|
||||
uint32_t *chunk_block_size;
|
||||
} HSM_CIPHER_START_INFO;
|
||||
|
||||
typedef struct {
|
||||
uint32_t session_handle;
|
||||
uint32_t input_data_size;
|
||||
uint8_t *input_data;
|
||||
uint32_t *output_data_size;
|
||||
uint8_t *output_data;
|
||||
} HSM_CIPHER_PROCESS_INFO;
|
||||
|
||||
typedef struct {
|
||||
uint32_t session_handle;
|
||||
uint32_t *output_data_size;
|
||||
uint8_t *output_data;
|
||||
} HSM_CIPHER_FINISH_INFO;
|
||||
|
||||
typedef struct {
|
||||
uint32_t alg_id;
|
||||
uint32_t crypto_service;
|
||||
uint32_t *session_handle;
|
||||
uint32_t *max_chunk_size;
|
||||
uint32_t *chunk_block_size;
|
||||
} HSM_HASH_START_INFO;
|
||||
|
||||
typedef struct {
|
||||
uint32_t session_handle;
|
||||
uint32_t input_data_size;
|
||||
uint8_t *input_data;
|
||||
} HSM_HASH_PROCESS_INFO;
|
||||
|
||||
typedef struct {
|
||||
uint32_t session_handle;
|
||||
uint32_t *output_data_size;
|
||||
uint8_t *output_data;
|
||||
} HSM_HASH_FINISH_INFO;
|
||||
|
||||
typedef struct {
|
||||
uint32_t alg_id;
|
||||
uint32_t crypto_service;
|
||||
CRYPTO_KEY_ELEMENT cipher_key;
|
||||
uint8_t *cipherkey_auth;
|
||||
uint32_t cipherkey_authsize;
|
||||
uint8_t *cipherkey_protectmsg;
|
||||
uint32_t *session_handle;
|
||||
uint32_t *max_chunk_size;
|
||||
uint32_t *chunk_block_size;
|
||||
} HSM_MAC_START_INFO;
|
||||
|
||||
typedef struct {
|
||||
uint32_t session_handle;
|
||||
uint32_t input_data_size;
|
||||
uint8_t *input_data;
|
||||
} HSM_MAC_PROCESS_INFO;
|
||||
|
||||
typedef struct {
|
||||
uint32_t session_handle;
|
||||
uint32_t *output_data_size;
|
||||
uint8_t *output_data;
|
||||
} HSM_MAC_FINISH_INFO;
|
||||
|
||||
typedef struct {
|
||||
uint32_t alg_id;
|
||||
uint32_t crypto_service;
|
||||
CRYPTO_KEY_ELEMENT cipher_key;
|
||||
uint8_t *cipherkey_auth;
|
||||
uint32_t cipherkey_authsize;
|
||||
uint8_t *cipherkey_protectmsg;
|
||||
uint32_t *session_handle;
|
||||
uint32_t *max_chunk_size;
|
||||
uint32_t *chunk_block_size;
|
||||
} HSM_SIGN_START_INFO;
|
||||
|
||||
typedef struct {
|
||||
uint32_t session_handle;
|
||||
uint32_t input_data_size;
|
||||
uint8_t *input_data;
|
||||
} HSM_SIGN_PROCESS_INFO;
|
||||
|
||||
typedef struct {
|
||||
uint32_t session_handle;
|
||||
uint32_t *sign_size;
|
||||
uint8_t *sign;
|
||||
} HSM_SIGN_FINISH_INFO;
|
||||
|
||||
typedef struct {
|
||||
uint32_t alg_id;
|
||||
uint32_t crypto_service;
|
||||
CRYPTO_KEY_ELEMENT cipher_key;
|
||||
uint8_t *sign;
|
||||
uint32_t sign_size;
|
||||
uint8_t *cipherkey_auth;
|
||||
uint32_t cipherkey_authsize;
|
||||
uint8_t *cipherkey_protectmsg;
|
||||
uint32_t *session_handle;
|
||||
uint32_t *max_chunk_size;
|
||||
uint32_t *chunk_block_size;
|
||||
} HSM_VERIFY_START_INFO;
|
||||
|
||||
typedef struct {
|
||||
uint32_t session_handle;
|
||||
uint32_t input_data_size;
|
||||
uint8_t *input_data;
|
||||
} HSM_VERIFY_PROCESS_INFO;
|
||||
|
||||
typedef struct {
|
||||
uint32_t session_handle;
|
||||
uint32_t *verify_result;
|
||||
} HSM_VERIFY_FINISH_INFO;
|
||||
|
||||
typedef struct {
|
||||
uint8_t *random;
|
||||
uint32_t random_size;
|
||||
} HSM_GET_RANDOM_INFO;
|
||||
|
||||
TEE_Result TEE_HSM_CipherStart(uint32_t dev_id, HSM_CIPHER_START_INFO *cipher_start_info);
|
||||
TEE_Result TEE_HSM_CipherProcess(uint32_t dev_id, HSM_CIPHER_PROCESS_INFO *cipher_process_info);
|
||||
TEE_Result TEE_HSM_CipherFinish(uint32_t dev_id, HSM_CIPHER_FINISH_INFO *cipher_finish_info);
|
||||
TEE_Result TEE_HSM_HashStart(uint32_t dev_id, HSM_HASH_START_INFO *hash_start_info);
|
||||
TEE_Result TEE_HSM_HashProcess(uint32_t dev_id, HSM_HASH_PROCESS_INFO *hash_process_info);
|
||||
TEE_Result TEE_HSM_HashFinish(uint32_t dev_id, HSM_HASH_FINISH_INFO *hash_finish_info);
|
||||
TEE_Result TEE_HSM_MacStart(uint32_t dev_id, HSM_MAC_START_INFO *mac_start_info);
|
||||
TEE_Result TEE_HSM_MacProcess(uint32_t dev_id, HSM_MAC_PROCESS_INFO *mac_process_info);
|
||||
TEE_Result TEE_HSM_MacFinish(uint32_t dev_id, HSM_MAC_FINISH_INFO *mac_finish_info);
|
||||
TEE_Result TEE_HSM_SignStart(uint32_t dev_id, HSM_SIGN_START_INFO *sign_start_info);
|
||||
TEE_Result TEE_HSM_SignProcess(uint32_t dev_id, HSM_SIGN_PROCESS_INFO *sign_process_info);
|
||||
TEE_Result TEE_HSM_SignFinish(uint32_t dev_id, HSM_SIGN_FINISH_INFO *sign_finish_info);
|
||||
TEE_Result TEE_HSM_VerifyStart(uint32_t dev_id, HSM_VERIFY_START_INFO *verify_start_info);
|
||||
TEE_Result TEE_HSM_VerifyProcess(uint32_t dev_id, HSM_VERIFY_PROCESS_INFO *verify_process_info);
|
||||
TEE_Result TEE_HSM_VerifyFinish(uint32_t dev_id, HSM_VERIFY_FINISH_INFO *verify_finish_info);
|
||||
TEE_Result TEE_HSM_GetRandom(uint32_t dev_id, HSM_GET_RANDOM_INFO *random_info);
|
||||
|
||||
#endif
|
||||
Vendored
-29
@@ -1,29 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2012-2020. All rights reserved.
|
||||
* Description: HSM crypto api function head
|
||||
* Author: chenyao
|
||||
* Create: 2020-01-08
|
||||
*/
|
||||
#ifndef _HSM_CRYPTO_INTERNAL_H_
|
||||
#define _HSM_CRYPTO_INTERNAL_H_
|
||||
|
||||
#include "hsm_public.h"
|
||||
#include "hsm_crypto_api.h"
|
||||
|
||||
TEE_Result cipher_init_para_check(HSM_CIPHER_START_INFO *cipher_start_info);
|
||||
TEE_Result cipher_init_request_sharemem(uint8_t **buffer_local, uint32_t *buffer_size,
|
||||
HSM_CIPHER_START_INFO *cipher_start_info);
|
||||
TEE_Result mac_init_para_check(HSM_MAC_START_INFO *mac_start_info);
|
||||
TEE_Result mac_init_request_sharemem(uint8_t **buffer_local, uint32_t *buffer_size,
|
||||
HSM_MAC_START_INFO *mac_start_info);
|
||||
TEE_Result hash_init_para_check(HSM_HASH_START_INFO *hash_start_info);
|
||||
TEE_Result hash_init_request_sharemem(uint8_t **buffer_local, uint32_t *buffer_size,
|
||||
HSM_HASH_START_INFO *hash_start_info);
|
||||
TEE_Result sign_init_para_check(HSM_SIGN_START_INFO *sign_start_info);
|
||||
TEE_Result sign_init_request_sharemem(uint8_t **buffer_local, uint32_t *buffer_size,
|
||||
HSM_SIGN_START_INFO *sign_start_info);
|
||||
TEE_Result verify_init_para_check(HSM_VERIFY_START_INFO *verify_start_info);
|
||||
TEE_Result verify_init_request_sharemem(uint8_t **buffer_local, uint32_t *buffer_size,
|
||||
HSM_VERIFY_START_INFO *verify_start_info);
|
||||
|
||||
#endif
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved.
|
||||
* Description: HSM efuse api function
|
||||
* Author: chenyao
|
||||
* Create: 2020-04-26
|
||||
*/
|
||||
#ifndef _HSM_EFUSE_API_H_
|
||||
#define _HSM_EFUSE_API_H_
|
||||
|
||||
TEE_Result TEE_HSM_RIM_UpDate(uint32_t dev_id, uint8_t *rim_info, uint32_t rim_size);
|
||||
TEE_Result TEE_HSM_Power_On(uint32_t dev_id);
|
||||
TEE_Result TEE_HSM_Power_Off(uint32_t dev_id);
|
||||
|
||||
#endif
|
||||
-32
@@ -1,32 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2021-2021. All rights reserved.
|
||||
* Description: HSM fuzz service test client api
|
||||
* Author: chenyao
|
||||
* Create: 2021-06-17
|
||||
*/
|
||||
#ifndef _HSM_FUZZ_API_H_
|
||||
#define _HSM_FUZZ_API_H_
|
||||
|
||||
#define IMG_ADDR_SIZE 8
|
||||
#define IMG_LEN_SIZE 4
|
||||
#define IMG_ID_SIZE 4
|
||||
|
||||
TEE_Result TEE_HSM_SERVICE_FUZZ(uint8_t *service_msg, uint32_t msg_size, uint8_t *service_data, uint32_t data_size);
|
||||
|
||||
typedef struct {
|
||||
uint32_t cmd;
|
||||
uint32_t ddr_para_num;
|
||||
uint32_t param_len_0;
|
||||
uint32_t param_len_1;
|
||||
uint32_t param_len_2;
|
||||
uint32_t param_len_3;
|
||||
uint32_t param_len_4;
|
||||
uint32_t param_len_5;
|
||||
uint32_t param_len_6;
|
||||
uint32_t param_len_7;
|
||||
uint8_t *buffer;
|
||||
uint32_t buffer_len;
|
||||
} FUZZ_SERVICE_S;
|
||||
|
||||
|
||||
#endif
|
||||
-148
@@ -1,148 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2019-2020. All rights reserved.
|
||||
* Description: HSM kms api function head
|
||||
* Author: chenyao
|
||||
* Create: 2020-01-08
|
||||
*/
|
||||
#ifndef _HSM_KMS_API_H_
|
||||
#define _HSM_KMS_API_H_
|
||||
|
||||
#include "hsm_public.h"
|
||||
|
||||
typedef struct {
|
||||
uint32_t alg_id;
|
||||
CRYPTO_KEY_ELEMENT symkey;
|
||||
uint8_t *symkey_auth;
|
||||
uint32_t symkey_authsize;
|
||||
uint8_t *symkey_protectmsg;
|
||||
} HSM_GENERATE_SYMKEY_INFO;
|
||||
|
||||
typedef struct {
|
||||
uint32_t alg_id;
|
||||
CRYPTO_KEY_ELEMENT prikey;
|
||||
CRYPTO_KEY_ELEMENT pubkey;
|
||||
uint8_t *key_auth;
|
||||
uint32_t key_authsize;
|
||||
uint8_t *prikey_protectmsg;
|
||||
uint8_t *pubkey_protectmsg;
|
||||
} HSM_GENERATE_ASYMKEY_INFO;
|
||||
|
||||
typedef struct {
|
||||
uint32_t alg_id;
|
||||
uint32_t salt_size;
|
||||
uint32_t irt_num;
|
||||
uint8_t *salt;
|
||||
CRYPTO_KEY_ELEMENT c_key;
|
||||
uint8_t *key_auth;
|
||||
uint32_t key_authsize;
|
||||
uint8_t *key_protectmsg;
|
||||
} HSM_DERIVE_HUK_INFO;
|
||||
|
||||
typedef struct {
|
||||
uint32_t alg_id;
|
||||
uint32_t salt_size;
|
||||
uint32_t irt_num;
|
||||
uint8_t *salt;
|
||||
CRYPTO_KEY_ELEMENT source_key;
|
||||
uint8_t *source_key_auth;
|
||||
uint32_t source_key_authsize;
|
||||
uint8_t *source_key_protectmsg;
|
||||
CRYPTO_KEY_ELEMENT target_key;
|
||||
uint8_t *target_key_auth;
|
||||
uint32_t target_key_authsize;
|
||||
uint8_t *target_key_protectmsg;
|
||||
} HSM_DERIVE_KEY_INFO;
|
||||
|
||||
typedef struct {
|
||||
uint32_t alg_id;
|
||||
uint32_t salt_size;
|
||||
uint32_t irt_num;
|
||||
uint8_t *salt;
|
||||
CRYPTO_KEY_ELEMENT import_key;
|
||||
uint8_t *import_key_auth;
|
||||
uint32_t import_key_authsize;
|
||||
uint8_t *import_key_info;
|
||||
uint8_t *import_key_protectmsg;
|
||||
} HSM_IMPORT_KEY_INFO;
|
||||
|
||||
typedef struct {
|
||||
uint32_t alg_id;
|
||||
CRYPTO_KEY_ELEMENT exchange_pubkey;
|
||||
uint8_t *exchange_pubkey_auth;
|
||||
uint32_t exchange_pubkey_authsize;
|
||||
uint8_t *exchange_pubkey_protectmsg;
|
||||
uint8_t *generate_pubkey;
|
||||
uint32_t generate_pubkey_len;
|
||||
uint8_t *generate_key_domain;
|
||||
} HSM_EXCHANGE_PUBKEY_INFO;
|
||||
|
||||
typedef struct {
|
||||
uint32_t alg_id;
|
||||
CRYPTO_KEY_ELEMENT exchange_prikey;
|
||||
uint8_t *exchange_prikey_auth;
|
||||
uint32_t exchange_prikey_authsize;
|
||||
uint8_t *exchange_prikey_protectmsg;
|
||||
uint8_t *exchange_pubkey;
|
||||
uint32_t exchange_pubkey_len;
|
||||
CRYPTO_KEY_ELEMENT exchange_key;
|
||||
uint8_t *exchange_key_auth;
|
||||
uint32_t exchange_key_authsize;
|
||||
uint8_t *exchange_key_protectmsg;
|
||||
uint8_t *agree_key_domain;
|
||||
uint32_t domain_size;
|
||||
} HSM_EXCHANGE_KEY_INFO;
|
||||
|
||||
typedef struct {
|
||||
uint32_t alg_id;
|
||||
CRYPTO_KEY_ELEMENT prokey;
|
||||
uint8_t *prokey_auth;
|
||||
uint32_t prokey_authsize;
|
||||
uint8_t *prokey_protectmsg;
|
||||
} HSM_UPDATE_PROKEY_INFO;
|
||||
|
||||
typedef struct {
|
||||
uint8_t *past_key_auth;
|
||||
uint32_t past_key_authsize;
|
||||
uint8_t *key_protectmsg;
|
||||
uint8_t *new_key_auth;
|
||||
uint32_t new_key_authsize;
|
||||
} HSM_UPDATE_KEYAUTH_INFO;
|
||||
|
||||
typedef struct {
|
||||
uint8_t *delete_key_auth;
|
||||
uint32_t delete_key_authsize;
|
||||
uint8_t *delete_key_protectmsg;
|
||||
} HSM_DELETE_KEY_INFO;
|
||||
|
||||
typedef struct {
|
||||
uint32_t alg_id;
|
||||
uint32_t salt_size;
|
||||
uint32_t irt_num;
|
||||
uint8_t *salt;
|
||||
CRYPTO_KEY_ELEMENT export_key;
|
||||
uint8_t *export_key_auth;
|
||||
uint32_t export_key_authsize;
|
||||
uint8_t *export_key_protectmsg;
|
||||
uint8_t *export_key_info;
|
||||
} HSM_EXPORT_KEY_INFO;
|
||||
|
||||
typedef struct {
|
||||
uint32_t *state;
|
||||
uint8_t *append_data;
|
||||
} HSM_BBOX_INFO;
|
||||
|
||||
TEE_Result TEE_HSM_GenSymeticKey(uint32_t dev_id, HSM_GENERATE_SYMKEY_INFO *generate_symkey_info);
|
||||
TEE_Result TEE_HSM_GenAsymeticKey(uint32_t dev_id, HSM_GENERATE_ASYMKEY_INFO *generate_asymkey_info);
|
||||
TEE_Result TEE_HSM_DeriveHuk(uint32_t dev_id, HSM_DERIVE_HUK_INFO *derive_huk_info);
|
||||
TEE_Result TEE_HSM_DeriveKey(uint32_t dev_id, HSM_DERIVE_KEY_INFO *derive_key_info);
|
||||
TEE_Result TEE_HSM_ImportKey(uint32_t dev_id, HSM_IMPORT_KEY_INFO *import_key_info);
|
||||
TEE_Result TEE_HSM_ExchangePubKey(uint32_t dev_id, HSM_EXCHANGE_PUBKEY_INFO *exchange_pubkey);
|
||||
TEE_Result TEE_HSM_ExchangeAgreeKey(uint32_t dev_id, HSM_EXCHANGE_KEY_INFO *exchange_agree_key);
|
||||
TEE_Result TEE_HSM_UpdateProtectMsg(uint32_t dev_id, HSM_UPDATE_PROKEY_INFO *update_prokey_info);
|
||||
TEE_Result TEE_HSM_UpdateAuth(uint32_t dev_id, HSM_UPDATE_KEYAUTH_INFO *update_keyauth_info);
|
||||
TEE_Result TEE_HSM_DeleteKey(uint32_t dev_id, HSM_DELETE_KEY_INFO *delete_key_info);
|
||||
TEE_Result TEE_HSM_ExportKey(uint32_t dev_id, HSM_EXPORT_KEY_INFO *export_key_info);
|
||||
TEE_Result TEE_HSM_Bbox(uint32_t dev_id, HSM_BBOX_INFO *hsm_bbox_info, uint64_t tv_sec, uint64_t tv_usec);
|
||||
TEE_Result TEE_HSM_notify_prereset(uint32_t dev_id);
|
||||
|
||||
#endif
|
||||
-50
@@ -1,50 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2012-2020. All rights reserved.
|
||||
* Description: HSM kms internal function head
|
||||
* Author: chenyao
|
||||
* Create: 2019-01-08
|
||||
*/
|
||||
#ifndef _HSM_KMS_INTERNAL_H_
|
||||
#define _HSM_KMS_INTERNAL_H_
|
||||
|
||||
#include "hsm_public.h"
|
||||
#include "hsm_kms_api.h"
|
||||
#include "tee_service_public.h"
|
||||
|
||||
TEE_Result generate_symkey_para_check(HSM_GENERATE_SYMKEY_INFO *generate_symkey_info);
|
||||
TEE_Result generate_symkey_request_sharemem(uint8_t **buffer_local, uint32_t *buffer_size,
|
||||
HSM_GENERATE_SYMKEY_INFO *generate_symkey_info);
|
||||
TEE_Result hsm_asymetickey_rsp(tee_service_ipc_msg_rsp *rsp, HSM_GENERATE_ASYMKEY_INFO *generate_asymkey_info,
|
||||
uint8_t *buffer_local);
|
||||
TEE_Result generate_asymkey_para_check(HSM_GENERATE_ASYMKEY_INFO *generate_asymkey_info);
|
||||
TEE_Result generate_asymkey_request_sharemem(uint8_t **buffer_local, uint32_t *buffer_size,
|
||||
HSM_GENERATE_ASYMKEY_INFO *generate_asymkey_info);
|
||||
TEE_Result derive_huk_para_check(HSM_DERIVE_HUK_INFO *derive_huk_info);
|
||||
TEE_Result derive_huk_request_sharemem(uint8_t **buffer_local, uint32_t *buffer_size,
|
||||
HSM_DERIVE_HUK_INFO *derive_huk_info);
|
||||
TEE_Result derive_key_para_check(HSM_DERIVE_KEY_INFO *derive_key_info);
|
||||
TEE_Result derive_key_request_sharemem(uint8_t **buffer_local, uint32_t *buffer_size,
|
||||
HSM_DERIVE_KEY_INFO *derive_key_info);
|
||||
TEE_Result import_key_para_check(HSM_IMPORT_KEY_INFO *import_key_info);
|
||||
TEE_Result import_key_request_sharemem(uint8_t **buffer_local, uint32_t *buffer_size,
|
||||
HSM_IMPORT_KEY_INFO *import_key_info);
|
||||
TEE_Result exchange_pubkey_para_check(HSM_EXCHANGE_PUBKEY_INFO *exchange_pubkey);
|
||||
TEE_Result exchange_pubkey_request_sharemem(uint8_t **buffer_local, uint32_t *buffer_size,
|
||||
HSM_EXCHANGE_PUBKEY_INFO *exchange_pubkey);
|
||||
TEE_Result exchange_agree_key_para_check(HSM_EXCHANGE_KEY_INFO *exchange_agree_key);
|
||||
TEE_Result exchange_agree_key_request_sharemem(uint8_t **buffer_local, uint32_t *buffer_size,
|
||||
HSM_EXCHANGE_KEY_INFO *exchange_agree_key);
|
||||
TEE_Result update_prokey_para_check(HSM_UPDATE_PROKEY_INFO *update_prokey_info);
|
||||
TEE_Result update_prokey_request_sharemem(uint8_t **buffer_local, uint32_t *buffer_size,
|
||||
HSM_UPDATE_PROKEY_INFO *update_prokey_info);
|
||||
TEE_Result update_keyauth_para_check(HSM_UPDATE_KEYAUTH_INFO *update_keyauth_info);
|
||||
TEE_Result update_keyauth_request_sharemem(uint8_t **buffer_local, uint32_t *buffer_size,
|
||||
HSM_UPDATE_KEYAUTH_INFO *update_keyauth_info);
|
||||
TEE_Result delete_key_para_check(HSM_DELETE_KEY_INFO *delete_key_info);
|
||||
TEE_Result delete_key_request_sharemem(uint8_t **buffer_local, uint32_t *buffer_size,
|
||||
HSM_DELETE_KEY_INFO *delete_key_info);
|
||||
TEE_Result export_key_para_check(HSM_EXPORT_KEY_INFO *export_key_info);
|
||||
TEE_Result export_key_request_sharemem(uint8_t **buffer_local, uint32_t *buffer_size,
|
||||
HSM_EXPORT_KEY_INFO *export_key_info);
|
||||
|
||||
#endif
|
||||
-134
@@ -1,134 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2012-2020. All rights reserved.
|
||||
* Description: hsm_public function head
|
||||
* Author: chenyao
|
||||
* Create: 2020-01-08
|
||||
*/
|
||||
#ifndef _HSM_PUBLIC_H_
|
||||
#define _HSM_PUBLIC_H_
|
||||
|
||||
#include "tee_defines.h"
|
||||
#include "tee_inner_uuid.h"
|
||||
|
||||
/* MODE */
|
||||
#define HSM_DERIVE_KEY_HEAD 12
|
||||
#define HSM_KEY_HEAD_SIZE 12
|
||||
#define HSM_KEY_INFO_SIZE 44
|
||||
|
||||
#define HSM_MSG_RESUME 0
|
||||
#define HSM_CLIENT_DDR_LEN 3072
|
||||
#define HSM_CONST_SHIFT_32 32
|
||||
#define HSM_IV_SIZE 16
|
||||
#define HSM_ALG_SIZE 4
|
||||
#define HSM_SALT_SIZE 4
|
||||
#define HSM_IRT_NUM_SIZE 4
|
||||
#define HSM_SESSION_HANDLE_SIZE 4
|
||||
#define HSM_RANDOM_SIZE 4
|
||||
#define HSM_SIGN_VER_SALT_LEN 32
|
||||
#define HSM_KEY_ELEMENT_SIZE 32
|
||||
#define HSM_DOMAIN_SIZE 512
|
||||
|
||||
#define HSM_KEY_PROTECT_SIZE 152
|
||||
#define HSM_CHUNK_SIZE 512
|
||||
#define HSM_BLOCK_SIZE 1
|
||||
#define HSM_IV_TWICE_SIZE 32
|
||||
#define HSM_COUNTER_ID_SIZE 4
|
||||
#define HSM_COUNTER_VALUE_SIZE 8
|
||||
#define HSM_UNIT_COUNTER_SIZE 44
|
||||
#define HSM_COUNTER_SIZE (44 + 16 * HSM_UNIT_COUNTER_SIZE)
|
||||
#define HSM_RIM_INFO_SIZE 544
|
||||
#define HSM_ROOT_KEY_SIZE 1024
|
||||
|
||||
/* MAX SIZE OF ALL LEN IN CPY */
|
||||
#define HSM_SYMKEY_MAX_SIZE 64
|
||||
#define HSM_ASYMKEY_MAX_SIZE 1280
|
||||
#define HSM_IV_MAX_SIZE 16
|
||||
#define HSM_AUTH_MAX_SIZE 32
|
||||
#define HSM_PROTECTMSG_MAX_SIZE 184
|
||||
#define HSM_SIGN_MAX_SIZE 512
|
||||
#define HSM_SALT_MAX_SIZE 64
|
||||
#define HSM_KEY_APPEND_SIZE 44
|
||||
#define HSM_RIM_MAX_SIZE 1568
|
||||
#define HSM_BBOX_TIMEOUT 0x5A5A5A5A
|
||||
|
||||
/* HSM ALG CHOOSE */
|
||||
#define HSM_VER_SUCCESS 0x5A5A5A5A
|
||||
#define HSM_VER_FAIL 0xA5A5A5A5
|
||||
|
||||
typedef struct {
|
||||
uint32_t cryptokeyelementid;
|
||||
uint8_t cryptokeyelementtype;
|
||||
uint8_t cryptokeyelementreadaccess;
|
||||
uint8_t cryptokeyelementwriteaccess;
|
||||
uint8_t cryptokeyelementallowpartialaccess;
|
||||
uint32_t cryptokeyelementalgid0;
|
||||
uint32_t cryptokeyelementalgid1;
|
||||
uint32_t cryptokeyelementallowusage;
|
||||
uint32_t cryptokeyelementvaliduntil;
|
||||
uint8_t cryptokeyelementallowprovider;
|
||||
uint8_t cryptokeyelementallowpersist;
|
||||
uint16_t cryptokeyelementformat;
|
||||
uint32_t cryptokeyelementsize;
|
||||
uint8_t *cryptokeyelementvalueref;
|
||||
} CRYPTO_KEY_ELEMENT;
|
||||
|
||||
/* the num hsm service ipc cmd should begin 0x3300 */
|
||||
enum HSM_IPC_MSG_CMD {
|
||||
/* crypto cmd */
|
||||
HSM_CIPHER_START_CMD = 0x3300,
|
||||
HSM_CIPHER_PROCESS_CMD = 0x3301,
|
||||
HSM_CIPHER_FINISH_CMD = 0x3302,
|
||||
HSM_MAC_START_CMD = 0x3303,
|
||||
HSM_MAC_PROCESS_CMD = 0x3304,
|
||||
HSM_MAC_FINISH_CMD = 0x3305,
|
||||
HSM_HASH_START_CMD = 0x3306,
|
||||
HSM_HASH_PROCESS_CMD = 0x3307,
|
||||
HSM_HASH_FINISH_CMD = 0x3308,
|
||||
HSM_SIGN_START_CMD = 0x3309,
|
||||
HSM_SIGN_PROCESS_CMD = 0x330a,
|
||||
HSM_SIGN_FINISH_CMD = 0x330b,
|
||||
HSM_VERIFY_START_CMD = 0x330c,
|
||||
HSM_VERIFY_PROCESS_CMD = 0x330d,
|
||||
HSM_VERIFY_FINISH_CMD = 0x330e,
|
||||
HSM_GET_RANDOM_CMD = 0x330f,
|
||||
|
||||
/* key management cmd */
|
||||
HSM_GENERATE_SYMKEY_CMD = 0x3310,
|
||||
HSM_GENERATE_ASYMKEY_CMD = 0x3311,
|
||||
HSM_DERIVE_HUK_CMD = 0x3312,
|
||||
HSM_DERIVE_KEY_CMD = 0x3313,
|
||||
HSM_EXCHANGE_CAL_PUB_CMD = 0x3314,
|
||||
HSM_EXCHANGE_AGREE_KEY_CMD = 0x3315,
|
||||
HSM_IMPORT_KEY_CMD = 0x3316,
|
||||
HSM_EXPORT_KEY_CMD = 0x3317,
|
||||
HSM_UPDATE_PROTECT_KEY_CMD = 0x3318,
|
||||
HSM_UPDATE_KEY_AUTH_CMD = 0x3319,
|
||||
HSM_DELETE_KEY_CMD = 0x331a,
|
||||
HSM_UNWRAP_KEY_CMD = 0x331b,
|
||||
HSM_BBOX_CMD = 0x331c,
|
||||
HSM_COUNTER_INIT_CMD = 0x331d,
|
||||
HSM_COUNTER_CREATE_CMD = 0x331e,
|
||||
HSM_COUNTER_READ_CMD = 0x331f,
|
||||
HSM_COUNTER_DELETE_CMD = 0x3320,
|
||||
HSM_COUNTER_INC_CMD = 0x3321,
|
||||
HSM_ALG_CHECK_CMD = 0x3322,
|
||||
HSM_SOC_VERIFY_CMD = 0x3323,
|
||||
HSM_RIM_VALUE_UPDATE_CMD = 0x3324,
|
||||
HSM_EFUSE_POWER_ON_CMD = 0x3325,
|
||||
HSM_EFUSE_POWER_OFF_CMD = 0x3326,
|
||||
HSM_HBOOT1A_TRANS_CMD = 0x3327,
|
||||
|
||||
/* notify prereset cmd */
|
||||
HSM_NOTIFY_PRERESET_CMD = 0x5000,
|
||||
|
||||
/* notify prereset cmd */
|
||||
HSM_SERVICE_FUZZ_CMD = 0x6000,
|
||||
|
||||
/* rpmb ak key */
|
||||
HSM_GEN_RPMBKEY_CMD = 0x9000,
|
||||
HSM_GEN_RPMB_WARPPINGKEY_CMD = 0x9001,
|
||||
};
|
||||
|
||||
static const TEE_UUID g_hsm_uuid = TEE_SERVICE_HSM;
|
||||
|
||||
#endif
|
||||
-18
@@ -1,18 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2019-2020. All rights reserved.
|
||||
* Description: HSM rpmb ak key provide api head
|
||||
* Author: chenyao
|
||||
* Create: 2020-05-06
|
||||
*/
|
||||
#ifndef _HSM_RPMB_API_H_
|
||||
#define _HSM_RPMB_API_H_
|
||||
|
||||
#define HSM_RPMB_KEY_LEN 32
|
||||
#define HSM_RPMB_WRAPPING_KEY_LEN 80
|
||||
#define HSM_RPMB_FILE_LEN 9
|
||||
#define HSM_RPMB_BUFFER_LEN 128
|
||||
|
||||
TEE_Result TEE_HSM_GenRpmbKey(uint32_t dev_id, uint8_t *rpmb_key);
|
||||
TEE_Result TEE_HSM_GenRpmbWrappingKey(uint32_t dev_id, uint8_t *rpmb_wrapping_key);
|
||||
|
||||
#endif
|
||||
-17
@@ -1,17 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved.
|
||||
* Description: HSM verify api function
|
||||
* Author: chenyao
|
||||
* Create: 2020-05-21
|
||||
*/
|
||||
#ifndef _HSM_VERIFY_API_H_
|
||||
#define _HSM_VERIFY_API_H_
|
||||
|
||||
#define IMG_ADDR_SIZE 8
|
||||
#define IMG_LEN_SIZE 4
|
||||
#define IMG_ID_SIZE 4
|
||||
|
||||
TEE_Result TEE_HSM_SOC_VERIFY(uint32_t dev_id, uint64_t image_addr, uint32_t image_len, uint32_t img_id);
|
||||
TEE_Result TEE_HSM_Hboot1a_Trans(uint32_t dev_id);
|
||||
|
||||
#endif
|
||||
-366
@@ -1,366 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2019-2020. All rights reserved.
|
||||
* Description: HSM counter api function and algorithm check
|
||||
* Author: chenyao
|
||||
* Create: 2020-01-08
|
||||
* Notes:
|
||||
* History: 2020-01-08 chenyao create hsm_kms api functions.
|
||||
*/
|
||||
#include <stdarg.h>
|
||||
#include "ta_framework.h"
|
||||
#include "tee_log.h"
|
||||
#include "tee_obj.h"
|
||||
#include "securec.h"
|
||||
#include "string.h"
|
||||
#include "tee_service_public.h"
|
||||
#include "hsm_counter_api.h"
|
||||
#include "hsm_public.h"
|
||||
#include "hsm_counter_internal.h"
|
||||
|
||||
/*
|
||||
* @brief : Hsm Counter init.
|
||||
* @param[in] : counter function.
|
||||
* @return : Operation status: success(0) or other failure status.
|
||||
*/
|
||||
TEE_Result TEE_HSM_CounterInit(uint32_t dev_id, uint8_t *counter_info)
|
||||
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size = HSM_CLIENT_DDR_LEN;
|
||||
uint32_t count_size;
|
||||
uint32_t state;
|
||||
|
||||
buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (buffer_local == NULL) {
|
||||
return TEE_ERROR_READ_DATA;
|
||||
}
|
||||
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg3 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_COUNTER_INIT_CMD, &msg, HSM_COUNTER_INIT_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
if (ret == TEE_SUCCESS) {
|
||||
count_size = (uint32_t)(rsp.msg.args_data.arg2 >> HSM_CONST_SHIFT_32);
|
||||
if (count_size > HSM_CLIENT_DDR_LEN) {
|
||||
goto HSM_COUNTER_INIT_Ex_Handle;
|
||||
}
|
||||
state = memcpy_s((void *)counter_info, HSM_CLIENT_DDR_LEN, buffer_local, count_size);
|
||||
if (state != EOK) {
|
||||
goto HSM_COUNTER_INIT_Ex_Handle;
|
||||
}
|
||||
}
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
|
||||
HSM_COUNTER_INIT_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
/*
|
||||
* @brief : Hsm Counter create.
|
||||
* @param[in] : counter create function.
|
||||
* @return : Operation status: success(0) or other failure status.
|
||||
*/
|
||||
TEE_Result TEE_HSM_CounterCreate(uint32_t dev_id, HSM_COUNT_CREATE_INFO *count_create_info)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size = HSM_CLIENT_DDR_LEN;
|
||||
uint32_t size0;
|
||||
uint32_t size1;
|
||||
uint32_t state;
|
||||
|
||||
ret = counter_create_para_check(count_create_info);
|
||||
if (ret != TEE_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = counter_create_request_sharemem(&buffer_local, &buffer_size, count_create_info);
|
||||
if (ret != TEE_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = ((uint64_t)(HSM_IV_SIZE +
|
||||
count_create_info->counter_auth_len) << HSM_CONST_SHIFT_32) | (uint64_t)(HSM_COUNTER_SIZE);
|
||||
msg.args_data.arg3 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_COUNTER_CREATE_CMD, &msg, HSM_COUNTER_CREATE_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
if (ret == TEE_SUCCESS) {
|
||||
size0 = (uint32_t)(rsp.msg.args_data.arg2 >> HSM_CONST_SHIFT_32);
|
||||
size1 = (uint32_t)(rsp.msg.args_data.arg2);
|
||||
if ((size0 > HSM_COUNTER_ID_SIZE) || (size1 > HSM_COUNTER_SIZE)) {
|
||||
goto HSM_COUNTER_CREATE_Ex_Handle;
|
||||
}
|
||||
state = memmove_s(count_create_info->counter_id, size0, buffer_local, size0);
|
||||
if (state != EOK) {
|
||||
goto HSM_COUNTER_CREATE_Ex_Handle;
|
||||
}
|
||||
state = memmove_s(count_create_info->counter_info, size1, buffer_local + size0, size1);
|
||||
if (state != EOK) {
|
||||
goto HSM_COUNTER_CREATE_Ex_Handle;
|
||||
}
|
||||
}
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
|
||||
HSM_COUNTER_CREATE_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
/*
|
||||
* @brief : Hsm Counter read.
|
||||
* @param[in] : counter read function.
|
||||
* @return : Operation status: success(0) or other failure status.
|
||||
*/
|
||||
TEE_Result TEE_HSM_CounterRead(uint32_t dev_id, HSM_COUNT_READ_INFO *count_read_info)
|
||||
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size = HSM_CLIENT_DDR_LEN;
|
||||
uint32_t size0;
|
||||
uint32_t state;
|
||||
|
||||
ret = counter_read_para_check(count_read_info);
|
||||
if (ret != TEE_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = counter_read_request_sharemem(&buffer_local, &buffer_size, count_read_info);
|
||||
if (ret != TEE_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = ((uint64_t)(HSM_COUNTER_ID_SIZE) << HSM_CONST_SHIFT_32) | (uint64_t)(HSM_COUNTER_SIZE);
|
||||
msg.args_data.arg3 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_COUNTER_READ_CMD, &msg, HSM_COUNTER_READ_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
if (ret == TEE_SUCCESS) {
|
||||
size0 = (uint32_t)(rsp.msg.args_data.arg2 >> HSM_CONST_SHIFT_32);
|
||||
if (size0 > HSM_COUNTER_VALUE_SIZE) {
|
||||
goto HSM_COUNTER_READ_Ex_Handle;
|
||||
}
|
||||
state = memmove_s(count_read_info->count_value, size0, buffer_local, size0);
|
||||
if (state != EOK) {
|
||||
goto HSM_COUNTER_READ_Ex_Handle;
|
||||
}
|
||||
}
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
|
||||
HSM_COUNTER_READ_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
/*
|
||||
* @brief : Hsm Counter delete.
|
||||
* @param[in] : counter deete function.
|
||||
* @return : Operation status: success(0) or other failure status.
|
||||
*/
|
||||
TEE_Result TEE_HSM_CounterDelete(uint32_t dev_id, HSM_COUNT_DELETE_INFO *count_delete_info)
|
||||
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size = HSM_CLIENT_DDR_LEN;
|
||||
uint32_t size0;
|
||||
uint32_t state;
|
||||
|
||||
ret = counter_delete_para_check(count_delete_info);
|
||||
if (ret != TEE_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = counter_delete_request_sharemem(&buffer_local, &buffer_size, count_delete_info);
|
||||
if (ret != TEE_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = ((uint64_t)(HSM_COUNTER_ID_SIZE) << HSM_CONST_SHIFT_32) |
|
||||
(uint64_t)(HSM_IV_SIZE + count_delete_info->counter_auth_len);
|
||||
msg.args_data.arg3 = ((uint64_t)(HSM_COUNTER_SIZE) << HSM_CONST_SHIFT_32) | HSM_MSG_RESUME;
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_COUNTER_DELETE_CMD, &msg, HSM_COUNTER_DELETE_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
if (ret == TEE_SUCCESS) {
|
||||
size0 = (uint32_t)(rsp.msg.args_data.arg2 >> HSM_CONST_SHIFT_32);
|
||||
if (size0 > HSM_COUNTER_SIZE) {
|
||||
goto HSM_COUNTER_DELETE_Ex_Handle;
|
||||
}
|
||||
state = memmove_s(count_delete_info->counter_info, size0, buffer_local, size0);
|
||||
if (state != EOK) {
|
||||
goto HSM_COUNTER_DELETE_Ex_Handle;
|
||||
}
|
||||
}
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
|
||||
HSM_COUNTER_DELETE_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
/*
|
||||
* @brief : Hsm Counter inc.
|
||||
* @param[in] : counter inc function.
|
||||
* @return : Operation status: success(0) or other failure status.
|
||||
*/
|
||||
TEE_Result TEE_HSM_CounterInc(uint32_t dev_id, HSM_COUNT_INC_INFO *count_inc_info)
|
||||
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size = HSM_CLIENT_DDR_LEN;
|
||||
uint32_t size0;
|
||||
uint32_t size1;
|
||||
uint32_t state;
|
||||
|
||||
ret = counter_inc_para_check(count_inc_info);
|
||||
if (ret != TEE_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = counter_inc_request_sharemem(&buffer_local, &buffer_size, count_inc_info);
|
||||
if (ret != TEE_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = ((uint64_t)(HSM_COUNTER_ID_SIZE) << HSM_CONST_SHIFT_32) |
|
||||
(uint64_t)(HSM_IV_SIZE + count_inc_info->counter_auth_len);
|
||||
msg.args_data.arg3 = ((uint64_t)(HSM_COUNTER_VALUE_SIZE) << HSM_CONST_SHIFT_32) | (uint64_t)(HSM_COUNTER_SIZE);
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_COUNTER_INC_CMD, &msg, HSM_COUNTER_INC_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
if (ret == TEE_SUCCESS) {
|
||||
size0 = (uint32_t)(rsp.msg.args_data.arg2 >> HSM_CONST_SHIFT_32);
|
||||
size1 = (uint32_t)(rsp.msg.args_data.arg2);
|
||||
if ((size0 > HSM_COUNTER_VALUE_SIZE) || (size1 > HSM_COUNTER_SIZE)) {
|
||||
goto HSM_COUNTER_INC_Ex_Handle;
|
||||
}
|
||||
state = memmove_s(count_inc_info->counter_value, size0, buffer_local, size0);
|
||||
if (state != EOK) {
|
||||
goto HSM_COUNTER_INC_Ex_Handle;
|
||||
}
|
||||
state = memmove_s(count_inc_info->counter_info, size1, buffer_local + size0, size1);
|
||||
if (state != EOK) {
|
||||
goto HSM_COUNTER_INC_Ex_Handle;
|
||||
}
|
||||
}
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
|
||||
HSM_COUNTER_INC_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
/*
|
||||
* @brief : Hsm Algorithm inspection.
|
||||
* @param[in] : counter function.
|
||||
* @return : Operation status: success(0) or other failure status.
|
||||
*/
|
||||
TEE_Result TEE_HSM_AlgCheck(uint32_t dev_id, uint32_t *hsm_accelerator_status, uint32_t hsm_status_len)
|
||||
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size = HSM_CLIENT_DDR_LEN;
|
||||
uint32_t ac_status_len;
|
||||
uint32_t state;
|
||||
|
||||
if ((hsm_accelerator_status == NULL) || (hsm_status_len > HSM_AC_STATUS_CHECK_LEN)) {
|
||||
tloge("wrong parameter in algcheck\n");
|
||||
return TEE_ERROR_READ_DATA;
|
||||
}
|
||||
|
||||
buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (buffer_local == NULL) {
|
||||
return TEE_ERROR_READ_DATA;
|
||||
}
|
||||
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg3 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_ALG_CHECK_CMD, &msg, HSM_ALG_CHECK_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
if (ret == TEE_SUCCESS) {
|
||||
ac_status_len = (uint32_t)(rsp.msg.args_data.arg2 >> HSM_CONST_SHIFT_32);
|
||||
state = memmove_s(hsm_accelerator_status, hsm_status_len, buffer_local, ac_status_len);
|
||||
if (state != EOK) {
|
||||
goto HSM_ALG_CHECK_Ex_Handle;
|
||||
}
|
||||
}
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
|
||||
HSM_ALG_CHECK_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
-219
@@ -1,219 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2019-2020. All rights reserved.
|
||||
* Description: HSM kms internal function.
|
||||
* Author: chenyao
|
||||
* Create: 2020-01-08
|
||||
* Notes:
|
||||
* History: 2020-01-08 chenyao create hsm_kms functions.
|
||||
*/
|
||||
#include <stdarg.h>
|
||||
#include "ta_framework.h"
|
||||
#include "tee_log.h"
|
||||
#include "tee_obj.h"
|
||||
#include "securec.h"
|
||||
#include "string.h"
|
||||
#include "tee_service_public.h"
|
||||
#include "hsm_counter_api.h"
|
||||
#include "hsm_public.h"
|
||||
|
||||
TEE_Result counter_create_para_check(HSM_COUNT_CREATE_INFO *count_create_info)
|
||||
{
|
||||
if ((count_create_info == NULL) || (count_create_info->counter_auth == NULL) ||
|
||||
(count_create_info->counter_info == NULL) || (count_create_info->counter_id == NULL)) {
|
||||
return TEE_ERROR_NO_DATA;
|
||||
}
|
||||
|
||||
if ((count_create_info->counter_auth_len > HSM_AUTH_MAX_SIZE) || (count_create_info->counter_auth_len == 0)) {
|
||||
return TEE_ERROR_NO_DATA;
|
||||
}
|
||||
|
||||
return TEE_SUCCESS;
|
||||
}
|
||||
|
||||
TEE_Result counter_create_request_sharemem(uint8_t **buffer_local, uint32_t *buffer_size,
|
||||
HSM_COUNT_CREATE_INFO *count_create_info)
|
||||
{
|
||||
uint32_t dst_size = HSM_CLIENT_DDR_LEN;
|
||||
uint32_t auth_size = count_create_info->counter_auth_len;
|
||||
uint8_t tmp[HSM_IV_SIZE] = {0};
|
||||
|
||||
*buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (*buffer_local == NULL) {
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
if (memcpy_s(*buffer_local, HSM_IV_SIZE, tmp, HSM_IV_SIZE) != EOK) {
|
||||
goto HSM_COUNTER_CREATE_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(*buffer_local + HSM_IV_SIZE, count_create_info->counter_auth_len,
|
||||
count_create_info->counter_auth, auth_size) != EOK) {
|
||||
goto HSM_COUNTER_CREATE_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(*buffer_local + HSM_IV_SIZE + auth_size, HSM_COUNTER_SIZE,
|
||||
count_create_info->counter_info, HSM_COUNTER_SIZE) != EOK) {
|
||||
goto HSM_COUNTER_CREATE_Ex_Handle;
|
||||
}
|
||||
|
||||
*buffer_size = dst_size;
|
||||
return TEE_SUCCESS;
|
||||
|
||||
HSM_COUNTER_CREATE_Ex_Handle:
|
||||
tloge("%s\n", __func__);
|
||||
__SRE_MemFreeShared(*buffer_local, dst_size);
|
||||
*buffer_local = NULL;
|
||||
return TEE_ERROR_SECURITY;
|
||||
}
|
||||
|
||||
TEE_Result counter_read_para_check(HSM_COUNT_READ_INFO *count_read_info)
|
||||
{
|
||||
if ((count_read_info == NULL) || (count_read_info->count_value == NULL) ||
|
||||
(count_read_info->counter_info == NULL)) {
|
||||
return TEE_ERROR_NO_DATA;
|
||||
}
|
||||
|
||||
return TEE_SUCCESS;
|
||||
}
|
||||
|
||||
TEE_Result counter_read_request_sharemem(uint8_t **buffer_local, uint32_t *buffer_size,
|
||||
HSM_COUNT_READ_INFO *count_read_info)
|
||||
{
|
||||
uint32_t dst_size = HSM_CLIENT_DDR_LEN;
|
||||
|
||||
*buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (*buffer_local == NULL) {
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
if (memmove_s(*buffer_local, HSM_COUNTER_ID_SIZE, &count_read_info->counter_id, HSM_COUNTER_ID_SIZE) != EOK) {
|
||||
goto HSM_COUNTER_READ_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(*buffer_local + HSM_COUNTER_ID_SIZE, HSM_COUNTER_SIZE,
|
||||
count_read_info->counter_info, HSM_COUNTER_SIZE) != EOK) {
|
||||
goto HSM_COUNTER_READ_Ex_Handle;
|
||||
}
|
||||
|
||||
*buffer_size = dst_size;
|
||||
return TEE_SUCCESS;
|
||||
|
||||
HSM_COUNTER_READ_Ex_Handle:
|
||||
tloge("%s\n", __func__);
|
||||
__SRE_MemFreeShared(*buffer_local, dst_size);
|
||||
*buffer_local = NULL;
|
||||
return TEE_ERROR_SECURITY;
|
||||
}
|
||||
|
||||
TEE_Result counter_delete_para_check(HSM_COUNT_DELETE_INFO *count_delete_info)
|
||||
{
|
||||
if ((count_delete_info == NULL) || (count_delete_info->counter_auth == NULL) ||
|
||||
(count_delete_info->counter_info == NULL)) {
|
||||
return TEE_ERROR_NO_DATA;
|
||||
}
|
||||
|
||||
if ((count_delete_info->counter_auth_len > HSM_AUTH_MAX_SIZE) || (count_delete_info->counter_auth_len == 0)) {
|
||||
return TEE_ERROR_NO_DATA;
|
||||
}
|
||||
|
||||
return TEE_SUCCESS;
|
||||
}
|
||||
|
||||
TEE_Result counter_delete_request_sharemem(uint8_t **buffer_local, uint32_t *buffer_size,
|
||||
HSM_COUNT_DELETE_INFO *count_delete_info)
|
||||
{
|
||||
uint32_t dst_size = HSM_CLIENT_DDR_LEN;
|
||||
uint32_t auth_size = count_delete_info->counter_auth_len;
|
||||
uint8_t tmp[HSM_IV_SIZE] = {0};
|
||||
|
||||
*buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (*buffer_local == NULL) {
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
if (memmove_s(*buffer_local, HSM_COUNTER_ID_SIZE, &count_delete_info->counter_id, HSM_COUNTER_ID_SIZE) != EOK) {
|
||||
goto HSM_COUNTER_DELETE_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(*buffer_local + HSM_COUNTER_ID_SIZE, HSM_IV_SIZE, tmp, HSM_IV_SIZE) != EOK) {
|
||||
goto HSM_COUNTER_DELETE_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(*buffer_local + HSM_COUNTER_ID_SIZE + HSM_IV_SIZE, auth_size,
|
||||
count_delete_info->counter_auth, auth_size) != EOK) {
|
||||
goto HSM_COUNTER_DELETE_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(*buffer_local + HSM_COUNTER_ID_SIZE + HSM_IV_SIZE + auth_size, HSM_COUNTER_SIZE,
|
||||
count_delete_info->counter_info, HSM_COUNTER_SIZE) != EOK) {
|
||||
goto HSM_COUNTER_DELETE_Ex_Handle;
|
||||
}
|
||||
|
||||
*buffer_size = dst_size;
|
||||
return TEE_SUCCESS;
|
||||
|
||||
HSM_COUNTER_DELETE_Ex_Handle:
|
||||
tloge("%s\n", __func__);
|
||||
__SRE_MemFreeShared(*buffer_local, dst_size);
|
||||
*buffer_local = NULL;
|
||||
return TEE_ERROR_SECURITY;
|
||||
}
|
||||
|
||||
TEE_Result counter_inc_para_check(HSM_COUNT_INC_INFO *count_inc_info)
|
||||
{
|
||||
if ((count_inc_info == NULL) || (count_inc_info->counter_auth == NULL) ||
|
||||
(count_inc_info->counter_info == NULL) || (count_inc_info->counter_value == NULL)) {
|
||||
return TEE_ERROR_NO_DATA;
|
||||
}
|
||||
|
||||
if ((count_inc_info->counter_auth_len > HSM_AUTH_MAX_SIZE) || (count_inc_info->counter_auth_len == 0)) {
|
||||
return TEE_ERROR_NO_DATA;
|
||||
}
|
||||
|
||||
return TEE_SUCCESS;
|
||||
}
|
||||
|
||||
TEE_Result counter_inc_request_sharemem(uint8_t **buffer_local, uint32_t *buffer_size,
|
||||
HSM_COUNT_INC_INFO *count_inc_info)
|
||||
{
|
||||
uint32_t dst_size = HSM_CLIENT_DDR_LEN;
|
||||
uint32_t auth_size = count_inc_info->counter_auth_len;
|
||||
uint8_t tmp[HSM_IV_SIZE] = {0};
|
||||
|
||||
*buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (*buffer_local == NULL) {
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
if (memmove_s(*buffer_local, HSM_COUNTER_ID_SIZE, &count_inc_info->counter_id, HSM_COUNTER_ID_SIZE) != EOK) {
|
||||
goto HSM_COUNTER_INC_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(*buffer_local + HSM_COUNTER_ID_SIZE, HSM_IV_SIZE, tmp, HSM_IV_SIZE) != EOK) {
|
||||
goto HSM_COUNTER_INC_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(*buffer_local + HSM_COUNTER_ID_SIZE + HSM_IV_SIZE, auth_size,
|
||||
count_inc_info->counter_auth, auth_size) != EOK) {
|
||||
goto HSM_COUNTER_INC_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(*buffer_local + HSM_COUNTER_ID_SIZE + HSM_IV_SIZE + auth_size, HSM_COUNTER_VALUE_SIZE,
|
||||
&count_inc_info->counter_value_add, HSM_COUNTER_VALUE_SIZE) != EOK) {
|
||||
goto HSM_COUNTER_INC_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(*buffer_local + HSM_COUNTER_ID_SIZE + HSM_IV_SIZE + auth_size + HSM_COUNTER_VALUE_SIZE,
|
||||
HSM_COUNTER_SIZE, count_inc_info->counter_info, HSM_COUNTER_SIZE) != EOK) {
|
||||
goto HSM_COUNTER_INC_Ex_Handle;
|
||||
}
|
||||
|
||||
*buffer_size = dst_size;
|
||||
return TEE_SUCCESS;
|
||||
|
||||
HSM_COUNTER_INC_Ex_Handle:
|
||||
tloge("%s\n", __func__);
|
||||
__SRE_MemFreeShared(*buffer_local, dst_size);
|
||||
*buffer_local = NULL;
|
||||
return TEE_ERROR_SECURITY;
|
||||
}
|
||||
-806
@@ -1,806 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2019-2019. All rights reserved.
|
||||
* Description: HSM server client msg communication management.
|
||||
* Author: chenyao
|
||||
* Create: 2020-01-08
|
||||
* Notes:
|
||||
* History: 2020-01-08 chenyao create hsm_crypto api functions.
|
||||
*/
|
||||
#include <stdarg.h>
|
||||
#include "ta_framework.h"
|
||||
#include "tee_mem_mgmt_api.h"
|
||||
#include "tee_log.h"
|
||||
#include "tee_obj.h"
|
||||
#include "securec.h"
|
||||
#include "string.h"
|
||||
#include "tee_service_public.h"
|
||||
#include "hsm_crypto_api.h"
|
||||
#include "hsm_public.h"
|
||||
#include "hsm_crypto_internal.h"
|
||||
|
||||
TEE_Result TEE_HSM_CipherStart(uint32_t dev_id, HSM_CIPHER_START_INFO *cipher_start_info)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size = 0;
|
||||
|
||||
ret = cipher_init_para_check(cipher_start_info);
|
||||
if (ret != TEE_SUCCESS) {
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
ret = cipher_init_request_sharemem(&buffer_local, &buffer_size, cipher_start_info);
|
||||
if (ret != TEE_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
rsp.ret = TEE_FAIL;
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = (((uint64_t)HSM_ALG_SIZE) << HSM_CONST_SHIFT_32) |
|
||||
(uint64_t)(cipher_start_info->cipher_key.cryptokeyelementsize + HSM_KEY_ELEMENT_SIZE);
|
||||
msg.args_data.arg3 = (((uint64_t)(cipher_start_info->cipherkey_authsize + HSM_IV_SIZE)) << HSM_CONST_SHIFT_32) |
|
||||
(uint64_t)(cipher_start_info->cipherkey_authsize + HSM_KEY_PROTECT_SIZE);
|
||||
msg.args_data.arg4 = (((uint64_t)(cipher_start_info->iv_size)) << HSM_CONST_SHIFT_32) |
|
||||
(uint64_t)(cipher_start_info->crypto_service);
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_CIPHER_START_CMD, &msg, HSM_CIPHER_START_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
if (ret == TEE_SUCCESS) {
|
||||
*cipher_start_info->session_handle = *(uint32_t *)(buffer_local);
|
||||
*cipher_start_info->max_chunk_size = HSM_CHUNK_SIZE;
|
||||
*cipher_start_info->chunk_block_size = HSM_BLOCK_SIZE;
|
||||
}
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_CipherProcess(uint32_t dev_id, HSM_CIPHER_PROCESS_INFO *cipher_process_info)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size = HSM_CLIENT_DDR_LEN;
|
||||
|
||||
buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (buffer_local == NULL) {
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
if ((cipher_process_info == NULL) || (cipher_process_info->input_data == NULL) ||
|
||||
(cipher_process_info->input_data_size > HSM_CHUNK_SIZE)) {
|
||||
goto HSM_CIPHER_PROCESS_Ex_Handle;
|
||||
}
|
||||
|
||||
if ((cipher_process_info->output_data == NULL) || (cipher_process_info->output_data_size == NULL)) {
|
||||
goto HSM_CIPHER_PROCESS_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(buffer_local, HSM_SESSION_HANDLE_SIZE,
|
||||
&(cipher_process_info->session_handle), HSM_SESSION_HANDLE_SIZE) != EOK) {
|
||||
goto HSM_CIPHER_PROCESS_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(buffer_local + HSM_SESSION_HANDLE_SIZE, cipher_process_info->input_data_size,
|
||||
cipher_process_info->input_data, cipher_process_info->input_data_size) != EOK) {
|
||||
goto HSM_CIPHER_PROCESS_Ex_Handle;
|
||||
}
|
||||
|
||||
rsp.ret = TEE_FAIL;
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = (((uint64_t)HSM_SESSION_HANDLE_SIZE) << HSM_CONST_SHIFT_32) |
|
||||
(uint64_t)(cipher_process_info->input_data_size);
|
||||
msg.args_data.arg3 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_CIPHER_PROCESS_CMD, &msg, HSM_CIPHER_PROCESS_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
if (ret == TEE_SUCCESS) {
|
||||
*cipher_process_info->output_data_size = (uint32_t)(rsp.msg.args_data.arg2 >> HSM_CONST_SHIFT_32);
|
||||
if ((*cipher_process_info->output_data_size != 0) &&
|
||||
(memmove_s(cipher_process_info->output_data, *cipher_process_info->output_data_size, buffer_local,
|
||||
*cipher_process_info->output_data_size) != EOK)) {
|
||||
goto HSM_CIPHER_PROCESS_Ex_Handle;
|
||||
}
|
||||
}
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
|
||||
return ret;
|
||||
|
||||
HSM_CIPHER_PROCESS_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_CipherFinish(uint32_t dev_id, HSM_CIPHER_FINISH_INFO *cipher_finish_info)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size = HSM_CLIENT_DDR_LEN;
|
||||
|
||||
buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (buffer_local == NULL) {
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
if ((cipher_finish_info == NULL) || (cipher_finish_info->output_data == NULL) ||
|
||||
(cipher_finish_info->output_data_size == NULL)) {
|
||||
goto HSM_CIPHER_FINISH_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(buffer_local, HSM_SESSION_HANDLE_SIZE,
|
||||
&(cipher_finish_info->session_handle), HSM_SESSION_HANDLE_SIZE) != EOK) {
|
||||
goto HSM_CIPHER_FINISH_Ex_Handle;
|
||||
}
|
||||
|
||||
rsp.ret = TEE_FAIL;
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = (((uint64_t)HSM_SESSION_HANDLE_SIZE) << HSM_CONST_SHIFT_32) | HSM_MSG_RESUME;
|
||||
msg.args_data.arg3 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_CIPHER_FINISH_CMD, &msg, HSM_CIPHER_FINISH_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
if (ret == TEE_SUCCESS) {
|
||||
*cipher_finish_info->output_data_size = (uint32_t)(rsp.msg.args_data.arg2 >> HSM_CONST_SHIFT_32);
|
||||
if (memmove_s(cipher_finish_info->output_data, *cipher_finish_info->output_data_size, buffer_local,
|
||||
*cipher_finish_info->output_data_size) != EOK) {
|
||||
goto HSM_CIPHER_FINISH_Ex_Handle;
|
||||
}
|
||||
}
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
|
||||
return ret;
|
||||
|
||||
HSM_CIPHER_FINISH_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_HashStart(uint32_t dev_id, HSM_HASH_START_INFO *hash_start_info)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size = 0;
|
||||
|
||||
ret = hash_init_para_check(hash_start_info);
|
||||
if (ret != TEE_SUCCESS) {
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
ret = hash_init_request_sharemem(&buffer_local, &buffer_size, hash_start_info);
|
||||
if (ret != TEE_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
rsp.ret = TEE_FAIL;
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = (((uint64_t)HSM_ALG_SIZE) << HSM_CONST_SHIFT_32) | HSM_MSG_RESUME;
|
||||
msg.args_data.arg3 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_HASH_START_CMD, &msg, HSM_HASH_START_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
if (ret == TEE_SUCCESS) {
|
||||
*hash_start_info->session_handle = *(uint32_t *)(buffer_local);
|
||||
*hash_start_info->max_chunk_size = HSM_CHUNK_SIZE;
|
||||
*hash_start_info->chunk_block_size = HSM_BLOCK_SIZE;
|
||||
}
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_HashProcess(uint32_t dev_id, HSM_HASH_PROCESS_INFO *hash_process_info)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size = HSM_CLIENT_DDR_LEN;
|
||||
|
||||
buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (buffer_local == NULL) {
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
if ((hash_process_info == NULL) || (hash_process_info->input_data == NULL) ||
|
||||
(hash_process_info->input_data_size > HSM_CHUNK_SIZE)) {
|
||||
goto HSM_HASH_PROCESS_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(buffer_local, HSM_SESSION_HANDLE_SIZE, &(hash_process_info->session_handle),
|
||||
HSM_SESSION_HANDLE_SIZE) != EOK) {
|
||||
goto HSM_HASH_PROCESS_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(buffer_local + HSM_SESSION_HANDLE_SIZE, hash_process_info->input_data_size,
|
||||
hash_process_info->input_data, hash_process_info->input_data_size) != EOK) {
|
||||
goto HSM_HASH_PROCESS_Ex_Handle;
|
||||
}
|
||||
|
||||
rsp.ret = TEE_FAIL;
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = (((uint64_t)HSM_SESSION_HANDLE_SIZE) << HSM_CONST_SHIFT_32) |
|
||||
(uint64_t)(hash_process_info->input_data_size);
|
||||
msg.args_data.arg3 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_HASH_PROCESS_CMD, &msg, HSM_HASH_PROCESS_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
|
||||
HSM_HASH_PROCESS_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_HashFinish(uint32_t dev_id, HSM_HASH_FINISH_INFO *hash_finish_info)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size = HSM_CLIENT_DDR_LEN;
|
||||
|
||||
buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (buffer_local == NULL) {
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
if ((hash_finish_info == NULL) || (hash_finish_info->output_data == NULL) ||
|
||||
(hash_finish_info->output_data_size == NULL)) {
|
||||
goto HSM_HASH_FINISH_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(buffer_local, HSM_SESSION_HANDLE_SIZE, &(hash_finish_info->session_handle),
|
||||
HSM_SESSION_HANDLE_SIZE) != EOK) {
|
||||
goto HSM_HASH_FINISH_Ex_Handle;
|
||||
}
|
||||
|
||||
rsp.ret = TEE_FAIL;
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = (((uint64_t)HSM_SESSION_HANDLE_SIZE) << HSM_CONST_SHIFT_32) | HSM_MSG_RESUME;
|
||||
msg.args_data.arg3 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_HASH_FINISH_CMD, &msg, HSM_HASH_FINISH_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
if (ret == TEE_SUCCESS) {
|
||||
*hash_finish_info->output_data_size = (uint32_t)(rsp.msg.args_data.arg2 >> HSM_CONST_SHIFT_32);
|
||||
if (memmove_s(hash_finish_info->output_data, *hash_finish_info->output_data_size, buffer_local,
|
||||
*hash_finish_info->output_data_size) != EOK) {
|
||||
goto HSM_HASH_FINISH_Ex_Handle;
|
||||
}
|
||||
}
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
|
||||
HSM_HASH_FINISH_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_MacStart(uint32_t dev_id, HSM_MAC_START_INFO *mac_start_info)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size;
|
||||
|
||||
ret = mac_init_para_check(mac_start_info);
|
||||
if (ret != TEE_SUCCESS) {
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
ret = mac_init_request_sharemem(&buffer_local, &buffer_size, mac_start_info);
|
||||
if (ret != TEE_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
rsp.ret = TEE_FAIL;
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = (((uint64_t)HSM_ALG_SIZE) << HSM_CONST_SHIFT_32) |
|
||||
(uint64_t)(mac_start_info->cipher_key.cryptokeyelementsize + HSM_KEY_ELEMENT_SIZE);
|
||||
msg.args_data.arg3 = (((uint64_t)(mac_start_info->cipherkey_authsize + HSM_IV_SIZE)) << HSM_CONST_SHIFT_32) |
|
||||
(uint64_t)(mac_start_info->cipherkey_authsize + HSM_KEY_PROTECT_SIZE);
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_MAC_START_CMD, &msg, HSM_MAC_START_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
if (ret == TEE_SUCCESS) {
|
||||
*mac_start_info->session_handle = *(uint32_t *)(buffer_local);
|
||||
*mac_start_info->max_chunk_size = HSM_CHUNK_SIZE;
|
||||
*mac_start_info->chunk_block_size = HSM_BLOCK_SIZE;
|
||||
}
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_MacProcess(uint32_t dev_id, HSM_MAC_PROCESS_INFO *mac_process_info)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size = HSM_CLIENT_DDR_LEN;
|
||||
|
||||
buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (buffer_local == NULL) {
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
if ((mac_process_info == NULL) || (mac_process_info->input_data == NULL) ||
|
||||
(mac_process_info->input_data_size > HSM_CHUNK_SIZE)) {
|
||||
goto HSM_MAC_PROCESS_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(buffer_local, HSM_SESSION_HANDLE_SIZE, &(mac_process_info->session_handle),
|
||||
HSM_SESSION_HANDLE_SIZE) != EOK) {
|
||||
goto HSM_MAC_PROCESS_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(buffer_local + HSM_SESSION_HANDLE_SIZE, mac_process_info->input_data_size,
|
||||
mac_process_info->input_data, mac_process_info->input_data_size) != EOK) {
|
||||
goto HSM_MAC_PROCESS_Ex_Handle;
|
||||
}
|
||||
|
||||
rsp.ret = TEE_FAIL;
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = (((uint64_t)HSM_SESSION_HANDLE_SIZE) << HSM_CONST_SHIFT_32) |
|
||||
(uint64_t)(mac_process_info->input_data_size);
|
||||
msg.args_data.arg3 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_MAC_PROCESS_CMD, &msg, HSM_MAC_PROCESS_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
|
||||
HSM_MAC_PROCESS_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_MacFinish(uint32_t dev_id, HSM_MAC_FINISH_INFO *mac_finish_info)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size = HSM_CLIENT_DDR_LEN;
|
||||
|
||||
buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (buffer_local == NULL) {
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
if ((mac_finish_info == NULL) || (mac_finish_info->output_data == NULL) ||
|
||||
(mac_finish_info->output_data_size == NULL)) {
|
||||
goto HSM_MAC_FINISH_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(buffer_local, HSM_SESSION_HANDLE_SIZE, &(mac_finish_info->session_handle),
|
||||
HSM_SESSION_HANDLE_SIZE) != EOK) {
|
||||
goto HSM_MAC_FINISH_Ex_Handle;
|
||||
}
|
||||
|
||||
rsp.ret = TEE_FAIL;
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = (((uint64_t)HSM_SESSION_HANDLE_SIZE) << HSM_CONST_SHIFT_32) | HSM_MSG_RESUME;
|
||||
msg.args_data.arg3 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_MAC_FINISH_CMD, &msg, HSM_MAC_FINISH_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
if (ret == TEE_SUCCESS) {
|
||||
*mac_finish_info->output_data_size = (uint32_t)(rsp.msg.args_data.arg2 >> HSM_CONST_SHIFT_32);
|
||||
if (memmove_s(mac_finish_info->output_data, *mac_finish_info->output_data_size, buffer_local,
|
||||
*mac_finish_info->output_data_size) != EOK) {
|
||||
goto HSM_MAC_FINISH_Ex_Handle;
|
||||
}
|
||||
}
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
|
||||
HSM_MAC_FINISH_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_SignStart(uint32_t dev_id, HSM_SIGN_START_INFO *sign_start_info)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size;
|
||||
|
||||
ret = sign_init_para_check(sign_start_info);
|
||||
if (ret != TEE_SUCCESS) {
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
ret = sign_init_request_sharemem(&buffer_local, &buffer_size, sign_start_info);
|
||||
if (ret != TEE_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
rsp.ret = TEE_FAIL;
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = (((uint64_t)HSM_ALG_SIZE) << HSM_CONST_SHIFT_32) |
|
||||
(uint64_t)(sign_start_info->cipher_key.cryptokeyelementsize + HSM_KEY_ELEMENT_SIZE);
|
||||
msg.args_data.arg3 = (((uint64_t)(sign_start_info->cipherkey_authsize + HSM_IV_SIZE)) << HSM_CONST_SHIFT_32) |
|
||||
(uint64_t)(sign_start_info->cipherkey_authsize + HSM_KEY_PROTECT_SIZE);
|
||||
msg.args_data.arg4 = (((uint64_t)HSM_SALT_SIZE) << HSM_CONST_SHIFT_32) | HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_SIGN_START_CMD, &msg, HSM_SIGN_START_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
if (ret == TEE_SUCCESS) {
|
||||
*sign_start_info->session_handle = *(uint32_t *)(buffer_local);
|
||||
*sign_start_info->max_chunk_size = HSM_CHUNK_SIZE;
|
||||
*sign_start_info->chunk_block_size = HSM_BLOCK_SIZE;
|
||||
}
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_SignProcess(uint32_t dev_id, HSM_SIGN_PROCESS_INFO *sign_process_info)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size = HSM_CLIENT_DDR_LEN;
|
||||
|
||||
buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (buffer_local == NULL) {
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
if ((sign_process_info == NULL) || (sign_process_info->input_data == NULL) ||
|
||||
(sign_process_info->input_data_size > HSM_CHUNK_SIZE)) {
|
||||
goto HSM_SIGN_PROCESS_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(buffer_local, HSM_SESSION_HANDLE_SIZE,
|
||||
&(sign_process_info->session_handle), HSM_SESSION_HANDLE_SIZE) != EOK) {
|
||||
goto HSM_SIGN_PROCESS_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(buffer_local + HSM_SESSION_HANDLE_SIZE, sign_process_info->input_data_size,
|
||||
sign_process_info->input_data, sign_process_info->input_data_size) != EOK) {
|
||||
goto HSM_SIGN_PROCESS_Ex_Handle;
|
||||
}
|
||||
|
||||
rsp.ret = TEE_FAIL;
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = (((uint64_t)HSM_SESSION_HANDLE_SIZE) << HSM_CONST_SHIFT_32) |
|
||||
(uint64_t)(sign_process_info->input_data_size);
|
||||
msg.args_data.arg3 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_SIGN_PROCESS_CMD, &msg, HSM_SIGN_PROCESS_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
|
||||
HSM_SIGN_PROCESS_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_SignFinish(uint32_t dev_id, HSM_SIGN_FINISH_INFO *sign_finish_info)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size = HSM_CLIENT_DDR_LEN;
|
||||
|
||||
buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (buffer_local == NULL) {
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
if ((sign_finish_info == NULL) || (sign_finish_info->sign == NULL) ||
|
||||
(sign_finish_info->sign_size == NULL)) {
|
||||
goto HSM_SIGN_FINISH_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(buffer_local, HSM_SESSION_HANDLE_SIZE,
|
||||
&(sign_finish_info->session_handle), HSM_SESSION_HANDLE_SIZE) != EOK) {
|
||||
goto HSM_SIGN_FINISH_Ex_Handle;
|
||||
}
|
||||
|
||||
rsp.ret = TEE_FAIL;
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = (((uint64_t)HSM_SESSION_HANDLE_SIZE) << HSM_CONST_SHIFT_32) | HSM_MSG_RESUME;
|
||||
msg.args_data.arg3 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_SIGN_FINISH_CMD, &msg, HSM_SIGN_FINISH_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
if (ret == TEE_SUCCESS) {
|
||||
*sign_finish_info->sign_size = (uint32_t)(rsp.msg.args_data.arg2 >> HSM_CONST_SHIFT_32);
|
||||
if (memmove_s(sign_finish_info->sign, *sign_finish_info->sign_size, buffer_local,
|
||||
*sign_finish_info->sign_size) != EOK) {
|
||||
goto HSM_SIGN_FINISH_Ex_Handle;
|
||||
}
|
||||
}
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
|
||||
HSM_SIGN_FINISH_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_VerifyStart(uint32_t dev_id, HSM_VERIFY_START_INFO *verify_start_info)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size = 0;
|
||||
|
||||
ret = verify_init_para_check(verify_start_info);
|
||||
if (ret != TEE_SUCCESS) {
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
ret = verify_init_request_sharemem(&buffer_local, &buffer_size, verify_start_info);
|
||||
if (ret != TEE_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
rsp.ret = TEE_FAIL;
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = (((uint64_t)HSM_ALG_SIZE) << HSM_CONST_SHIFT_32) |
|
||||
(uint64_t)(verify_start_info->cipher_key.cryptokeyelementsize + HSM_KEY_ELEMENT_SIZE);
|
||||
msg.args_data.arg3 = (((uint64_t)(verify_start_info->cipherkey_authsize + HSM_IV_SIZE)) << HSM_CONST_SHIFT_32) |
|
||||
(uint64_t)(verify_start_info->cipherkey_authsize + HSM_KEY_PROTECT_SIZE);
|
||||
msg.args_data.arg4 = (((uint64_t)(HSM_SALT_SIZE)) << HSM_CONST_SHIFT_32) |
|
||||
((uint64_t)(verify_start_info->sign_size));
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_VERIFY_START_CMD, &msg, HSM_VERIFY_START_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
if (ret == TEE_SUCCESS) {
|
||||
*verify_start_info->session_handle = *(uint32_t *)(buffer_local);
|
||||
*verify_start_info->max_chunk_size = HSM_CHUNK_SIZE;
|
||||
*verify_start_info->chunk_block_size = HSM_BLOCK_SIZE;
|
||||
}
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_VerifyProcess(uint32_t dev_id, HSM_VERIFY_PROCESS_INFO *verify_process_info)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size = HSM_CLIENT_DDR_LEN;
|
||||
|
||||
buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (buffer_local == NULL) {
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
if ((verify_process_info == NULL) || (verify_process_info->input_data == NULL) ||
|
||||
(verify_process_info->input_data_size > HSM_CHUNK_SIZE)) {
|
||||
goto HSM_VERIFY_PROCESS_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(buffer_local, HSM_SESSION_HANDLE_SIZE,
|
||||
&(verify_process_info->session_handle), HSM_SESSION_HANDLE_SIZE) != EOK) {
|
||||
goto HSM_VERIFY_PROCESS_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(buffer_local + HSM_SESSION_HANDLE_SIZE, verify_process_info->input_data_size,
|
||||
verify_process_info->input_data, verify_process_info->input_data_size) != EOK) {
|
||||
goto HSM_VERIFY_PROCESS_Ex_Handle;
|
||||
}
|
||||
|
||||
rsp.ret = TEE_FAIL;
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = (((uint64_t)HSM_SESSION_HANDLE_SIZE) << HSM_CONST_SHIFT_32) |
|
||||
(uint64_t)(verify_process_info->input_data_size);
|
||||
msg.args_data.arg3 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_VERIFY_PROCESS_CMD, &msg, HSM_VERIFY_PROCESS_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
|
||||
HSM_VERIFY_PROCESS_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_VerifyFinish(uint32_t dev_id, HSM_VERIFY_FINISH_INFO *verify_finish_info)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size = HSM_CLIENT_DDR_LEN;
|
||||
|
||||
buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (buffer_local == NULL) {
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
if (verify_finish_info == NULL || verify_finish_info->verify_result == NULL) {
|
||||
goto HSM_VERIFY_FINISH_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(buffer_local, HSM_SESSION_HANDLE_SIZE,
|
||||
&(verify_finish_info->session_handle), HSM_SESSION_HANDLE_SIZE) != EOK) {
|
||||
goto HSM_VERIFY_FINISH_Ex_Handle;
|
||||
}
|
||||
|
||||
rsp.ret = TEE_FAIL;
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = (((uint64_t)HSM_SESSION_HANDLE_SIZE) << HSM_CONST_SHIFT_32) | HSM_MSG_RESUME;
|
||||
msg.args_data.arg3 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_VERIFY_FINISH_CMD, &msg, HSM_VERIFY_FINISH_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
if (ret == TEE_SUCCESS) {
|
||||
*verify_finish_info->verify_result = HSM_VER_SUCCESS;
|
||||
} else {
|
||||
*verify_finish_info->verify_result = HSM_VER_FAIL;
|
||||
}
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
|
||||
HSM_VERIFY_FINISH_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_GetRandom(uint32_t dev_id, HSM_GET_RANDOM_INFO *random_info)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size = HSM_CLIENT_DDR_LEN;
|
||||
uint32_t size0;
|
||||
|
||||
buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (buffer_local == NULL) {
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
if ((random_info == NULL) || (random_info->random == NULL)) {
|
||||
goto HSM_GET_RANDOM_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(buffer_local, HSM_RANDOM_SIZE, &(random_info->random_size), HSM_RANDOM_SIZE) != EOK)
|
||||
goto HSM_GET_RANDOM_Ex_Handle;
|
||||
|
||||
rsp.ret = TEE_FAIL;
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = (((uint64_t)HSM_RANDOM_SIZE) << HSM_CONST_SHIFT_32) | HSM_MSG_RESUME;
|
||||
msg.args_data.arg3 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_GET_RANDOM_CMD, &msg, HSM_GET_RANDOM_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
if (ret == TEE_SUCCESS) {
|
||||
size0 = (uint32_t)(rsp.msg.args_data.arg2 >> HSM_CONST_SHIFT_32);
|
||||
if (memmove_s(random_info->random, size0, buffer_local, size0) != EOK) {
|
||||
goto HSM_GET_RANDOM_Ex_Handle;
|
||||
}
|
||||
}
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
|
||||
HSM_GET_RANDOM_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
-451
@@ -1,451 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2019-2020. All rights reserved.
|
||||
* Description: HSM crypto api function
|
||||
* Author: chenyao
|
||||
* Create: 2020-01-08
|
||||
* Notes:
|
||||
* History: 2020-01-08 chenyao create hsm_crypto functions.
|
||||
*/
|
||||
#include <stdarg.h>
|
||||
#include "ta_framework.h"
|
||||
#include "tee_log.h"
|
||||
#include "tee_obj.h"
|
||||
#include "securec.h"
|
||||
#include "string.h"
|
||||
#include "tee_service_public.h"
|
||||
#include "hsm_crypto_api.h"
|
||||
#include "hsm_public.h"
|
||||
#include "hsm_crypto_internal.h"
|
||||
|
||||
TEE_Result cipher_init_para_check(HSM_CIPHER_START_INFO *cipher_start_info)
|
||||
{
|
||||
uint32_t key_size;
|
||||
uint32_t auth_size;
|
||||
|
||||
if (cipher_start_info == NULL || cipher_start_info->cipherkey_auth == NULL) {
|
||||
return TEE_ERROR_NO_DATA;
|
||||
}
|
||||
key_size = cipher_start_info->cipher_key.cryptokeyelementsize;
|
||||
auth_size = cipher_start_info->cipherkey_authsize;
|
||||
|
||||
if ((cipher_start_info->cipherkey_protectmsg == NULL) ||
|
||||
(cipher_start_info->cipher_key.cryptokeyelementvalueref == NULL)) {
|
||||
return TEE_ERROR_NO_DATA;
|
||||
}
|
||||
|
||||
if ((cipher_start_info->session_handle == NULL) || (cipher_start_info->max_chunk_size == NULL) ||
|
||||
(cipher_start_info->chunk_block_size == NULL)) {
|
||||
return TEE_ERROR_NO_DATA;
|
||||
}
|
||||
|
||||
if ((key_size > HSM_SYMKEY_MAX_SIZE) || (auth_size > HSM_AUTH_MAX_SIZE)) {
|
||||
return TEE_ERROR_NO_DATA;
|
||||
}
|
||||
|
||||
if ((cipher_start_info->iv_size != 0) && (cipher_start_info->iv_ptr != NULL)) {
|
||||
if (cipher_start_info->iv_size != HSM_IV_MAX_SIZE) {
|
||||
return TEE_ERROR_NO_DATA;
|
||||
}
|
||||
}
|
||||
|
||||
return TEE_SUCCESS;
|
||||
}
|
||||
|
||||
TEE_Result cipher_init_request_sharemem(uint8_t **buffer_local, uint32_t *buffer_size,
|
||||
HSM_CIPHER_START_INFO *cipher_start_info)
|
||||
{
|
||||
uint32_t key_size = cipher_start_info->cipher_key.cryptokeyelementsize;
|
||||
uint32_t auth_size = cipher_start_info->cipherkey_authsize;
|
||||
uint32_t cipher_head_size = HSM_ALG_SIZE + HSM_KEY_ELEMENT_SIZE + HSM_IV_SIZE;
|
||||
uint32_t promsg_size = cipher_start_info->cipherkey_authsize + HSM_KEY_PROTECT_SIZE;
|
||||
uint32_t dst_size = HSM_CLIENT_DDR_LEN;
|
||||
uint8_t tmp[HSM_IV_SIZE] = {0};
|
||||
|
||||
*buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (*buffer_local == NULL) {
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
if (memmove_s(*buffer_local, HSM_ALG_SIZE, &cipher_start_info->alg_id, HSM_ALG_SIZE) != EOK) {
|
||||
goto CIPHER_INIT_Ex_Handle;
|
||||
}
|
||||
|
||||
/* key_size + 32 */
|
||||
if (memmove_s(*buffer_local + HSM_ALG_SIZE, HSM_KEY_ELEMENT_SIZE,
|
||||
&cipher_start_info->cipher_key, HSM_KEY_ELEMENT_SIZE) != EOK) {
|
||||
goto CIPHER_INIT_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(*buffer_local + HSM_ALG_SIZE + HSM_KEY_ELEMENT_SIZE, key_size,
|
||||
cipher_start_info->cipher_key.cryptokeyelementvalueref, key_size) != EOK) {
|
||||
goto CIPHER_INIT_Ex_Handle;
|
||||
}
|
||||
|
||||
/* auth_size + 16 */
|
||||
if (memmove_s(*buffer_local + HSM_ALG_SIZE + HSM_KEY_ELEMENT_SIZE + key_size, HSM_IV_SIZE, tmp,
|
||||
HSM_IV_SIZE) != EOK) {
|
||||
goto CIPHER_INIT_Ex_Handle;
|
||||
}
|
||||
|
||||
/* auth_size */
|
||||
if (memmove_s(*buffer_local + cipher_head_size + key_size, auth_size,
|
||||
cipher_start_info->cipherkey_auth, auth_size) != EOK) {
|
||||
goto CIPHER_INIT_Ex_Handle;
|
||||
}
|
||||
|
||||
/* promsg_size */
|
||||
if (memmove_s(*buffer_local + cipher_head_size + key_size + auth_size, promsg_size,
|
||||
cipher_start_info->cipherkey_protectmsg, promsg_size) != EOK) {
|
||||
goto CIPHER_INIT_Ex_Handle;
|
||||
}
|
||||
|
||||
/* iv_size */
|
||||
if ((cipher_start_info->iv_size != 0) && (cipher_start_info->iv_ptr != NULL)) {
|
||||
if (memmove_s(*buffer_local + cipher_head_size + key_size + auth_size + promsg_size, cipher_start_info->iv_size,
|
||||
cipher_start_info->iv_ptr, cipher_start_info->iv_size) != EOK) {
|
||||
goto CIPHER_INIT_Ex_Handle;
|
||||
}
|
||||
}
|
||||
|
||||
*buffer_size = dst_size;
|
||||
return TEE_SUCCESS;
|
||||
|
||||
CIPHER_INIT_Ex_Handle:
|
||||
tloge("%s\n", __func__);
|
||||
__SRE_MemFreeShared(*buffer_local, dst_size);
|
||||
*buffer_local = NULL;
|
||||
return TEE_ERROR_SECURITY;
|
||||
}
|
||||
|
||||
TEE_Result hash_init_para_check(HSM_HASH_START_INFO *hash_start_info)
|
||||
{
|
||||
if (hash_start_info == NULL) {
|
||||
return TEE_ERROR_NO_DATA;
|
||||
}
|
||||
|
||||
if ((hash_start_info->session_handle == NULL) || (hash_start_info->max_chunk_size == NULL) ||
|
||||
(hash_start_info->chunk_block_size == NULL)) {
|
||||
return TEE_ERROR_NO_DATA;
|
||||
}
|
||||
|
||||
return TEE_SUCCESS;
|
||||
}
|
||||
|
||||
TEE_Result hash_init_request_sharemem(uint8_t **buffer_local, uint32_t *buffer_size,
|
||||
HSM_HASH_START_INFO *hash_start_info)
|
||||
{
|
||||
uint32_t dst_size = HSM_CLIENT_DDR_LEN;
|
||||
|
||||
*buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (*buffer_local == NULL) {
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
if (memmove_s(*buffer_local, HSM_ALG_SIZE, &hash_start_info->alg_id, HSM_ALG_SIZE) != EOK) {
|
||||
goto HASH_INIT_Ex_Handle2;
|
||||
}
|
||||
|
||||
*buffer_size = dst_size;
|
||||
|
||||
return TEE_SUCCESS;
|
||||
|
||||
HASH_INIT_Ex_Handle2:
|
||||
tloge("%s\n", __func__);
|
||||
__SRE_MemFreeShared(*buffer_local, dst_size);
|
||||
*buffer_local = NULL;
|
||||
return TEE_ERROR_SECURITY;
|
||||
}
|
||||
|
||||
TEE_Result mac_init_para_check(HSM_MAC_START_INFO *mac_start_info)
|
||||
{
|
||||
uint32_t key_size;
|
||||
uint32_t auth_size;
|
||||
|
||||
if (mac_start_info == NULL) {
|
||||
return TEE_ERROR_NO_DATA;
|
||||
}
|
||||
key_size = mac_start_info->cipher_key.cryptokeyelementsize;
|
||||
auth_size = mac_start_info->cipherkey_authsize;
|
||||
|
||||
if ((mac_start_info->session_handle == NULL) || (mac_start_info->max_chunk_size == NULL) ||
|
||||
(mac_start_info->chunk_block_size == NULL)) {
|
||||
return TEE_ERROR_NO_DATA;
|
||||
}
|
||||
|
||||
if ((key_size > HSM_SYMKEY_MAX_SIZE) || (auth_size > HSM_AUTH_MAX_SIZE)) {
|
||||
return TEE_ERROR_NO_DATA;
|
||||
}
|
||||
|
||||
return TEE_SUCCESS;
|
||||
}
|
||||
|
||||
TEE_Result mac_init_request_sharemem(uint8_t **buffer_local, uint32_t *buffer_size,
|
||||
HSM_MAC_START_INFO *mac_start_info)
|
||||
{
|
||||
uint32_t key_size = mac_start_info->cipher_key.cryptokeyelementsize;
|
||||
uint32_t auth_size = mac_start_info->cipherkey_authsize;
|
||||
uint32_t hsm_hash_head_size = HSM_ALG_SIZE + HSM_KEY_ELEMENT_SIZE + HSM_IV_SIZE;
|
||||
uint32_t promsg_size = auth_size + HSM_KEY_PROTECT_SIZE;
|
||||
uint32_t dst_size = HSM_CLIENT_DDR_LEN;
|
||||
uint8_t tmp[HSM_IV_SIZE] = {0};
|
||||
|
||||
*buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (*buffer_local == NULL) {
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
if (memmove_s(*buffer_local, HSM_ALG_SIZE, &mac_start_info->alg_id, HSM_ALG_SIZE) != EOK) {
|
||||
goto MAC_INIT_Ex_Handle2;
|
||||
}
|
||||
|
||||
if (memmove_s(*buffer_local + HSM_ALG_SIZE, HSM_KEY_ELEMENT_SIZE,
|
||||
&mac_start_info->cipher_key, HSM_KEY_ELEMENT_SIZE) != EOK) {
|
||||
goto MAC_INIT_Ex_Handle2;
|
||||
}
|
||||
|
||||
if (memmove_s(*buffer_local + HSM_ALG_SIZE + HSM_KEY_ELEMENT_SIZE, key_size,
|
||||
mac_start_info->cipher_key.cryptokeyelementvalueref, key_size) != EOK) {
|
||||
goto MAC_INIT_Ex_Handle2;
|
||||
}
|
||||
|
||||
/* auth_size + 16 */
|
||||
if (memmove_s(*buffer_local + HSM_ALG_SIZE + HSM_KEY_ELEMENT_SIZE + key_size, HSM_IV_SIZE,
|
||||
tmp, HSM_IV_SIZE) != EOK) {
|
||||
goto MAC_INIT_Ex_Handle2;
|
||||
}
|
||||
|
||||
/* auth_size */
|
||||
if (memmove_s(*buffer_local + hsm_hash_head_size + key_size, auth_size,
|
||||
mac_start_info->cipherkey_auth, auth_size) != EOK) {
|
||||
goto MAC_INIT_Ex_Handle2;
|
||||
}
|
||||
|
||||
/* promsg_size */
|
||||
if (memmove_s(*buffer_local + hsm_hash_head_size + key_size + auth_size, promsg_size,
|
||||
mac_start_info->cipherkey_protectmsg, promsg_size) != EOK) {
|
||||
goto MAC_INIT_Ex_Handle2;
|
||||
}
|
||||
|
||||
*buffer_size = dst_size;
|
||||
|
||||
return TEE_SUCCESS;
|
||||
|
||||
MAC_INIT_Ex_Handle2:
|
||||
tloge("%s\n", __func__);
|
||||
__SRE_MemFreeShared(*buffer_local, dst_size);
|
||||
*buffer_local = NULL;
|
||||
return TEE_ERROR_SECURITY;
|
||||
}
|
||||
|
||||
TEE_Result sign_init_para_check(HSM_SIGN_START_INFO *sign_start_info)
|
||||
{
|
||||
uint32_t key_size;
|
||||
uint32_t auth_size;
|
||||
|
||||
if ((sign_start_info == NULL) || (sign_start_info->cipherkey_auth == NULL)) {
|
||||
return TEE_ERROR_NO_DATA;
|
||||
}
|
||||
key_size = sign_start_info->cipher_key.cryptokeyelementsize;
|
||||
auth_size = sign_start_info->cipherkey_authsize;
|
||||
|
||||
if ((sign_start_info->cipherkey_protectmsg == NULL) ||
|
||||
(sign_start_info->cipher_key.cryptokeyelementvalueref == NULL)) {
|
||||
return TEE_ERROR_NO_DATA;
|
||||
}
|
||||
|
||||
if ((sign_start_info->session_handle == NULL) || (sign_start_info->max_chunk_size == NULL) ||
|
||||
(sign_start_info->chunk_block_size == NULL)) {
|
||||
return TEE_ERROR_NO_DATA;
|
||||
}
|
||||
|
||||
if ((key_size > HSM_ASYMKEY_MAX_SIZE) || (auth_size > HSM_AUTH_MAX_SIZE)) {
|
||||
return TEE_ERROR_NO_DATA;
|
||||
}
|
||||
|
||||
return TEE_SUCCESS;
|
||||
}
|
||||
|
||||
TEE_Result sign_init_request_sharemem(uint8_t **buffer_local, uint32_t *buffer_size,
|
||||
HSM_SIGN_START_INFO *sign_start_info)
|
||||
{
|
||||
uint32_t key_size = sign_start_info->cipher_key.cryptokeyelementsize;
|
||||
uint32_t auth_size = sign_start_info->cipherkey_authsize;
|
||||
uint32_t hsm_sign_head_size = HSM_ALG_SIZE + HSM_KEY_ELEMENT_SIZE + HSM_IV_SIZE;
|
||||
uint32_t promsg_size = auth_size + HSM_KEY_PROTECT_SIZE;
|
||||
uint32_t dst_size = HSM_CLIENT_DDR_LEN;
|
||||
uint8_t tmp[HSM_IV_SIZE] = {0};
|
||||
uint32_t salt_size = HSM_SIGN_VER_SALT_LEN;
|
||||
*buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (*buffer_local == NULL) {
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
if (memmove_s(*buffer_local, HSM_ALG_SIZE, &sign_start_info->alg_id, HSM_ALG_SIZE) != EOK) {
|
||||
goto SIGN_INIT_Ex_Handle;
|
||||
}
|
||||
|
||||
/* key_size + 32 */
|
||||
if (memmove_s(*buffer_local + HSM_ALG_SIZE, HSM_KEY_ELEMENT_SIZE,
|
||||
&sign_start_info->cipher_key, HSM_KEY_ELEMENT_SIZE) != EOK) {
|
||||
goto SIGN_INIT_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(*buffer_local + HSM_ALG_SIZE + HSM_KEY_ELEMENT_SIZE, key_size,
|
||||
sign_start_info->cipher_key.cryptokeyelementvalueref, key_size) != EOK) {
|
||||
goto SIGN_INIT_Ex_Handle;
|
||||
}
|
||||
|
||||
/* auth_size + 16 */
|
||||
if (memmove_s(*buffer_local + HSM_ALG_SIZE + HSM_KEY_ELEMENT_SIZE + key_size, HSM_IV_SIZE,
|
||||
tmp, HSM_IV_SIZE) != EOK) {
|
||||
goto SIGN_INIT_Ex_Handle;
|
||||
}
|
||||
|
||||
/* auth_size */
|
||||
if (memmove_s(*buffer_local + hsm_sign_head_size + key_size, auth_size,
|
||||
sign_start_info->cipherkey_auth, auth_size) != EOK) {
|
||||
goto SIGN_INIT_Ex_Handle;
|
||||
}
|
||||
|
||||
/* promsg_size */
|
||||
if (memmove_s(*buffer_local + hsm_sign_head_size + key_size + auth_size, promsg_size,
|
||||
sign_start_info->cipherkey_protectmsg, promsg_size) != EOK) {
|
||||
goto SIGN_INIT_Ex_Handle;
|
||||
}
|
||||
|
||||
/* salt_size */
|
||||
if (memmove_s(*buffer_local + hsm_sign_head_size + key_size + auth_size + promsg_size, HSM_SALT_SIZE,
|
||||
&salt_size, HSM_SALT_SIZE) != EOK) {
|
||||
goto SIGN_INIT_Ex_Handle;
|
||||
}
|
||||
|
||||
*buffer_size = dst_size;
|
||||
return TEE_SUCCESS;
|
||||
|
||||
SIGN_INIT_Ex_Handle:
|
||||
tloge("%s\n", __func__);
|
||||
__SRE_MemFreeShared(*buffer_local, dst_size);
|
||||
*buffer_local = NULL;
|
||||
return TEE_ERROR_SECURITY;
|
||||
}
|
||||
|
||||
TEE_Result verify_init_para_check(HSM_VERIFY_START_INFO *verify_start_info)
|
||||
{
|
||||
uint32_t key_size;
|
||||
uint32_t auth_size;
|
||||
uint32_t sign_size;
|
||||
|
||||
if ((verify_start_info == NULL) || (verify_start_info->cipherkey_auth == NULL) ||
|
||||
(verify_start_info->sign == NULL)) {
|
||||
return TEE_ERROR_NO_DATA;
|
||||
}
|
||||
key_size = verify_start_info->cipher_key.cryptokeyelementsize;
|
||||
auth_size = verify_start_info->cipherkey_authsize;
|
||||
sign_size = verify_start_info->sign_size;
|
||||
|
||||
if ((verify_start_info->cipherkey_protectmsg == NULL) ||
|
||||
(verify_start_info->cipher_key.cryptokeyelementvalueref == NULL)) {
|
||||
return TEE_ERROR_NO_DATA;
|
||||
}
|
||||
|
||||
if ((verify_start_info->session_handle == NULL) || (verify_start_info->max_chunk_size == NULL) ||
|
||||
(verify_start_info->chunk_block_size == NULL)) {
|
||||
return TEE_ERROR_NO_DATA;
|
||||
}
|
||||
|
||||
if ((key_size > HSM_ASYMKEY_MAX_SIZE) || (auth_size > HSM_AUTH_MAX_SIZE) || (sign_size > HSM_SIGN_MAX_SIZE)) {
|
||||
return TEE_ERROR_NO_DATA;
|
||||
}
|
||||
|
||||
return TEE_SUCCESS;
|
||||
}
|
||||
|
||||
static TEE_Result verify_init_data_move(uint8_t *buffer_local, HSM_VERIFY_START_INFO *verify_start_info)
|
||||
{
|
||||
uint32_t buffer_offset;
|
||||
uint32_t salt_size = HSM_SIGN_VER_SALT_LEN;
|
||||
uint8_t tmp[HSM_IV_SIZE] = {0};
|
||||
|
||||
if (memmove_s(buffer_local, HSM_ALG_SIZE, &verify_start_info->alg_id, HSM_ALG_SIZE) != EOK) {
|
||||
return TEE_FAIL;
|
||||
}
|
||||
|
||||
/* key_size + 32 */
|
||||
if (memmove_s(buffer_local + HSM_ALG_SIZE, HSM_KEY_ELEMENT_SIZE,
|
||||
&verify_start_info->cipher_key, HSM_KEY_ELEMENT_SIZE) != EOK) {
|
||||
return TEE_FAIL;
|
||||
}
|
||||
|
||||
buffer_offset = HSM_ALG_SIZE + HSM_KEY_ELEMENT_SIZE;
|
||||
|
||||
if (memmove_s(buffer_local + buffer_offset, verify_start_info->cipher_key.cryptokeyelementsize,
|
||||
verify_start_info->cipher_key.cryptokeyelementvalueref,
|
||||
verify_start_info->cipher_key.cryptokeyelementsize) != EOK) {
|
||||
return TEE_FAIL;
|
||||
}
|
||||
|
||||
buffer_offset += verify_start_info->cipher_key.cryptokeyelementsize;
|
||||
|
||||
/* auth_size + 16 */
|
||||
if (memmove_s(buffer_local + buffer_offset, HSM_IV_SIZE, tmp, HSM_IV_SIZE) != EOK) {
|
||||
return TEE_FAIL;
|
||||
}
|
||||
|
||||
buffer_offset += HSM_IV_SIZE;
|
||||
|
||||
/* auth_size */
|
||||
if (memmove_s(buffer_local + buffer_offset, verify_start_info->cipherkey_authsize,
|
||||
verify_start_info->cipherkey_auth, verify_start_info->cipherkey_authsize) != EOK) {
|
||||
return TEE_FAIL;
|
||||
}
|
||||
|
||||
buffer_offset += verify_start_info->cipherkey_authsize;
|
||||
|
||||
/* promsg_size */
|
||||
if (memmove_s(buffer_local + buffer_offset, verify_start_info->cipherkey_authsize + HSM_KEY_PROTECT_SIZE,
|
||||
verify_start_info->cipherkey_protectmsg, verify_start_info->cipherkey_authsize + HSM_KEY_PROTECT_SIZE) != EOK) {
|
||||
return TEE_FAIL;
|
||||
}
|
||||
|
||||
buffer_offset += (verify_start_info->cipherkey_authsize + HSM_KEY_PROTECT_SIZE);
|
||||
|
||||
/* salt_size */
|
||||
if (memmove_s(buffer_local + buffer_offset, HSM_SALT_SIZE, &salt_size, HSM_SALT_SIZE) != EOK) {
|
||||
return TEE_FAIL;
|
||||
}
|
||||
|
||||
buffer_offset += HSM_SALT_SIZE;
|
||||
|
||||
if (memmove_s(buffer_local + buffer_offset, verify_start_info->sign_size,
|
||||
verify_start_info->sign, verify_start_info->sign_size) != EOK) {
|
||||
return TEE_FAIL;
|
||||
}
|
||||
|
||||
return TEE_SUCCESS;
|
||||
}
|
||||
|
||||
TEE_Result verify_init_request_sharemem(uint8_t **buffer_local, uint32_t *buffer_size,
|
||||
HSM_VERIFY_START_INFO *verify_start_info)
|
||||
{
|
||||
uint32_t dst_size = HSM_CLIENT_DDR_LEN;
|
||||
uint32_t ret;
|
||||
|
||||
*buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (*buffer_local == NULL) {
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
ret = verify_init_data_move(*buffer_local, verify_start_info);
|
||||
if (ret != TEE_SUCCESS) {
|
||||
goto VERIFY_INIT_Ex_Handle;
|
||||
}
|
||||
|
||||
*buffer_size = dst_size;
|
||||
return TEE_SUCCESS;
|
||||
|
||||
VERIFY_INIT_Ex_Handle:
|
||||
tloge("%s\n", __func__);
|
||||
__SRE_MemFreeShared(*buffer_local, dst_size);
|
||||
*buffer_local = NULL;
|
||||
return TEE_ERROR_SECURITY;
|
||||
}
|
||||
-127
@@ -1,127 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved.
|
||||
* Description: HSM counter api function and algorithm check
|
||||
* Author: chenyao
|
||||
* Create: 2020-01-08
|
||||
* Notes:
|
||||
* History: 2020-01-08 chenyao create efuse api functions.
|
||||
2020-06-24 chenyao add rim and nvcnt update functions.
|
||||
*/
|
||||
#include <stdarg.h>
|
||||
#include "ta_framework.h"
|
||||
#include "tee_log.h"
|
||||
#include "tee_obj.h"
|
||||
#include "securec.h"
|
||||
#include "string.h"
|
||||
#include "hsm_efuse_api.h"
|
||||
#include "efuse_api.h"
|
||||
#include "hsm_public.h"
|
||||
#include "tee_service_public.h"
|
||||
#include "mem_ops_ext.h"
|
||||
|
||||
TEE_Result TEE_HSM_RIM_UpDate(uint32_t dev_id, uint8_t *rim_info, uint32_t rim_size)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size = HSM_CLIENT_DDR_LEN;
|
||||
|
||||
if (rim_size != HSM_RIM_MAX_SIZE) {
|
||||
tloge("rim info size is wrong\n");
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (buffer_local == NULL) {
|
||||
tloge("buffer is null, please realloc\n");
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
if (memmove_s(buffer_local, rim_size, rim_info, HSM_RIM_MAX_SIZE) != EOK) {
|
||||
tloge("memmove rim info fail\n");
|
||||
goto HSM_RIM_UPDATE_Ex_Handle;
|
||||
}
|
||||
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = (((uint64_t)HSM_RIM_INFO_SIZE) << HSM_CONST_SHIFT_32) | (uint64_t)(HSM_ROOT_KEY_SIZE);
|
||||
msg.args_data.arg3 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_RIM_VALUE_UPDATE_CMD, &msg, HSM_RIM_VALUE_UPDATE_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
|
||||
HSM_RIM_UPDATE_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_Power_On(uint32_t dev_id)
|
||||
{
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size = HSM_CLIENT_DDR_LEN;
|
||||
|
||||
buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (buffer_local == NULL) {
|
||||
tloge("hsm power on, alloc smem failed!\n");
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg3 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_EFUSE_POWER_ON_CMD, &msg, HSM_EFUSE_POWER_ON_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_Power_Off(uint32_t dev_id)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size = HSM_CLIENT_DDR_LEN;
|
||||
|
||||
buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (buffer_local == NULL) {
|
||||
tloge("hsm power off, alloc smem failed!\n");
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg3 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_EFUSE_POWER_OFF_CMD, &msg, HSM_EFUSE_POWER_OFF_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
}
|
||||
-86
@@ -1,86 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2021-2021. All rights reserved.
|
||||
* Description: HSM fuzz service test client api
|
||||
* Author: chenyao
|
||||
* Create: 2021-06-17
|
||||
* Notes:
|
||||
* History:
|
||||
*/
|
||||
#include <stdarg.h>
|
||||
#include "securec.h"
|
||||
#include "ta_framework.h"
|
||||
#include "tee_log.h"
|
||||
#include "hsm_public.h"
|
||||
#include "hsm_fuzz_api.h"
|
||||
#include "tee_service_public.h"
|
||||
|
||||
static TEE_Result service_fuzz_para_check(uint8_t *service_msg, uint32_t msg_size,
|
||||
uint8_t *service_data, uint32_t data_size)
|
||||
{
|
||||
if ((service_msg == NULL) || (service_data == NULL)) {
|
||||
return TEE_ERROR_NO_DATA;
|
||||
}
|
||||
|
||||
if ((msg_size > sizeof(FUZZ_SERVICE_S)) || (data_size > HSM_CLIENT_DDR_LEN)) {
|
||||
return TEE_ERROR_NO_DATA;
|
||||
}
|
||||
|
||||
return TEE_SUCCESS;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_SERVICE_FUZZ(uint8_t *service_msg, uint32_t msg_size, uint8_t *service_data, uint32_t data_size)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size = HSM_CLIENT_DDR_LEN;
|
||||
FUZZ_SERVICE_S *service_fuzz = (FUZZ_SERVICE_S *)(uintptr_t)service_msg;
|
||||
|
||||
ret =-service_fuzz_para_check(service_msg, msg_size, service_data, data_size);
|
||||
if (ret != TEE_SUCCESS) {
|
||||
tloge("service fuzz para check fail");
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (buffer_local == NULL) {
|
||||
tloge("memory alloc in fuzz service fail");
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
if (memmove_s(buffer_local, HSM_CLIENT_DDR_LEN, service_data, data_size) != 0) {
|
||||
tloge("cpy service data fuzz service fail");
|
||||
goto HSM_SERVICE_FUZZ_Ex_Handle;
|
||||
}
|
||||
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = (((uint64_t)service_fuzz->param_len_0) << HSM_CONST_SHIFT_32) |
|
||||
(uint64_t)(service_fuzz->param_len_1);
|
||||
msg.args_data.arg3 = (((uint64_t)service_fuzz->param_len_2) << HSM_CONST_SHIFT_32) |
|
||||
(uint64_t)(service_fuzz->param_len_3);
|
||||
msg.args_data.arg4 = (((uint64_t)service_fuzz->param_len_4) << HSM_CONST_SHIFT_32) |
|
||||
(uint64_t)(service_fuzz->param_len_5);
|
||||
msg.args_data.arg5 = (((uint64_t)service_fuzz->param_len_6) << HSM_CONST_SHIFT_32) |
|
||||
(uint64_t)(service_fuzz->param_len_7);
|
||||
msg.args_data.arg6 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg7 = (((uint64_t)service_fuzz->cmd) << HSM_CONST_SHIFT_32) |
|
||||
(uint64_t)(service_fuzz->ddr_para_num);
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_SERVICE_FUZZ_CMD, &msg, HSM_SERVICE_FUZZ_CMD, &rsp);
|
||||
|
||||
if (memmove_s(service_data, data_size, buffer_local, data_size) != 0) {
|
||||
tloge("cpy buffer data fuzz service fail");
|
||||
goto HSM_SERVICE_FUZZ_Ex_Handle;
|
||||
}
|
||||
|
||||
ret = rsp.ret;
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
|
||||
HSM_SERVICE_FUZZ_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
-691
@@ -1,691 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2019-2020. All rights reserved.
|
||||
* Description: HSM kms api function.
|
||||
* Author: chenyao
|
||||
* Create: 2020-01-08
|
||||
* Notes:
|
||||
* History: 2020-01-08 chenyao create hsm_kms api functions.
|
||||
*/
|
||||
#include <stdarg.h>
|
||||
#include "mem_ops_ext.h"
|
||||
#include "ta_framework.h"
|
||||
#include "tee_log.h"
|
||||
#include "tee_obj.h"
|
||||
#include "securec.h"
|
||||
#include "string.h"
|
||||
#include "tee_service_public.h"
|
||||
#include "hsm_kms_api.h"
|
||||
#include "hsm_public.h"
|
||||
#include "hsm_kms_internal.h"
|
||||
|
||||
TEE_Result TEE_HSM_GenSymeticKey(uint32_t dev_id, HSM_GENERATE_SYMKEY_INFO *generate_symkey_info)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size;
|
||||
uint32_t size0;
|
||||
uint32_t size1;
|
||||
uint32_t state;
|
||||
|
||||
ret = generate_symkey_para_check(generate_symkey_info);
|
||||
if (ret != TEE_SUCCESS)
|
||||
return ret;
|
||||
|
||||
ret = generate_symkey_request_sharemem(&buffer_local, &buffer_size, generate_symkey_info);
|
||||
if (ret != TEE_SUCCESS)
|
||||
return ret;
|
||||
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = (((uint64_t)HSM_ALG_SIZE) << HSM_CONST_SHIFT_32) | (uint64_t)(HSM_KEY_ELEMENT_SIZE);
|
||||
msg.args_data.arg3 = (((uint64_t)generate_symkey_info->symkey_authsize + HSM_IV_SIZE) << HSM_CONST_SHIFT_32)
|
||||
| HSM_MSG_RESUME;
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_GENERATE_SYMKEY_CMD, &msg, HSM_GENERATE_SYMKEY_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
if (ret == TEE_SUCCESS) {
|
||||
size0 = (uint32_t)(rsp.msg.args_data.arg2 >> HSM_CONST_SHIFT_32) - HSM_KEY_ELEMENT_SIZE;
|
||||
size1 = (uint32_t)(rsp.msg.args_data.arg2);
|
||||
if (size0 > HSM_SYMKEY_MAX_SIZE || size1 > HSM_PROTECTMSG_MAX_SIZE) {
|
||||
goto HSM_GEN_SYMKEY_Ex_Handle;
|
||||
}
|
||||
state = memmove_s(generate_symkey_info->symkey.cryptokeyelementvalueref, size0,
|
||||
buffer_local + HSM_KEY_ELEMENT_SIZE, size0);
|
||||
if (state != EOK) {
|
||||
goto HSM_GEN_SYMKEY_Ex_Handle;
|
||||
}
|
||||
state = memmove_s(generate_symkey_info->symkey_protectmsg, size1,
|
||||
buffer_local + size0 + HSM_KEY_ELEMENT_SIZE, size1);
|
||||
if (state != EOK) {
|
||||
goto HSM_GEN_SYMKEY_Ex_Handle;
|
||||
}
|
||||
}
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
|
||||
HSM_GEN_SYMKEY_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_GenAsymeticKey(uint32_t dev_id, HSM_GENERATE_ASYMKEY_INFO *generate_asymkey_info)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size;
|
||||
uint32_t state;
|
||||
|
||||
ret = generate_asymkey_para_check(generate_asymkey_info);
|
||||
if (ret != TEE_SUCCESS)
|
||||
return ret;
|
||||
|
||||
ret = generate_asymkey_request_sharemem(&buffer_local, &buffer_size, generate_asymkey_info);
|
||||
if (ret != TEE_SUCCESS)
|
||||
return ret;
|
||||
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = (((uint64_t)HSM_ALG_SIZE) << HSM_CONST_SHIFT_32) | (uint64_t)(HSM_KEY_ELEMENT_SIZE);
|
||||
msg.args_data.arg3 = (((uint64_t)HSM_KEY_ELEMENT_SIZE) << HSM_CONST_SHIFT_32) |
|
||||
(((uint64_t)generate_asymkey_info->key_authsize + HSM_IV_SIZE));
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_GENERATE_ASYMKEY_CMD, &msg, HSM_GENERATE_ASYMKEY_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
if (ret == TEE_SUCCESS) {
|
||||
state = hsm_asymetickey_rsp(&rsp, generate_asymkey_info, buffer_local);
|
||||
if (state != TEE_SUCCESS) {
|
||||
goto HSM_GEN_ASYMKEY_Ex_Handle;
|
||||
}
|
||||
}
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
|
||||
HSM_GEN_ASYMKEY_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_DeriveHuk(uint32_t dev_id, HSM_DERIVE_HUK_INFO *derive_huk_info)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size;
|
||||
uint32_t size0;
|
||||
uint32_t size1;
|
||||
|
||||
ret = derive_huk_para_check(derive_huk_info);
|
||||
if (ret != TEE_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = derive_huk_request_sharemem(&buffer_local, &buffer_size, derive_huk_info);
|
||||
if (ret != TEE_SUCCESS)
|
||||
return ret;
|
||||
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = (((uint64_t)(HSM_DERIVE_KEY_HEAD + derive_huk_info->salt_size)) << HSM_CONST_SHIFT_32) |
|
||||
(uint64_t)(HSM_KEY_ELEMENT_SIZE);
|
||||
msg.args_data.arg3 = (((uint64_t)derive_huk_info->key_authsize + HSM_IV_SIZE) << HSM_CONST_SHIFT_32) |
|
||||
HSM_MSG_RESUME;
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_DERIVE_HUK_CMD, &msg, HSM_DERIVE_HUK_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
if (ret == TEE_SUCCESS) {
|
||||
size0 = (uint32_t)(rsp.msg.args_data.arg2 >> HSM_CONST_SHIFT_32) - HSM_KEY_ELEMENT_SIZE;
|
||||
size1 = (uint32_t)(rsp.msg.args_data.arg2);
|
||||
if ((size0 > HSM_ASYMKEY_MAX_SIZE) || (size1 > HSM_PROTECTMSG_MAX_SIZE)) {
|
||||
goto HSM_DERIVE_HUK_Ex_Handle;
|
||||
}
|
||||
if (memmove_s(derive_huk_info->c_key.cryptokeyelementvalueref, size0,
|
||||
buffer_local + HSM_KEY_ELEMENT_SIZE, size0) != EOK) {
|
||||
goto HSM_DERIVE_HUK_Ex_Handle;
|
||||
}
|
||||
if (memmove_s(derive_huk_info->key_protectmsg, size1,
|
||||
buffer_local + size0 + HSM_KEY_ELEMENT_SIZE, size1) != EOK) {
|
||||
goto HSM_DERIVE_HUK_Ex_Handle;
|
||||
}
|
||||
}
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
|
||||
HSM_DERIVE_HUK_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_DeriveKey(uint32_t dev_id, HSM_DERIVE_KEY_INFO *derive_key_info)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size;
|
||||
uint32_t size0;
|
||||
uint32_t size1;
|
||||
|
||||
ret = derive_key_para_check(derive_key_info);
|
||||
if (ret != TEE_SUCCESS)
|
||||
return ret;
|
||||
|
||||
ret = derive_key_request_sharemem(&buffer_local, &buffer_size, derive_key_info);
|
||||
if (ret != TEE_SUCCESS)
|
||||
return ret;
|
||||
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = (((uint64_t)HSM_KEY_HEAD_SIZE + derive_key_info->salt_size) << HSM_CONST_SHIFT_32) |
|
||||
(uint64_t)(HSM_KEY_ELEMENT_SIZE);
|
||||
msg.args_data.arg3 = (((uint64_t)derive_key_info->target_key_authsize + HSM_IV_SIZE) << HSM_CONST_SHIFT_32) |
|
||||
((uint64_t)derive_key_info->source_key.cryptokeyelementsize + HSM_KEY_ELEMENT_SIZE);
|
||||
msg.args_data.arg4 = (((uint64_t)derive_key_info->source_key_authsize + HSM_IV_SIZE) << HSM_CONST_SHIFT_32) |
|
||||
((uint64_t)derive_key_info->source_key_authsize + HSM_KEY_PROTECT_SIZE);
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_DERIVE_KEY_CMD, &msg, HSM_DERIVE_KEY_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
if (ret == TEE_SUCCESS) {
|
||||
size0 = (uint32_t)(rsp.msg.args_data.arg2 >> HSM_CONST_SHIFT_32) - HSM_KEY_ELEMENT_SIZE;
|
||||
size1 = (uint32_t)(rsp.msg.args_data.arg2);
|
||||
if (size0 > HSM_ASYMKEY_MAX_SIZE || size1 > HSM_PROTECTMSG_MAX_SIZE) {
|
||||
goto HSM_DERIVE_KEY_Ex_Handle;
|
||||
}
|
||||
if (memmove_s(derive_key_info->target_key.cryptokeyelementvalueref, size0,
|
||||
buffer_local + HSM_KEY_ELEMENT_SIZE, size0) != EOK) {
|
||||
goto HSM_DERIVE_KEY_Ex_Handle;
|
||||
}
|
||||
if (memmove_s(derive_key_info->target_key_protectmsg, size1,
|
||||
buffer_local + size0 + HSM_KEY_ELEMENT_SIZE, size1) != EOK) {
|
||||
goto HSM_DERIVE_KEY_Ex_Handle;
|
||||
}
|
||||
}
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
|
||||
HSM_DERIVE_KEY_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_ImportKey(uint32_t dev_id, HSM_IMPORT_KEY_INFO *import_key_info)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size;
|
||||
uint32_t size0;
|
||||
uint32_t size1;
|
||||
|
||||
ret = import_key_para_check(import_key_info);
|
||||
if (ret != TEE_SUCCESS)
|
||||
return ret;
|
||||
|
||||
ret = import_key_request_sharemem(&buffer_local, &buffer_size, import_key_info);
|
||||
if (ret != TEE_SUCCESS)
|
||||
return ret;
|
||||
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = (((uint64_t)(HSM_KEY_HEAD_SIZE + import_key_info->salt_size)) << HSM_CONST_SHIFT_32) |
|
||||
(uint64_t)(import_key_info->import_key.cryptokeyelementsize + HSM_KEY_INFO_SIZE);
|
||||
msg.args_data.arg3 = (((uint64_t)HSM_KEY_ELEMENT_SIZE) << HSM_CONST_SHIFT_32) |
|
||||
((uint64_t)(import_key_info->import_key_authsize + HSM_IV_SIZE));
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_IMPORT_KEY_CMD, &msg, HSM_IMPORT_KEY_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
if (ret == TEE_SUCCESS) {
|
||||
size0 = (uint32_t)(rsp.msg.args_data.arg2 >> HSM_CONST_SHIFT_32) - HSM_KEY_ELEMENT_SIZE;
|
||||
size1 = (uint32_t)(rsp.msg.args_data.arg2);
|
||||
if ((size0 > HSM_ASYMKEY_MAX_SIZE) || (size1 > HSM_PROTECTMSG_MAX_SIZE)) {
|
||||
goto HSM_IMPORT_KEY_Ex_Handle;
|
||||
}
|
||||
if (memmove_s(import_key_info->import_key.cryptokeyelementvalueref, size0,
|
||||
buffer_local + HSM_KEY_ELEMENT_SIZE, size0) != EOK) {
|
||||
goto HSM_IMPORT_KEY_Ex_Handle;
|
||||
}
|
||||
if (memmove_s(import_key_info->import_key_protectmsg, size1,
|
||||
buffer_local + size0 + HSM_KEY_ELEMENT_SIZE, size1) != EOK) {
|
||||
goto HSM_IMPORT_KEY_Ex_Handle;
|
||||
}
|
||||
}
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
|
||||
HSM_IMPORT_KEY_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_ExchangePubKey(uint32_t dev_id, HSM_EXCHANGE_PUBKEY_INFO *exchange_pubkey)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size;
|
||||
uint32_t size0;
|
||||
|
||||
ret = exchange_pubkey_para_check(exchange_pubkey);
|
||||
if (ret != TEE_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = exchange_pubkey_request_sharemem(&buffer_local, &buffer_size, exchange_pubkey);
|
||||
if (ret != TEE_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = (((uint64_t)HSM_ALG_SIZE) << HSM_CONST_SHIFT_32) |
|
||||
(uint64_t)(HSM_KEY_ELEMENT_SIZE + exchange_pubkey->exchange_pubkey.cryptokeyelementsize);
|
||||
msg.args_data.arg3 = (((uint64_t)(HSM_IV_SIZE + exchange_pubkey->exchange_pubkey_authsize)) <<HSM_CONST_SHIFT_32) |
|
||||
((uint64_t)(HSM_KEY_PROTECT_SIZE + exchange_pubkey->exchange_pubkey_authsize));
|
||||
msg.args_data.arg4 = (((uint64_t)HSM_DOMAIN_SIZE) << HSM_CONST_SHIFT_32) | HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_EXCHANGE_CAL_PUB_CMD, &msg, HSM_EXCHANGE_CAL_PUB_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
if (ret == TEE_SUCCESS) {
|
||||
size0 = (uint32_t)(rsp.msg.args_data.arg2 >> HSM_CONST_SHIFT_32);
|
||||
if (size0 > HSM_ASYMKEY_MAX_SIZE) {
|
||||
goto HSM_EXCHANGE_PUBKEY_Ex_Handle;
|
||||
}
|
||||
exchange_pubkey->generate_pubkey_len = size0;
|
||||
if (memmove_s(exchange_pubkey->exchange_pubkey.cryptokeyelementvalueref, size0, buffer_local, size0) != EOK) {
|
||||
goto HSM_EXCHANGE_PUBKEY_Ex_Handle;
|
||||
}
|
||||
}
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
|
||||
HSM_EXCHANGE_PUBKEY_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_ExchangeAgreeKey(uint32_t dev_id, HSM_EXCHANGE_KEY_INFO *exchange_agree_key)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size;
|
||||
uint32_t size0;
|
||||
uint32_t size1;
|
||||
|
||||
ret = exchange_agree_key_para_check(exchange_agree_key);
|
||||
if (ret != TEE_SUCCESS)
|
||||
return ret;
|
||||
|
||||
ret = exchange_agree_key_request_sharemem(&buffer_local, &buffer_size, exchange_agree_key);
|
||||
if (ret != TEE_SUCCESS)
|
||||
return ret;
|
||||
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = (((uint64_t)HSM_ALG_SIZE) << HSM_KEY_ELEMENT_SIZE) |
|
||||
(uint64_t)(HSM_KEY_ELEMENT_SIZE + exchange_agree_key->exchange_prikey.cryptokeyelementsize);
|
||||
msg.args_data.arg3 = (((uint64_t)(HSM_IV_SIZE +
|
||||
exchange_agree_key->exchange_prikey_authsize)) <<HSM_CONST_SHIFT_32) |
|
||||
((uint64_t)(HSM_KEY_PROTECT_SIZE + exchange_agree_key->exchange_prikey_authsize));
|
||||
msg.args_data.arg4 = (((uint64_t)(exchange_agree_key->exchange_pubkey_len)) << HSM_KEY_ELEMENT_SIZE) |
|
||||
((uint64_t)HSM_KEY_ELEMENT_SIZE);
|
||||
msg.args_data.arg5 = (((uint64_t)(HSM_IV_SIZE +
|
||||
exchange_agree_key->exchange_key_authsize)) << HSM_CONST_SHIFT_32) | (uint64_t)(HSM_DOMAIN_SIZE);
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_EXCHANGE_AGREE_KEY_CMD, &msg, HSM_EXCHANGE_AGREE_KEY_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
if (ret == TEE_SUCCESS) {
|
||||
size0 = (uint32_t)(rsp.msg.args_data.arg2 >> HSM_CONST_SHIFT_32) - HSM_KEY_ELEMENT_SIZE;
|
||||
size1 = (uint32_t)(rsp.msg.args_data.arg2);
|
||||
if ((size0 > HSM_ASYMKEY_MAX_SIZE) || (size1 > HSM_AUTH_MAX_SIZE)) {
|
||||
goto HSM_EXCHANGE_KEY_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(exchange_agree_key->exchange_key.cryptokeyelementvalueref, size0,
|
||||
buffer_local + HSM_KEY_ELEMENT_SIZE, size0) != EOK) {
|
||||
goto HSM_EXCHANGE_KEY_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(exchange_agree_key->exchange_key_protectmsg, size1,
|
||||
buffer_local + size0 + HSM_KEY_ELEMENT_SIZE, size1) != EOK) {
|
||||
goto HSM_EXCHANGE_KEY_Ex_Handle;
|
||||
}
|
||||
}
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
|
||||
HSM_EXCHANGE_KEY_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_UpdateProtectMsg(uint32_t dev_id, HSM_UPDATE_PROKEY_INFO *update_prokey_info)
|
||||
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size;
|
||||
uint32_t size0;
|
||||
uint32_t size1;
|
||||
|
||||
ret = update_prokey_para_check(update_prokey_info);
|
||||
if (ret != TEE_SUCCESS)
|
||||
return ret;
|
||||
|
||||
ret = update_prokey_request_sharemem(&buffer_local, &buffer_size, update_prokey_info);
|
||||
if (ret != TEE_SUCCESS)
|
||||
return ret;
|
||||
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = ((uint64_t)(HSM_KEY_ELEMENT_SIZE +
|
||||
update_prokey_info->prokey.cryptokeyelementsize) << HSM_CONST_SHIFT_32) |
|
||||
(uint64_t)(HSM_IV_SIZE + update_prokey_info->prokey_authsize);
|
||||
msg.args_data.arg3 = ((uint64_t)(HSM_KEY_PROTECT_SIZE +
|
||||
update_prokey_info->prokey_authsize) << HSM_CONST_SHIFT_32) | HSM_MSG_RESUME;
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_UPDATE_PROTECT_KEY_CMD, &msg, HSM_UPDATE_PROTECT_KEY_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
if (ret == TEE_SUCCESS) {
|
||||
size0 = (uint32_t)(rsp.msg.args_data.arg2 >> HSM_CONST_SHIFT_32) - HSM_KEY_ELEMENT_SIZE;
|
||||
size1 = (uint32_t)(rsp.msg.args_data.arg2);
|
||||
if ((size0 > HSM_ASYMKEY_MAX_SIZE) || (size1 > HSM_PROTECTMSG_MAX_SIZE)) {
|
||||
goto HSM_UPDATE_PROTECT_KEY_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(update_prokey_info->prokey.cryptokeyelementvalueref, size0,
|
||||
buffer_local + HSM_KEY_ELEMENT_SIZE, size0) != EOK) {
|
||||
goto HSM_UPDATE_PROTECT_KEY_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(update_prokey_info->prokey_protectmsg, size1,
|
||||
buffer_local + size0 + HSM_KEY_ELEMENT_SIZE, size1) != EOK) {
|
||||
goto HSM_UPDATE_PROTECT_KEY_Ex_Handle;
|
||||
}
|
||||
}
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
|
||||
HSM_UPDATE_PROTECT_KEY_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_UpdateAuth(uint32_t dev_id, HSM_UPDATE_KEYAUTH_INFO *update_keyauth_info)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size;
|
||||
uint32_t size0;
|
||||
uint32_t state;
|
||||
|
||||
ret = update_keyauth_para_check(update_keyauth_info);
|
||||
if (ret != TEE_SUCCESS)
|
||||
return ret;
|
||||
|
||||
ret = update_keyauth_request_sharemem(&buffer_local, &buffer_size, update_keyauth_info);
|
||||
if (ret != TEE_SUCCESS)
|
||||
return ret;
|
||||
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = ((uint64_t)(HSM_IV_SIZE + update_keyauth_info->past_key_authsize) << HSM_CONST_SHIFT_32) |
|
||||
(uint64_t)(HSM_KEY_PROTECT_SIZE + update_keyauth_info->past_key_authsize);
|
||||
msg.args_data.arg3 = ((uint64_t)(HSM_IV_SIZE + update_keyauth_info->new_key_authsize) << HSM_CONST_SHIFT_32) |
|
||||
HSM_MSG_RESUME;
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_UPDATE_KEY_AUTH_CMD, &msg, HSM_UPDATE_KEY_AUTH_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
if (ret == TEE_SUCCESS) {
|
||||
size0 = (uint32_t)(rsp.msg.args_data.arg2 >> HSM_CONST_SHIFT_32);
|
||||
if (size0 > HSM_PROTECTMSG_MAX_SIZE) {
|
||||
goto HSM_UPDATE_AUTH_Ex_Handle;
|
||||
}
|
||||
state = memmove_s(update_keyauth_info->key_protectmsg, size0, buffer_local, size0);
|
||||
if (state != EOK) {
|
||||
goto HSM_UPDATE_AUTH_Ex_Handle;
|
||||
}
|
||||
}
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
|
||||
HSM_UPDATE_AUTH_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_DeleteKey(uint32_t dev_id, HSM_DELETE_KEY_INFO *delete_key_info)
|
||||
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size;
|
||||
|
||||
ret = delete_key_para_check(delete_key_info);
|
||||
if (ret != TEE_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = delete_key_request_sharemem(&buffer_local, &buffer_size, delete_key_info);
|
||||
if (ret != TEE_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = ((uint64_t)(HSM_KEY_PROTECT_SIZE +
|
||||
delete_key_info->delete_key_authsize) << HSM_CONST_SHIFT_32) |
|
||||
(uint64_t)(HSM_IV_SIZE + delete_key_info->delete_key_authsize);
|
||||
msg.args_data.arg3 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_DELETE_KEY_CMD, &msg, HSM_DELETE_KEY_CMD, &rsp);
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return rsp.ret;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_ExportKey(uint32_t dev_id, HSM_EXPORT_KEY_INFO *export_key_info)
|
||||
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size;
|
||||
uint32_t size0;
|
||||
|
||||
ret = export_key_para_check(export_key_info);
|
||||
if (ret != TEE_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = export_key_request_sharemem(&buffer_local, &buffer_size, export_key_info);
|
||||
if (ret != TEE_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = ((uint64_t)(HSM_KEY_HEAD_SIZE + export_key_info->salt_size) << HSM_CONST_SHIFT_32) |
|
||||
(uint64_t)(HSM_KEY_ELEMENT_SIZE + export_key_info->export_key.cryptokeyelementsize);
|
||||
msg.args_data.arg3 = (((uint64_t)(HSM_IV_SIZE + export_key_info->export_key_authsize)) << HSM_CONST_SHIFT_32) |
|
||||
((uint64_t)(HSM_KEY_PROTECT_SIZE + export_key_info->export_key_authsize));
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_EXPORT_KEY_CMD, &msg, HSM_EXPORT_KEY_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
if (ret == TEE_SUCCESS) {
|
||||
size0 = (uint32_t)(rsp.msg.args_data.arg2 >> HSM_CONST_SHIFT_32);
|
||||
if (size0 > (HSM_ASYMKEY_MAX_SIZE + HSM_KEY_APPEND_SIZE)) {
|
||||
goto HSM_EXPORT_KEY_Ex_Handle;
|
||||
}
|
||||
if (memmove_s(export_key_info->export_key_info, size0, buffer_local, size0) != EOK) {
|
||||
goto HSM_EXPORT_KEY_Ex_Handle;
|
||||
}
|
||||
}
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
|
||||
HSM_EXPORT_KEY_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_Bbox(uint32_t dev_id, HSM_BBOX_INFO *hsm_bbox_info, uint64_t tv_sec, uint64_t tv_usec)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size = HSM_CLIENT_DDR_LEN;
|
||||
|
||||
buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (buffer_local == NULL) {
|
||||
tloge("TEE_HSM_Bbox, alloc smem failed!\n");
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = (((uint64_t)(sizeof(uint64_t)) << HSM_CONST_SHIFT_32) + sizeof(uint64_t));
|
||||
msg.args_data.arg3 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
if (memmove_s(buffer_local, sizeof(uint64_t), &tv_sec, sizeof(uint64_t)) != EOK) {
|
||||
goto HSM_BBOX_Ex_Handle;
|
||||
}
|
||||
if (memmove_s(buffer_local + sizeof(uint64_t), sizeof(uint64_t), &tv_usec, sizeof(uint64_t)) != EOK) {
|
||||
goto HSM_BBOX_Ex_Handle;
|
||||
}
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_BBOX_CMD, &msg, HSM_BBOX_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
if (ret == TEE_SUCCESS) {
|
||||
*hsm_bbox_info->state = *(uint32_t *)buffer_local;
|
||||
} else if (ret == TEE_ERROR_TIMEOUT) {
|
||||
*hsm_bbox_info->state = HSM_BBOX_TIMEOUT;
|
||||
}
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
|
||||
HSM_BBOX_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_notify_prereset(uint32_t dev_id)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size = HSM_CLIENT_DDR_LEN;
|
||||
|
||||
if (dev_id > 1) {
|
||||
return TEE_SUCCESS;
|
||||
}
|
||||
buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (buffer_local == NULL) {
|
||||
tloge("TEE_HSM_notify_prereset, alloc smem failed!\n");
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg3 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_NOTIFY_PRERESET_CMD, &msg, HSM_NOTIFY_PRERESET_CMD, &rsp);
|
||||
ret = rsp.ret;
|
||||
tloge("TEE_HSM_notify_prereset ret=0x%x\n", ret);
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
|
||||
return ret;
|
||||
|
||||
HSM_BBOX_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
-1168
File diff suppressed because it is too large
Load Diff
-108
@@ -1,108 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2019-2020. All rights reserved.
|
||||
* Description: HSM rpmb ak key provide api
|
||||
* Author: chenyao
|
||||
* Create: 2020-05-06
|
||||
* Notes:
|
||||
* History:
|
||||
*/
|
||||
#include <stdarg.h>
|
||||
#include "ta_framework.h"
|
||||
#include "tee_log.h"
|
||||
#include "tee_obj.h"
|
||||
#include "securec.h"
|
||||
#include "string.h"
|
||||
#include "tee_service_public.h"
|
||||
#include "hsm_rpmb_api.h"
|
||||
#include "hsm_public.h"
|
||||
|
||||
TEE_Result TEE_HSM_GenRpmbKey(uint32_t dev_id, uint8_t *rpmb_key)
|
||||
{
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size = HSM_CLIENT_DDR_LEN;
|
||||
uint32_t key_size;
|
||||
uint32_t state;
|
||||
|
||||
buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (buffer_local == NULL) {
|
||||
return TEE_FAIL;
|
||||
}
|
||||
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg3 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_GEN_RPMBKEY_CMD, &msg, HSM_GEN_RPMBKEY_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
if (ret == TEE_SUCCESS) {
|
||||
key_size = (uint32_t)(rsp.msg.args_data.arg2 >> HSM_CONST_SHIFT_32);
|
||||
if (key_size != HSM_RPMB_KEY_LEN) {
|
||||
ret = TEE_ERROR_OUT_OF_MEMORY;
|
||||
goto OUT;
|
||||
}
|
||||
state = memmove_s((void *)rpmb_key, key_size, buffer_local, key_size);
|
||||
if (state != EOK) {
|
||||
ret = TEE_ERROR_OUT_OF_MEMORY;
|
||||
goto OUT;
|
||||
}
|
||||
}
|
||||
|
||||
OUT:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_GenRpmbWrappingKey(uint32_t dev_id, uint8_t *rpmb_wrapping_key)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size = HSM_CLIENT_DDR_LEN;
|
||||
uint32_t key_size;
|
||||
uint32_t state;
|
||||
TEE_Result ret;
|
||||
|
||||
buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (buffer_local == NULL) {
|
||||
tloge("GenRpmbWrappingKey,alloc smem failed!\n");
|
||||
return TEE_FAIL;
|
||||
}
|
||||
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg3 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_GEN_RPMB_WARPPINGKEY_CMD, &msg, HSM_GEN_RPMB_WARPPINGKEY_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
if (ret == TEE_SUCCESS) {
|
||||
key_size = (uint32_t)(rsp.msg.args_data.arg2 >> HSM_CONST_SHIFT_32);
|
||||
if (key_size != HSM_RPMB_WRAPPING_KEY_LEN) {
|
||||
ret = TEE_ERROR_OUT_OF_MEMORY;
|
||||
goto OUT;
|
||||
}
|
||||
state = memmove_s(rpmb_wrapping_key, key_size, buffer_local, key_size);
|
||||
if (state != EOK) {
|
||||
ret = TEE_ERROR_OUT_OF_MEMORY;
|
||||
goto OUT;
|
||||
}
|
||||
}
|
||||
|
||||
OUT:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
}
|
||||
-116
@@ -1,116 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved.
|
||||
* Description: HSM verify api
|
||||
* Author: chenyao
|
||||
* Create: 2020-05-21
|
||||
* Notes:
|
||||
* History:
|
||||
*/
|
||||
#include <stdarg.h>
|
||||
#include "securec.h"
|
||||
#include "ta_framework.h"
|
||||
#include "tee_log.h"
|
||||
#include "tee_obj.h"
|
||||
#include "securec.h"
|
||||
#include "string.h"
|
||||
#include "hsm_public.h"
|
||||
#include "hsm_verify_api.h"
|
||||
#include "tee_service_public.h"
|
||||
#include "hsm_update_lib_api.h"
|
||||
#include "mem_ops_ext.h"
|
||||
|
||||
TEE_Result TEE_HSM_SOC_VERIFY(uint32_t dev_id, uint64_t image_addr, uint32_t image_len, uint32_t img_id)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size = HSM_CLIENT_DDR_LEN;
|
||||
|
||||
buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (buffer_local == NULL) {
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
if (memmove_s(buffer_local, IMG_ADDR_SIZE, &image_addr, IMG_ADDR_SIZE)) {
|
||||
goto HSM_SOC_VERIFY_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(buffer_local + IMG_ADDR_SIZE, IMG_LEN_SIZE, &image_len, IMG_LEN_SIZE)) {
|
||||
goto HSM_SOC_VERIFY_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(buffer_local + IMG_ADDR_SIZE + IMG_LEN_SIZE, IMG_ID_SIZE, &img_id, IMG_ID_SIZE)) {
|
||||
goto HSM_SOC_VERIFY_Ex_Handle;
|
||||
}
|
||||
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = (((uint64_t)IMG_ADDR_SIZE) << HSM_CONST_SHIFT_32) | (uint64_t)(IMG_LEN_SIZE);
|
||||
msg.args_data.arg3 = (((uint64_t)IMG_ID_SIZE) << HSM_CONST_SHIFT_32) | HSM_MSG_RESUME;
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_SOC_VERIFY_CMD, &msg, HSM_SOC_VERIFY_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
|
||||
HSM_SOC_VERIFY_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
TEE_Result TEE_HSM_Hboot1a_Trans(uint32_t dev_id)
|
||||
{
|
||||
tee_service_ipc_msg msg = {{0}};
|
||||
tee_service_ipc_msg_rsp rsp = {0};
|
||||
TEE_Result ret;
|
||||
uint8_t *buffer_local = NULL;
|
||||
uint32_t buffer_size = HSM_CLIENT_DDR_LEN;
|
||||
uint32_t image_addr = 0x9A9A4B4B;
|
||||
uint32_t image_len = 0xABAB55AA;
|
||||
|
||||
ret = lib_hboot1a_addr_get(dev_id, &image_addr, &image_len);
|
||||
if (ret != TEE_SUCCESS) {
|
||||
tloge("get hboot1_a addr fail\n");
|
||||
return TEE_SUCCESS;
|
||||
}
|
||||
|
||||
buffer_local = (uint8_t *)(uintptr_t)tee_alloc_sharemem_aux(&g_hsm_uuid, HSM_CLIENT_DDR_LEN);
|
||||
if (buffer_local == NULL) {
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
if (memmove_s(buffer_local, IMG_ADDR_SIZE, &image_addr, IMG_ADDR_SIZE) != EOK) {
|
||||
goto HSM_SOC_VERIFY_Ex_Handle;
|
||||
}
|
||||
|
||||
if (memmove_s(buffer_local + IMG_ADDR_SIZE, IMG_LEN_SIZE, &image_len, IMG_LEN_SIZE) != EOK) {
|
||||
goto HSM_SOC_VERIFY_Ex_Handle;
|
||||
}
|
||||
|
||||
msg.args_data.arg0 = (uint64_t)(uintptr_t)(buffer_local);
|
||||
msg.args_data.arg1 = (uint64_t)(buffer_size);
|
||||
msg.args_data.arg2 = (((uint64_t)IMG_ADDR_SIZE) << HSM_CONST_SHIFT_32) | (uint64_t)(IMG_LEN_SIZE);
|
||||
msg.args_data.arg3 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg4 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg5 = HSM_MSG_RESUME;
|
||||
msg.args_data.arg6 = (uint64_t)dev_id;
|
||||
msg.args_data.arg7 = HSM_MSG_RESUME;
|
||||
|
||||
tee_common_ipc_proc_cmd(HSM_TASK_NAME, HSM_HBOOT1A_TRANS_CMD, &msg, HSM_HBOOT1A_TRANS_CMD, &rsp);
|
||||
|
||||
ret = rsp.ret;
|
||||
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return ret;
|
||||
|
||||
HSM_SOC_VERIFY_Ex_Handle:
|
||||
__SRE_MemFreeShared(buffer_local, buffer_size);
|
||||
return TEE_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
@@ -1,74 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2019-2021. All rights reserved.
|
||||
* Description: scmi libs source file
|
||||
* Author: huawei
|
||||
* Create: 2019/1/14
|
||||
*/
|
||||
#include "sre_syscalls_id_ext.h"
|
||||
#include "hmdrv.h"
|
||||
|
||||
#include "syscall_api_common.h"
|
||||
#include "scmi_lib_api.h"
|
||||
|
||||
#define SCMI_SMEM_PADDR2VADDR_MAGIC 0x5A5A5A5A
|
||||
|
||||
uint32_t lib_scmi_channel_open(uint32_t dev_id, uint32_t channel)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX2] = { 0 };
|
||||
|
||||
args[ARRAY_INDEX0] = channel;
|
||||
args[ARRAY_INDEX1] = dev_id;
|
||||
|
||||
return hm_drv_call(SYSCALL_SCMI_CHANNEL_OPEN, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_scmi_channel_close(uint32_t dev_id, uint32_t channel)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX2] = { 0 };
|
||||
|
||||
args[ARRAY_INDEX0] = channel;
|
||||
args[ARRAY_INDEX1] = dev_id;
|
||||
|
||||
return hm_drv_call(SYSCALL_SCMI_CHANNEL_CLOSE, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_scmi_channel_send_data(uint32_t dev_id, uint32_t channel,
|
||||
uint8_t *buf, uint32_t len)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX5] = {0};
|
||||
uint64_t buf_addr = (uint64_t)(uintptr_t)buf;
|
||||
|
||||
args[ARRAY_INDEX0] = channel;
|
||||
args[ARRAY_INDEX1] = (uint64_t)upper_32_bits((uintptr_t)buf_addr);
|
||||
args[ARRAY_INDEX2] = (uint64_t)lower_32_bits((uintptr_t)buf_addr);
|
||||
args[ARRAY_INDEX3] = len;
|
||||
args[ARRAY_INDEX4] = dev_id;
|
||||
|
||||
return hm_drv_call(SYSCALL_SCMI_CHANNEL_SEND_DATA, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_scmi_check_task_and_get_data(uint32_t dev_id, uint32_t channel, uint8_t *buf, uint32_t len)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX5] = {0};
|
||||
uint64_t buf_addr = (uint64_t)(uintptr_t)buf;
|
||||
|
||||
args[ARRAY_INDEX0] = channel;
|
||||
args[ARRAY_INDEX1] = (uint64_t)upper_32_bits((uintptr_t)buf_addr);
|
||||
args[ARRAY_INDEX2] = (uint64_t)lower_32_bits((uintptr_t)buf_addr);
|
||||
args[ARRAY_INDEX3] = len;
|
||||
args[ARRAY_INDEX4] = dev_id;
|
||||
|
||||
return hm_drv_call(SYSCALL_SCMI_CHANNEL_TASK_AND_GET_DATA, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_hiss_shared_paddr_to_vaddr(uint32_t dev_id, uint64_t *vaddr_out)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX4] = {0};
|
||||
|
||||
args[ARRAY_INDEX0] = SCMI_SMEM_PADDR2VADDR_MAGIC;
|
||||
args[ARRAY_INDEX1] = (uint64_t)lower_32_bits((uintptr_t)vaddr_out);
|
||||
args[ARRAY_INDEX2] = (uint64_t)upper_32_bits((uintptr_t)vaddr_out);
|
||||
args[ARRAY_INDEX3] = dev_id;
|
||||
|
||||
return hm_drv_call(SYSCALL_SCMI_CHANNEL_PADDR2VADDR, args, ARRAY_SIZE(args));
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved.
|
||||
* Description: scmi libs api file
|
||||
* Author: pengcong
|
||||
* Create: 2020/1/14
|
||||
*/
|
||||
|
||||
#ifndef SCMI_LIB_API_H
|
||||
#define SCMI_LIB_API_H
|
||||
|
||||
#define SCMI_LIB_RESULT_SUCCESS 0x0U
|
||||
|
||||
uint32_t lib_scmi_channel_open(uint32_t dev_id, uint32_t channel);
|
||||
uint32_t lib_scmi_channel_close(uint32_t dev_id, uint32_t channel);
|
||||
uint32_t lib_scmi_channel_send_data(uint32_t dev_id, uint32_t channel, uint8_t *buf, uint32_t len);
|
||||
uint32_t lib_scmi_check_task_and_get_data(uint32_t dev_id, uint32_t channel, uint8_t *buf, uint32_t len);
|
||||
uint32_t lib_hiss_shared_paddr_to_vaddr(uint32_t dev_id, uint64_t *vaddr_out);
|
||||
#endif
|
||||
@@ -1,20 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2019-2020. All rights reserved.
|
||||
* Description: sec libs source file
|
||||
* Author: chenyao
|
||||
* Create: 2019/4/2
|
||||
*/
|
||||
#include "sre_syscalls_id.h"
|
||||
#include "hmdrv.h"
|
||||
|
||||
#include "syscall_api_common.h"
|
||||
#include "sec_lib_api.h"
|
||||
|
||||
uint32_t __get_provision_key(uint8_t *provision_key)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)(provision_key),
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_SYSCALL_SEC_PRO_KEY, args, ARRAY_SIZE(args));
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2019-2021. All rights reserved.
|
||||
* Description: sec libs api file
|
||||
* Author: chenyao
|
||||
* Create: 2020/4/2
|
||||
*/
|
||||
|
||||
#ifndef SEC_LIB_API_H
|
||||
#define SEC_LIB_API_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
uint32_t __get_provision_key(uint8_t *provision_key);
|
||||
|
||||
#endif
|
||||
@@ -1,46 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2019-2020. All rights reserved.
|
||||
* Description: sfc libs source file
|
||||
* Author: chenyao
|
||||
* Create: 2019/11/2
|
||||
*/
|
||||
#include "sre_syscalls_id_ext.h"
|
||||
#include "hmdrv.h"
|
||||
|
||||
#include "syscall_api_common.h"
|
||||
#include "sfc_lib_api.h"
|
||||
|
||||
uint32_t lib_mdc_flash_read(uint32_t offset, uint8_t *buffer, uint32_t length, uint32_t chip_id)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX4] = {0};
|
||||
|
||||
args[ARRAY_INDEX0] = offset;
|
||||
args[ARRAY_INDEX1] = length;
|
||||
args[ARRAY_INDEX2] = chip_id;
|
||||
args[ARRAY_INDEX3] = (uint64_t)(uintptr_t)(buffer);
|
||||
|
||||
return hm_drv_call(SYSCALL_MDC_FLASH_READ, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_mdc_flash_write(uint32_t offset, uint8_t *buffer, uint32_t length, uint32_t chip_id)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX4] = {0};
|
||||
|
||||
args[ARRAY_INDEX0] = offset;
|
||||
args[ARRAY_INDEX1] = length;
|
||||
args[ARRAY_INDEX2] = chip_id;
|
||||
args[ARRAY_INDEX3] = (uint64_t)(uintptr_t)(buffer);
|
||||
|
||||
return hm_drv_call(SYSCALL_MDC_FLASH_WRITE, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t lib_mdc_flash_erase(uint32_t offset, uint32_t length, uint32_t chip_id)
|
||||
{
|
||||
uint64_t args[ARRAY_INDEX4] = {0};
|
||||
|
||||
args[ARRAY_INDEX0] = offset;
|
||||
args[ARRAY_INDEX1] = length;
|
||||
args[ARRAY_INDEX2] = chip_id;
|
||||
|
||||
return hm_drv_call(SYSCALL_MDC_FLASH_ERASE, args, ARRAY_SIZE(args));
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2020-2021. All rights reserved.
|
||||
* Description: sfc libs api file
|
||||
* Author: huawei
|
||||
* Create: 2020/11/2
|
||||
*/
|
||||
|
||||
#ifndef SFC_LIB_API_H
|
||||
#define SFC_LIB_API_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#define SEC_LIB_RESULT_SUCCESS 0x0
|
||||
#define SEC_LIB_RESULT_FAILED 0x5A5A5A5A
|
||||
|
||||
uint32_t lib_mdc_flash_read(uint32_t offset, uint8_t *buffer, uint32_t length, uint32_t chip_id);
|
||||
uint32_t lib_mdc_flash_write(uint32_t offset, uint8_t *buffer, uint32_t length, uint32_t chip_id);
|
||||
uint32_t lib_mdc_flash_erase(uint32_t offset, uint32_t length, uint32_t chip_id);
|
||||
|
||||
#endif
|
||||
@@ -1,49 +0,0 @@
|
||||
include(apps_lib_common)
|
||||
include(apps_svc_common)
|
||||
include(apps_sub_cfg)
|
||||
include(apps_subcommon)
|
||||
include(apps_feature_macro)
|
||||
|
||||
list(APPEND TEE_C_SOURCES
|
||||
${PROJECT_SOURCE_DIR}/vendor/common/src/chip_info.c
|
||||
)
|
||||
|
||||
list(APPEND TEE_INCLUDE_PATH
|
||||
${PROJECT_SOURCE_DIR}/drivers/platdrv/include
|
||||
${PROJECT_SOURCE_DIR}/vendor/common/include
|
||||
${PLATFORM_DIR}/common/tee_config
|
||||
${PLATFORM_DIR}/${PLATFORM_NAME}/${PRODUCT_NAME}/common/tee_config
|
||||
${PROJECT_SOURCE_DIR}/libs/libplatdrv/platform/ascend/efuse
|
||||
${PROJECT_SOURCE_DIR}/libs/libplatdrv/platform/ascend/sec/include
|
||||
${PROJECT_SOURCE_DIR}/vendor/ascend/libvendor_shared/src/libhsm_client/include
|
||||
${PROJECT_SOURCE_DIR}/sys_libs/libteeagentcommon_client/include
|
||||
${PROJECT_SOURCE_DIR}/sys_libs/libteeagentcommon_client/src
|
||||
${PROJECT_SOURCE_DIR}/libs/libplatdrv/platform/ascend/efuse
|
||||
${PROJECT_SOURCE_DIR}/vendor/ascend/libvendor_shared/src/efuse
|
||||
${PROJECT_SOURCE_DIR}/libs/libplatdrv/platform/ascend/sfc
|
||||
)
|
||||
|
||||
if ("${TARGET_BUILD_VARIANT}" STREQUAL "user")
|
||||
list(APPEND TEE_C_DEFINITIONS
|
||||
DEF_BUILDUSERMODE
|
||||
)
|
||||
endif()
|
||||
|
||||
tee_add_library(vendor_static STATIC
|
||||
SOURCES
|
||||
${TEE_C_SOURCES}
|
||||
|
||||
COMPILE_TOOL
|
||||
clang
|
||||
|
||||
COMPILER_FLAGS
|
||||
${TEE_C_FLAGS}
|
||||
|
||||
COMPILER_DEFINITIONS
|
||||
${TEE_C_DEFINITIONS}
|
||||
|
||||
PRIVATE_INCLUDES
|
||||
${TEE_INCLUDE_PATH}
|
||||
|
||||
NO_INSTALL
|
||||
)
|
||||
@@ -1,32 +0,0 @@
|
||||
MODULE := libvendor_static$(TARG).a
|
||||
|
||||
flags += -Wall -Wextra
|
||||
|
||||
libvendor_static_c_files := $(wildcard ../libvendor_shared/src/*.c)
|
||||
libvendor_static_c_files += $(wildcard $(TOPDIR)/vendor/common/src/*.c)
|
||||
libvendor_static_c_files += $(wildcard src/efuse/*.c)
|
||||
libvendor_static_c_files += $(wildcard src/hsm_upgrade/*.c)
|
||||
libvendor_static_c_files += $(wildcard src/scmi/*.c)
|
||||
libvendor_static_c_files += $(wildcard src/sec/*.c)
|
||||
libvendor_static_c_files += $(wildcard src/libhsm_client/src/*.c)
|
||||
|
||||
inc-flags += -I$(TOPDIR)/drivers/platdrv/include
|
||||
inc-flags += -I$(TOPDIR)/vendor/common/include
|
||||
inc-flags += -I$(PLATFORM_DIR)/common/tee_config
|
||||
inc-flags += -I$(PLATFORM_DIR)/$(PLATFORM_NAME)/$(PRODUCT_NAME)/common/tee_config
|
||||
inc-flags += -I$(TOPDIR)/libs/libplatdrv/platform/ascend/efuse
|
||||
inc-flags += -I$(TOPDIR)/libs/libplatdrv/platform/ascend/sec/include/
|
||||
|
||||
#for hsm_client
|
||||
inc-flags += -I$(TOPDIR)/vendor/ascend/libvendor_shared/src/libhsm_client/include
|
||||
inc-flags += -I$(TOPDIR)/sys_libs/libteeagentcommon_client/include
|
||||
inc-flags += -I$(TOPDIR)/sys_libs/libteeagentcommon_client/src
|
||||
inc-flags += -I$(TOPDIR)/libs/libplatdrv/platform/ascend/efuse
|
||||
inc-flags += -I$(TOPDIR)/vendor/ascend/libvendor_shared/src/efuse
|
||||
|
||||
ifeq ($(strip $(TARGET_BUILD_VARIANT)), user)
|
||||
inc-flags += -DDEF_BUILDUSERMODE
|
||||
endif
|
||||
|
||||
include $(TOPDIR)/mk/lib-common.mk
|
||||
include $(TOPDIR)/mk/feature-macro.mk
|
||||
-2
@@ -1,2 +0,0 @@
|
||||
add_subdirectory(libvendor_shared)
|
||||
add_subdirectory(libvendor_static)
|
||||
@@ -1,75 +0,0 @@
|
||||
include(apps_lib_common)
|
||||
include(apps_svc_common)
|
||||
include(apps_sub_cfg)
|
||||
include(apps_subcommon)
|
||||
include(apps_feature_macro)
|
||||
|
||||
list(APPEND TEE_C_SOURCES
|
||||
${PROJECT_SOURCE_DIR}/vendor/common/src/chip_info.c
|
||||
)
|
||||
|
||||
list(APPEND TEE_INCLUDE_PATH
|
||||
${PROJECT_SOURCE_DIR}/drivers/platdrv/include
|
||||
${PROJECT_SOURCE_DIR}/vendor/common/include
|
||||
${PLATFORM_DIR}/common/tee_config
|
||||
${PLATFORM_DIR}/${PLATFORM_NAME}/${PRODUCT_NAME}/common/tee_config
|
||||
)
|
||||
|
||||
if ("${TARGET_BUILD_VARIANT}" STREQUAL "user")
|
||||
list(APPEND TEE_C_DEFINITIONS
|
||||
DEF_BUILDUSERMODE
|
||||
)
|
||||
endif()
|
||||
|
||||
list(APPEND VENDOR_SHARED_LINKER_FLAGS
|
||||
-Wl,-shared
|
||||
-Wl,-X
|
||||
-Wl,-EL
|
||||
-Wl,-z,text
|
||||
-Wl,-z,now
|
||||
-Wl,-z,relro
|
||||
-Wl,-z,noexecstack
|
||||
-Wl,--gc-sections
|
||||
-L${PREBUILD_LIBS}/${ARCH}
|
||||
-nostdlib
|
||||
-Wl,-z,max-page-size=4096
|
||||
)
|
||||
|
||||
list(FIND PRODUCT_APPS "vendor_shared" index)
|
||||
if (${index} GREATER -1)
|
||||
set(IF_INSTALL DO_INSTALL)
|
||||
endif()
|
||||
|
||||
tee_add_library(vendor_shared SHARED
|
||||
SOURCES
|
||||
${TEE_C_SOURCES}
|
||||
|
||||
COMPILE_TOOL
|
||||
clang
|
||||
|
||||
COMPILER_FLAGS
|
||||
${TEE_C_FLAGS}
|
||||
|
||||
COMPILER_DEFINITIONS
|
||||
${TEE_C_DEFINITIONS}
|
||||
|
||||
PRIVATE_INCLUDES
|
||||
${TEE_INCLUDE_PATH}
|
||||
|
||||
LINKER_FLAGS
|
||||
${CHOOSE_LLD}
|
||||
${VENDOR_SHARED_LINKER_FLAGS}
|
||||
${COMMON_LDFLAGS}
|
||||
|
||||
LINKGROUP
|
||||
${VENDOR_SHARED_LIBRARIES}
|
||||
${COMMON_LIBGCC_COMPS}
|
||||
|
||||
LIBS_INSTALL_PATH
|
||||
${BOOTFS_STAGE_DIR}
|
||||
|
||||
${IF_INSTALL}
|
||||
)
|
||||
if ("${ARCH}" STREQUAL "arm")
|
||||
set_target_properties(vendor_shared PROPERTIES OUTPUT_NAME "vendor_shared_a32")
|
||||
endif()
|
||||
@@ -1,33 +0,0 @@
|
||||
SONAME := libvendor_shared$(TARG).so
|
||||
|
||||
libvendor_shared_c_files := $(wildcard src/*.c)
|
||||
libvendor_shared_c_files += $(wildcard $(TOPDIR)/vendor/common/src/*.c)
|
||||
|
||||
inc-flags += -I$(TOPDIR)/drivers/platdrv/include
|
||||
inc-flags += -I$(TOPDIR)/vendor/common/include
|
||||
inc-flags += -I$(PLATFORM_DIR)/common/tee_config
|
||||
inc-flags += -I$(PLATFORM_DIR)/$(PLATFORM_NAME)/$(PRODUCT_NAME)/common/tee_config
|
||||
|
||||
ifeq ($(strip $(TARGET_BUILD_VARIANT)), user)
|
||||
inc-flags += -DDEF_BUILDUSERMODE
|
||||
endif
|
||||
|
||||
include $(TOPDIR)/mk/lib-common.mk
|
||||
include $(TOPDIR)/mk/feature-macro.mk
|
||||
|
||||
MODULE_FILE = $(BUILD_DIR)/$(SONAME)
|
||||
INSTALL_FILE = $(LIB_DIR)/$(SONAME)
|
||||
|
||||
target: $(MODULE_FILE)
|
||||
|
||||
$(INSTALL_FILE): $(MODULE_FILE)
|
||||
@test -d $(LIB_DIR) || mkdir -p $(LIB_DIR)
|
||||
@echo "[ INSTALL ] $(MODULE_FILE)"
|
||||
$(VER)cp -rafp $(MODULE_FILE) $(LIB_DIR)
|
||||
|
||||
|
||||
$(MODULE_FILE): $(libvendor_shared_objs)
|
||||
@echo "[ LD ] $@ LIB_DIR=$(LIB_DIR)"
|
||||
$(VER)$(LD) --shared -X -EL -z text -z now -z relro -z noexecstack --gc-sections -o $@ \
|
||||
$^ -L$(LIB_DIR) -L$(PREBUILD_LIBS)/$(ARCH) --start-group $(LIB_VENDOR_FLAGS) \
|
||||
$(LIBCOMPILER_RT_BUILTINS) --end-group -nostdlib
|
||||
@@ -1,41 +0,0 @@
|
||||
include(apps_lib_common)
|
||||
include(apps_svc_common)
|
||||
include(apps_sub_cfg)
|
||||
include(apps_subcommon)
|
||||
include(apps_feature_macro)
|
||||
|
||||
list(APPEND TEE_C_SOURCES
|
||||
${PROJECT_SOURCE_DIR}/vendor/common/src/chip_info.c
|
||||
)
|
||||
|
||||
list(APPEND TEE_INCLUDE_PATH
|
||||
${PROJECT_SOURCE_DIR}/drivers/platdrv/include
|
||||
${PROJECT_SOURCE_DIR}/vendor/common/include
|
||||
${PLATFORM_DIR}/common/tee_config
|
||||
${PLATFORM_DIR}/${PLATFORM_NAME}/${PRODUCT_NAME}/common/tee_config
|
||||
)
|
||||
|
||||
if ("${TARGET_BUILD_VARIANT}" STREQUAL "user")
|
||||
list(APPEND TEE_C_DEFINITIONS
|
||||
DEF_BUILDUSERMODE
|
||||
)
|
||||
endif()
|
||||
|
||||
tee_add_library(vendor_static STATIC
|
||||
SOURCES
|
||||
${TEE_C_SOURCES}
|
||||
|
||||
COMPILE_TOOL
|
||||
clang
|
||||
|
||||
COMPILER_FLAGS
|
||||
${TEE_C_FLAGS}
|
||||
|
||||
COMPILER_DEFINITIONS
|
||||
${TEE_C_DEFINITIONS}
|
||||
|
||||
PRIVATE_INCLUDES
|
||||
${TEE_INCLUDE_PATH}
|
||||
|
||||
NO_INSTALL
|
||||
)
|
||||
@@ -1,16 +0,0 @@
|
||||
MODULE := libvendor_static$(TARG).a
|
||||
|
||||
libvendor_static_c_files := $(wildcard ../libvendor_shared/src/*.c)
|
||||
libvendor_static_c_files += $(wildcard $(TOPDIR)/vendor/common/src/*.c)
|
||||
|
||||
inc-flags += -I$(TOPDIR)/drivers/platdrv/include
|
||||
inc-flags += -I$(TOPDIR)/vendor/common/include
|
||||
inc-flags += -I$(PLATFORM_DIR)/common/tee_config
|
||||
inc-flags += -I$(PLATFORM_DIR)/$(PLATFORM_NAME)/$(PRODUCT_NAME)/common/tee_config
|
||||
|
||||
ifeq ($(strip $(TARGET_BUILD_VARIANT)), user)
|
||||
inc-flags += -DDEF_BUILDUSERMODE
|
||||
endif
|
||||
|
||||
include $(TOPDIR)/mk/lib-common.mk
|
||||
include $(TOPDIR)/mk/feature-macro.mk
|
||||
-2
@@ -1,2 +0,0 @@
|
||||
add_subdirectory(libvendor_shared)
|
||||
add_subdirectory(libvendor_static)
|
||||
@@ -1,106 +0,0 @@
|
||||
include(apps_lib_common)
|
||||
include(apps_svc_common)
|
||||
include(apps_sub_cfg)
|
||||
include(apps_subcommon)
|
||||
include(apps_feature_macro)
|
||||
|
||||
list(APPEND TEE_C_SOURCES
|
||||
${PROJECT_SOURCE_DIR}/vendor/common/src/chip_info.c
|
||||
${PROJECT_SOURCE_DIR}/vendor/common/src/tee_crypto_kds_api.c
|
||||
)
|
||||
|
||||
list(APPEND TEE_INCLUDE_PATH
|
||||
${PROJECT_SOURCE_DIR}/drivers/platdrv/include
|
||||
${PROJECT_SOURCE_DIR}/vendor/common/include
|
||||
${PLATFORM_DIR}/common/tee_config
|
||||
${PLATFORM_DIR}/${PLATFORM_NAME}/${PRODUCT_NAME}/common/tee_config
|
||||
)
|
||||
|
||||
if ("${TARGET_BUILD_VARIANT}" STREQUAL "user")
|
||||
list(APPEND TEE_C_FLAGS
|
||||
-DDEF_BUILDUSERMODE
|
||||
)
|
||||
endif()
|
||||
|
||||
list(APPEND VENDOR_SHARED_LINKER_FLAGS
|
||||
-Wl,--shared
|
||||
-Wl,-X
|
||||
-Wl,-EL
|
||||
-Wl,-z,text
|
||||
-Wl,-z,now
|
||||
-Wl,-z,relro
|
||||
-Wl,-z,noexecstack
|
||||
-Wl,--gc-sections
|
||||
-Wl,--version-script=${CMAKE_CURRENT_BINARY_DIR}/export.txt
|
||||
-Wl,-L${PREBUILD_LIBS}/${ARCH}
|
||||
-nostdlib
|
||||
-Wl,-z,max-page-size=4096
|
||||
${CMAKE_CURRENT_BINARY_DIR}/extern.txt
|
||||
)
|
||||
|
||||
if ("${ARCH}" STREQUAL "arm" AND "${CONFIG_ENABLE_XOM32}" STREQUAL "y")
|
||||
list(APPEND VENDOR_SHARED_LINKER_FLAGS
|
||||
-T${XOM_LIB_LDS}
|
||||
)
|
||||
endif()
|
||||
|
||||
list(REMOVE_ITEM TEE_C_FLAGS "-Werror")
|
||||
|
||||
set(TEE_PRECOMPILE_FLAGS ${TEE_C_FLAGS})
|
||||
list(REMOVE_ITEM TEE_PRECOMPILE_FLAGS "-march=armv8-a")
|
||||
foreach(d ${TEE_C_DEFINITIONS})
|
||||
list(APPEND TEE_PRECOMPILE_FLAGS -D${d})
|
||||
endforeach()
|
||||
|
||||
add_custom_target(ct_vendor_shared_export)
|
||||
add_custom_target(ct_vendor_shared_extern)
|
||||
add_custom_command(
|
||||
TARGET ct_vendor_shared_export
|
||||
COMMAND ${CMAKE_C_COMPILER} ${TEE_PRECOMPILE_FLAGS} -x assembler-with-cpp -E --no-line-commands ${CMAKE_CURRENT_SOURCE_DIR}/export.txt -o ${CMAKE_CURRENT_BINARY_DIR}/export.txt
|
||||
)
|
||||
add_custom_command(
|
||||
TARGET ct_vendor_shared_extern
|
||||
COMMAND ${CMAKE_C_COMPILER} ${TEE_PRECOMPILE_FLAGS} -x assembler-with-cpp -E --no-line-commands ${CMAKE_CURRENT_SOURCE_DIR}/extern.txt -o ${CMAKE_CURRENT_BINARY_DIR}/extern.txt
|
||||
)
|
||||
|
||||
list(FIND PRODUCT_APPS "vendor_shared" index)
|
||||
if (${index} GREATER -1)
|
||||
set(IF_INSTALL DO_INSTALL)
|
||||
endif()
|
||||
|
||||
tee_add_library(vendor_shared SHARED
|
||||
SOURCES
|
||||
${TEE_C_SOURCES}
|
||||
|
||||
COMPILE_TOOL
|
||||
clang
|
||||
|
||||
COMPILER_FLAGS
|
||||
${TEE_C_FLAGS}
|
||||
|
||||
COMPILER_DEFINITIONS
|
||||
${TEE_C_DEFINITIONS}
|
||||
|
||||
PRIVATE_INCLUDES
|
||||
${TEE_INCLUDE_PATH}
|
||||
|
||||
LINKER_FLAGS
|
||||
${CHOOSE_LLD}
|
||||
${VENDOR_SHARED_LINKER_FLAGS}
|
||||
${COMMON_LDFLAGS}
|
||||
|
||||
LINKGROUP
|
||||
${VENDOR_SHARED_LIBRARIES}
|
||||
${COMMON_LIBGCC_COMPS}
|
||||
|
||||
LIBS_INSTALL_PATH
|
||||
${BOOTFS_STAGE_DIR}
|
||||
|
||||
${IF_INSTALL}
|
||||
)
|
||||
if ("${ARCH}" STREQUAL "arm")
|
||||
set_target_properties(vendor_shared PROPERTIES OUTPUT_NAME "vendor_shared_a32")
|
||||
endif()
|
||||
if ("${BUILD_TOOL}" STREQUAL "clang")
|
||||
add_dependencies(vendor_shared ct_vendor_shared_extern ct_vendor_shared_export)
|
||||
endif()
|
||||
@@ -1,41 +0,0 @@
|
||||
SONAME := libvendor_shared$(TARG).so
|
||||
|
||||
libvendor_shared_c_files := $(wildcard src/*.c)
|
||||
libvendor_shared_c_files += $(wildcard $(TOPDIR)/vendor/common/src/*.c)
|
||||
|
||||
inc-flags += -I$(TOPDIR)/drivers/platdrv/include
|
||||
inc-flags += -I$(TOPDIR)/vendor/common/include
|
||||
inc-flags += -I$(PLATFORM_DIR)/common/tee_config
|
||||
inc-flags += -I$(PLATFORM_DIR)/$(PLATFORM_NAME)/$(PRODUCT_NAME)/common/tee_config
|
||||
|
||||
ifeq ($(strip $(TARGET_BUILD_VARIANT)), user)
|
||||
inc-flags += -DDEF_BUILDUSERMODE
|
||||
endif
|
||||
|
||||
include $(TOPDIR)/mk/lib-common.mk
|
||||
include $(TOPDIR)/mk/feature-macro.mk
|
||||
|
||||
MODULE_FILE = $(BUILD_DIR)/$(SONAME)
|
||||
INSTALL_FILE = $(LIB_DIR)/$(SONAME)
|
||||
|
||||
target: $(MODULE_FILE)
|
||||
|
||||
$(INSTALL_FILE): $(MODULE_FILE)
|
||||
@test -d $(LIB_DIR) || mkdir -p $(LIB_DIR)
|
||||
@echo "[ INSTALL ] $(MODULE_FILE)"
|
||||
$(VER)cp -rafp $(MODULE_FILE) $(LIB_DIR)
|
||||
|
||||
$(BUILD_DIR)/extern.txt: extern.txt $(BUILD_DIR)/export.txt
|
||||
@echo "preprocess ${BUILD_DIR}/extern.txt"
|
||||
@mkdir -p $(@D)
|
||||
@${CC} ${flags} -P -E -o $@ -x c $<
|
||||
$(BUILD_DIR)/export.txt: export.txt
|
||||
@echo "preprocess ${BUILD_DIR}/export.txt"
|
||||
@mkdir -p $(@D)
|
||||
@${CC} ${flags} -P -E -o $@ -x c $<
|
||||
|
||||
$(MODULE_FILE): $(BUILD_DIR)/extern.txt $(libvendor_shared_objs)
|
||||
@echo "[ LD ] $@ LIB_DIR=$(LIB_DIR)"
|
||||
$(VER)$(LD) --shared -X -EL -z text -z now -z relro -z noexecstack --gc-sections --version-script=$(BUILD_DIR)/export.txt -o $@ \
|
||||
$^ -L$(LIB_DIR) -L$(PREBUILD_LIBS)/$(ARCH)-$(HM_PLATFORM) --start-group $(ld-flags) $(LIB_VENDOR_FLAGS) \
|
||||
$(LIBGCC_FILE) --end-group -nostdlib -z max-page-size=4096
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
global:
|
||||
/* vendor_shared internal */
|
||||
__tee_hal_get_dieid;
|
||||
local: *;
|
||||
};
|
||||
@@ -1,4 +0,0 @@
|
||||
EXTERN(
|
||||
/* vendor_shared internal */
|
||||
__tee_hal_get_dieid
|
||||
)
|
||||
@@ -1,43 +0,0 @@
|
||||
include(apps_lib_common)
|
||||
include(apps_svc_common)
|
||||
include(apps_sub_cfg)
|
||||
include(apps_subcommon)
|
||||
include(apps_feature_macro)
|
||||
|
||||
list(APPEND TEE_C_SOURCES
|
||||
${PROJECT_SOURCE_DIR}/vendor/common/src/chip_info.c
|
||||
)
|
||||
|
||||
list(APPEND TEE_INCLUDE_PATH
|
||||
${PROJECT_SOURCE_DIR}/drivers/platdrv/include
|
||||
${PROJECT_SOURCE_DIR}/vendor/common/include
|
||||
${PLATFORM_DIR}/common/tee_config
|
||||
${PLATFORM_DIR}/${PLATFORM_NAME}/${PRODUCT_NAME}/common/tee_config
|
||||
)
|
||||
|
||||
if ("${TARGET_BUILD_VARIANT}" STREQUAL "user")
|
||||
list(APPEND TEE_C_FLAGS
|
||||
-DDEF_BUILDUSERMODE
|
||||
)
|
||||
endif()
|
||||
|
||||
list(REMOVE_ITEM TEE_C_FLAGS "-Werror")
|
||||
|
||||
tee_add_library(vendor_static STATIC
|
||||
SOURCES
|
||||
${TEE_C_SOURCES}
|
||||
|
||||
COMPILE_TOOL
|
||||
clang
|
||||
|
||||
COMPILER_FLAGS
|
||||
${TEE_C_FLAGS}
|
||||
|
||||
COMPILER_DEFINITIONS
|
||||
${TEE_C_DEFINITIONS}
|
||||
|
||||
PRIVATE_INCLUDES
|
||||
${TEE_INCLUDE_PATH}
|
||||
|
||||
NO_INSTALL
|
||||
)
|
||||
@@ -1,18 +0,0 @@
|
||||
MODULE := libvendor_static$(TARG).a
|
||||
|
||||
flags += -Wall -Wextra
|
||||
|
||||
libvendor_static_c_files := $(wildcard ../libvendor_shared/src/*.c)
|
||||
libvendor_static_c_files += $(wildcard $(TOPDIR)/vendor/common/src/*.c)
|
||||
|
||||
inc-flags += -I$(TOPDIR)/drivers/platdrv/include
|
||||
inc-flags += -I$(TOPDIR)/vendor/common/include
|
||||
inc-flags += -I$(PLATFORM_DIR)/common/tee_config
|
||||
inc-flags += -I$(PLATFORM_DIR)/$(PLATFORM_NAME)/$(PRODUCT_NAME)/common/tee_config
|
||||
|
||||
ifeq ($(strip $(TARGET_BUILD_VARIANT)), user)
|
||||
inc-flags += -DDEF_BUILDUSERMODE
|
||||
endif
|
||||
|
||||
include $(TOPDIR)/mk/lib-common.mk
|
||||
include $(TOPDIR)/mk/feature-macro.mk
|
||||
@@ -1,2 +0,0 @@
|
||||
add_subdirectory(libvendor_shared)
|
||||
add_subdirectory(libvendor_static)
|
||||
@@ -1,103 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2021-2021. All rights reserved.
|
||||
* Description: PIN security enhancement.
|
||||
* Create: 2021-06-07
|
||||
*/
|
||||
#ifndef PIN_CODE_API_H
|
||||
#define PIN_CODE_API_H
|
||||
#include <tee_internal_api.h>
|
||||
|
||||
#define unused (void)
|
||||
/* return code */
|
||||
typedef enum _pin_result_ {
|
||||
PINCODE_SUCCESS = TEE_SUCCESS,
|
||||
PINCODE_ERR_NOT_SUPPORTED = 0xA40F0001,
|
||||
PINCODE_ERR_BAD_PARAMS, /* 0xA40F0002 */
|
||||
PINCODE_ERR_BAD_LENGTH, /* 0xA40F0003 */
|
||||
PINCODE_ERR_RPMB_READ_FAILED, /* 0xA40F0004 */
|
||||
PINCODE_ERR_RPMB_WRITE_FAILED, /* 0xA40F0005 */
|
||||
PINCODE_ERR_COS_UNREADY, /* 0xA40F0006 */
|
||||
PINCODE_ERR_SHORT_BUFFER, /* 0xA40F0007 */
|
||||
PINCODE_ERR_SECURITY, /* 0xA40F0008 */
|
||||
PINCODE_ERR_RAPDU_ILLEGAL, /* 0xA40F0009 */
|
||||
PINCODE_ERR_BAD_RAPDU_LEN, /* 0xA40F000A */
|
||||
PINCODE_ERR_DERIVE_KEY, /* 0xA40F000B */
|
||||
PINCODE_ERR_ALLOC_OBJ_ERR, /* 0xA40F000C */
|
||||
PINCODE_ERR_ALLOC_HANDLE_ERR, /* 0xA40F000D */
|
||||
PINCODE_ERR_SET_KEY_ERR, /* 0xA40F000E */
|
||||
PINCODE_ERR_SET_CRYPTO_ERR, /* 0xA40F000F */
|
||||
PINCODE_ERR_HMAC_INIT, /* 0xA40F0010 */
|
||||
PINCODE_ERR_HMAC_UPDATE, /* 0xA40F0011 */
|
||||
PINCODE_ERR_HMAC_DOFINAL, /* 0xA40F0012 */
|
||||
PINCODE_ERR_VERIFY_PIN, /* 0xA40F0013 */
|
||||
PINCODE_ERR_UNKNOWN, /* 0xA40F000E */
|
||||
} pin_result;
|
||||
|
||||
#define pincode_err_others(sw) (0xA40F0000 | (sw))
|
||||
|
||||
/* structure of parameters */
|
||||
struct memref_in {
|
||||
const uint8_t *buffer;
|
||||
uint32_t length;
|
||||
};
|
||||
|
||||
struct memref_out {
|
||||
uint8_t *buffer;
|
||||
uint32_t *size; /* the maximum size of buffer in bytes for input, the real size of buffer in bytes for output. */
|
||||
};
|
||||
|
||||
/*
|
||||
* @brief : registers pin.
|
||||
* @param[in] : key_id, the key id.
|
||||
* @param[in] : pin, pin hash value.
|
||||
* @param[out] : handle, the handle of the PIN.
|
||||
* @param[out] : key_factor, the key factor used for generate handle.
|
||||
* @return : Operation status, success(0) or other failure status.
|
||||
*/
|
||||
inline TEE_Result tee_ext_pincode_register_pin(const struct memref_in *key_id, const struct memref_in *pin,
|
||||
struct memref_out *handle, struct memref_out *key_factor)
|
||||
{
|
||||
unused(key_id);
|
||||
unused(pin);
|
||||
unused(handle);
|
||||
unused(key_factor);
|
||||
return PINCODE_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @brief : verifies pin.
|
||||
* @param[in] : key_id, the key id.
|
||||
* @param[in] : pin, pin hash value.
|
||||
* @param[in] : handle, the handle of the PIN.
|
||||
* @param[out] : key_factor, the key factor used for generate handle.
|
||||
* @return : Operation status, success(0) or other failure status.
|
||||
*/
|
||||
inline TEE_Result tee_ext_pincode_verify_pin(const struct memref_in *key_id, const struct memref_in *pin,
|
||||
const struct memref_in *handle, struct memref_out *key_factor)
|
||||
{
|
||||
unused(key_id);
|
||||
unused(pin);
|
||||
unused(handle);
|
||||
unused(key_factor);
|
||||
return PINCODE_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @brief : power on the chip.
|
||||
* @return : Operation status, success(0) or other failure status.
|
||||
*/
|
||||
inline TEE_Result tee_ext_pincode_poweron(void)
|
||||
{
|
||||
return PINCODE_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @brief : power off the chip.
|
||||
* @return : Operation status, success(0) or other failure status.
|
||||
*/
|
||||
inline TEE_Result tee_ext_pincode_poweroff(void)
|
||||
{
|
||||
return PINCODE_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -1,32 +0,0 @@
|
||||
# MODULE is a lib
|
||||
MODULE := libseplat.a
|
||||
|
||||
libseplat_c_files += $(wildcard src/*.c)
|
||||
|
||||
c-flags += -fno-builtin
|
||||
|
||||
c-flags += -I$(TOPDIR)/vendor/higeneric/libseplat/include
|
||||
c-flags += -I$(TOPDIR)/vendor/higeneric/libvendor_shared/src
|
||||
ifeq ($(chip_type),es)
|
||||
c-flags += -I$(TOPDIR)/../../../../../vendor/hisi/ap/platform/$(TARGET_BOARD_PLATFORM)_es
|
||||
else
|
||||
c-flags += -I$(TOPDIR)/../../../../../vendor/hisi/ap/platform/$(TARGET_BOARD_PLATFORM)
|
||||
endif
|
||||
|
||||
c-flags += -Werror
|
||||
c-flags += -Wextra
|
||||
c-flags += -Wdate-time
|
||||
c-flags += -Wfloat-equal
|
||||
c-flags += -Wshadow
|
||||
c-flags += -Wformat=2
|
||||
c-flags += -O2
|
||||
|
||||
ifeq ($(seplat), london)
|
||||
c-flags += -DCONFIG_SEPLAT_FEATURE
|
||||
endif # london
|
||||
|
||||
include $(TOPDIR)/mk/lib-common.mk
|
||||
|
||||
# Header files/directories this library provides
|
||||
EXPORT_HDRS := $(wildcard include/*)
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2021-2021. All rights reserved.
|
||||
* Description:Header file for seplat API.
|
||||
* Create: 2021/01/03
|
||||
*/
|
||||
|
||||
#ifndef SEPLAT_API_H
|
||||
#define SEPLAT_API_H
|
||||
|
||||
#include <tee_internal_api.h>
|
||||
#include <stdint.h>
|
||||
|
||||
TEE_Result TEE_EXT_SEPLATIsAvailable(void);
|
||||
TEE_Result TEE_EXT_SEPLATPowerOn(uint32_t vote_id);
|
||||
TEE_Result TEE_EXT_SEPLATPowerOff(uint32_t vote_id);
|
||||
TEE_Result TEE_EXT_SEPLATReset(uint32_t vote_id, uint32_t op_type);
|
||||
|
||||
#endif /* SEPLAT_API_H */
|
||||
@@ -1,84 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2020-2021. All rights reserved.
|
||||
* Description:APIs for sepalt.
|
||||
* Create: 2021/01/03
|
||||
*/
|
||||
|
||||
#include "seplat_api.h"
|
||||
#include "seplat.h"
|
||||
#include "seplat_define.h"
|
||||
#include "seplat_errno.h"
|
||||
#include "seplat_status.h"
|
||||
|
||||
#ifdef CONFIG_SEPLAT_FEATURE
|
||||
TEE_Result TEE_EXT_SEPLATIsAvailable(void)
|
||||
{
|
||||
uint32_t ret;
|
||||
|
||||
ret = seplat_get_dts_status();
|
||||
if (ret == SEPLAT_DTS_ABSENCE)
|
||||
tloge("%s:seplat is absence!\n", __func__);
|
||||
return ret;
|
||||
}
|
||||
|
||||
TEE_Result TEE_EXT_SEPLATPowerOn(uint32_t vote_id)
|
||||
{
|
||||
uint32_t ret;
|
||||
|
||||
ret = seplat_power_ctrl(vote_id, SEPLAT_POWER_ON_CMD, SEPLAT_POWER_OP_BOOT);
|
||||
if (ret != SEPLAT_OK) {
|
||||
tloge("%s:power on failed:vote:%d, ret=%x.\n", __func__, vote_id, ret);
|
||||
return ret;
|
||||
}
|
||||
return TEE_SUCCESS;
|
||||
}
|
||||
|
||||
TEE_Result TEE_EXT_SEPLATPowerOff(uint32_t vote_id)
|
||||
{
|
||||
uint32_t ret;
|
||||
|
||||
ret = seplat_power_ctrl(vote_id, SEPLAT_POWER_OFF_CMD, SEPLAT_POWER_OP_BOOT);
|
||||
if (ret != SEPLAT_OK) {
|
||||
tloge("%s:power off failed:vote:%d, ret=%x.\n", __func__, vote_id, ret);
|
||||
return ret;
|
||||
}
|
||||
return TEE_SUCCESS;
|
||||
}
|
||||
|
||||
TEE_Result TEE_EXT_SEPLATReset(uint32_t vote_id, uint32_t op_type)
|
||||
{
|
||||
uint32_t ret;
|
||||
|
||||
ret = seplat_power_ctrl(vote_id, SEPLAT_POWER_RESET_CMD, op_type);
|
||||
if (ret != SEPLAT_OK) {
|
||||
tloge("%s:reset failed:vote:%d, ret=%x.\n", __func__, vote_id, ret);
|
||||
return ret;
|
||||
}
|
||||
return TEE_SUCCESS;
|
||||
}
|
||||
#else /* CONFIG_SEPLAT_FEATURE */
|
||||
TEE_Result TEE_EXT_SEPLATIsAvailable(void)
|
||||
{
|
||||
return TEE_ERROR_SERVICE_NOT_EXIST;
|
||||
}
|
||||
|
||||
TEE_Result TEE_EXT_SEPLATPowerOn(uint32_t vote_id)
|
||||
{
|
||||
(void)vote_id;
|
||||
return TEE_ERROR_SERVICE_NOT_EXIST;
|
||||
}
|
||||
|
||||
TEE_Result TEE_EXT_SEPLATPowerOff(uint32_t vote_id)
|
||||
{
|
||||
(void)vote_id;
|
||||
return TEE_ERROR_SERVICE_NOT_EXIST;
|
||||
}
|
||||
|
||||
TEE_Result TEE_EXT_SEPLATReset(uint32_t vote_id, uint32_t op_type)
|
||||
{
|
||||
(void)vote_id;
|
||||
(void)op_type;
|
||||
return TEE_ERROR_SERVICE_NOT_EXIST;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_SEPLAT_FEATURE */
|
||||
@@ -1,161 +0,0 @@
|
||||
include(apps_lib_common)
|
||||
include(apps_svc_common)
|
||||
include(apps_sub_cfg)
|
||||
include(apps_subcommon)
|
||||
include(apps_feature_macro)
|
||||
|
||||
list(APPEND TEE_C_SOURCES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/chip_info.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/extra_syms.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/hdcp.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/hisi_mspc.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/inse.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/secboot.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/secflash.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/driver_api/file_encry_drv.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/driver_api/fp_drv.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/driver_api/fr_drv.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/driver_api/hisi_hieps_task.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/driver_api/hisi_privacy_protection_drv.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/driver_api/hisi_secboot_drv.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/driver_api/npu_drv.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/driver_api/secmem_drv.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/driver_api/vdecry_drv.c
|
||||
${PROJECT_SOURCE_DIR}/vendor/common/src/chip_info.c
|
||||
${PROJECT_SOURCE_DIR}/vendor/common/src/tee_crypto_kds_api.c
|
||||
${PROJECT_SOURCE_DIR}/libs/libsec_flash_client/src/sec_flash_api.c
|
||||
)
|
||||
|
||||
if ("${CONFIG_SE_SERVICE_32BIT}" STREQUAL "true" OR "${CONFIG_SE_SERVICE_64BIT}" STREQUAL "true")
|
||||
list(APPEND TEE_C_SOURCES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/se_status.c
|
||||
)
|
||||
endif()
|
||||
|
||||
list(APPEND TEE_INCLUDE_PATH
|
||||
${PROJECT_SOURCE_DIR}/drivers/platdrv/include
|
||||
${PROJECT_SOURCE_DIR}/vendor/common/include
|
||||
${PLATFORM_DIR}/common/tee_config
|
||||
${PLATFORM_DIR}/${PLATFORM_NAME}/${PRODUCT_NAME}/common/tee_config
|
||||
${PROJECT_SOURCE_DIR}/libs/libsec_flash_client/include
|
||||
${PROJECT_SOURCE_DIR}/sys_libs/libteeagentcommon_client/include
|
||||
${PROJECT_SOURCE_DIR}/sys_libs/libteeagentcommon_client/src
|
||||
${PROJECT_SOURCE_DIR}/libs/libvltmm_a32/include
|
||||
)
|
||||
|
||||
if ("${TARGET_BUILD_VARIANT}" STREQUAL "user")
|
||||
list(APPEND TEE_C_FLAGS
|
||||
-DDEF_BUILDUSERMODE
|
||||
)
|
||||
endif()
|
||||
|
||||
if ("${CONFIG_HISI_MSPC_IPC_TEST}" STREQUAL "true")
|
||||
list(APPEND TEE_C_FLAGS
|
||||
-DCONFIG_HISI_MSPC_IPC_TEST
|
||||
)
|
||||
endif()
|
||||
|
||||
list(APPEND VENDOR_SHARED_LIBRARIES
|
||||
mspcore
|
||||
rot
|
||||
art
|
||||
biometric
|
||||
sec_flash_client
|
||||
chinadrm
|
||||
)
|
||||
|
||||
if ("${CONFIG_WEAVER}" STREQUAL "true")
|
||||
list(APPEND VENDOR_SHARED_LIBRARIES
|
||||
weaver
|
||||
)
|
||||
endif()
|
||||
|
||||
if ("${CONFIG_VLTMM_SRV}" STREQUAL "true")
|
||||
list(APPEND VENDOR_SHARED_LIBRARIES
|
||||
vltmm
|
||||
)
|
||||
endif()
|
||||
|
||||
list(APPEND VENDOR_SHARED_LINKER_FLAGS
|
||||
-Wl,--shared
|
||||
-Wl,-X
|
||||
-Wl,-EL
|
||||
-Wl,-z,text
|
||||
-Wl,-z,now
|
||||
-Wl,-z,relro
|
||||
-Wl,-z,noexecstack
|
||||
-Wl,--gc-sections
|
||||
-Wl,--version-script=${CMAKE_CURRENT_BINARY_DIR}/export.txt
|
||||
-Wl,-L${PREBUILD_LIBS}/${ARCH}
|
||||
-nostdlib
|
||||
-Wl,-z,max-page-size=4096
|
||||
${CMAKE_CURRENT_BINARY_DIR}/extern.txt
|
||||
)
|
||||
|
||||
if ("${ARCH}" STREQUAL "arm" AND "${CONFIG_ENABLE_XOM32}" STREQUAL "y")
|
||||
list(APPEND VENDOR_SHARED_LINKER_FLAGS
|
||||
-Wl,-T${XOM_LIB_LDS}
|
||||
)
|
||||
endif()
|
||||
|
||||
list(REMOVE_ITEM TEE_C_FLAGS "-Werror")
|
||||
|
||||
set(TEE_PRECOMPILE_FLAGS ${TEE_C_FLAGS})
|
||||
list(REMOVE_ITEM TEE_PRECOMPILE_FLAGS "-march=armv8-a")
|
||||
foreach(d ${TEE_C_DEFINITIONS})
|
||||
list(APPEND TEE_PRECOMPILE_FLAGS -D${d})
|
||||
endforeach()
|
||||
|
||||
add_custom_target(kirin_vendor_shared_export)
|
||||
add_custom_target(kirin_vendor_shared_extern)
|
||||
add_custom_command(
|
||||
TARGET kirin_vendor_shared_export
|
||||
COMMAND ${CMAKE_C_COMPILER} ${TEE_PRECOMPILE_FLAGS} -x assembler-with-cpp -E --no-line-commands ${CMAKE_CURRENT_SOURCE_DIR}/export.txt -o ${CMAKE_CURRENT_BINARY_DIR}/export.txt
|
||||
)
|
||||
add_custom_command(
|
||||
TARGET kirin_vendor_shared_extern
|
||||
COMMAND ${CMAKE_C_COMPILER} ${TEE_PRECOMPILE_FLAGS} -x assembler-with-cpp -E --no-line-commands ${CMAKE_CURRENT_SOURCE_DIR}/extern.txt -o ${CMAKE_CURRENT_BINARY_DIR}/extern.txt
|
||||
)
|
||||
|
||||
list(FIND PRODUCT_APPS "vendor_shared" index)
|
||||
if (${index} GREATER -1)
|
||||
set(IF_INSTALL DO_INSTALL)
|
||||
endif()
|
||||
|
||||
tee_add_library(vendor_shared SHARED
|
||||
SOURCES
|
||||
${TEE_C_SOURCES}
|
||||
|
||||
COMPILE_TOOL
|
||||
clang
|
||||
|
||||
COMPILER_FLAGS
|
||||
${TEE_C_FLAGS}
|
||||
|
||||
COMPILER_DEFINITIONS
|
||||
${TEE_C_DEFINITIONS}
|
||||
|
||||
PRIVATE_INCLUDES
|
||||
${TEE_INCLUDE_PATH}
|
||||
|
||||
LINKER_FLAGS
|
||||
${CHOOSE_LLD}
|
||||
${VENDOR_SHARED_LINKER_FLAGS}
|
||||
${COMMON_LDFLAGS}
|
||||
${LIB_VENDOR_FLAGS}
|
||||
|
||||
LINKGROUP
|
||||
${VENDOR_SHARED_LIBRARIES}
|
||||
${COMMON_LIBGCC_COMPS}
|
||||
|
||||
LIBS_INSTALL_PATH
|
||||
${BOOTFS_STAGE_DIR}
|
||||
|
||||
${IF_INSTALL}
|
||||
)
|
||||
if ("${ARCH}" STREQUAL "arm")
|
||||
set_target_properties(vendor_shared PROPERTIES OUTPUT_NAME "vendor_shared_a32")
|
||||
endif()
|
||||
if ("${BUILD_TOOL}" STREQUAL "clang")
|
||||
add_dependencies(vendor_shared kirin_vendor_shared_extern kirin_vendor_shared_export)
|
||||
endif()
|
||||
@@ -1,83 +0,0 @@
|
||||
SONAME := libvendor_shared$(TARG).so
|
||||
|
||||
FILES := $(wildcard src/*.c)
|
||||
libvendor_shared_c_files := $(filter-out src/se_status.c src/hisi_mspc.c src/hisi_mspc_stubs.c, $(FILES))
|
||||
libvendor_shared_c_files += $(wildcard src/driver_api/*.c)
|
||||
ifneq ($(findstring true, $(CONFIG_SE_SERVICE_32BIT) $(CONFIG_SE_SERVICE_64BIT)),)
|
||||
libvendor_shared_c_files += src/se_status.c
|
||||
endif
|
||||
libvendor_shared_c_files += $(wildcard $(TOPDIR)/vendor/common/src/*.c)
|
||||
|
||||
inc-flags += -I$(TOPDIR)/libs/libvltmm_a32/include
|
||||
inc-flags += -I$(TOPDIR)/drivers/platdrv/include
|
||||
inc-flags += -I$(TOPDIR)/vendor/common/include
|
||||
inc-flags += -I$(PLATFORM_DIR)/common/tee_config
|
||||
inc-flags += -I$(PLATFORM_DIR)/$(PLATFORM_NAME)/$(PRODUCT_NAME)/common/tee_config
|
||||
inc-flags += -I$(TOPDIR)/sys_libs/libteeagentcommon_client/include
|
||||
inc-flags += -I$(TOPDIR)/sys_libs/libteeagentcommon_client/src
|
||||
|
||||
ifeq ($(strip $(TARGET_BUILD_VARIANT)), user)
|
||||
inc-flags += -DDEF_BUILDUSERMODE
|
||||
endif
|
||||
|
||||
ifneq ($(filter $(TARGET_BOARD_PLATFORM), baltimore), )
|
||||
libvendor_shared_c_files += src/hisi_mspc.c
|
||||
else
|
||||
libvendor_shared_c_files += src/hisi_mspc_stubs.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_HISI_MSPC_IPC_TEST), true)
|
||||
flags += -DCONFIG_HISI_MSPC_IPC_TEST
|
||||
endif
|
||||
|
||||
include $(TOPDIR)/mk/lib-common.mk
|
||||
include $(TOPDIR)/mk/feature-macro.mk
|
||||
|
||||
MODULE_FILE = $(BUILD_DIR)/$(SONAME)
|
||||
INSTALL_FILE = $(LIB_DIR)/$(SONAME)
|
||||
|
||||
target: $(MODULE_FILE)
|
||||
|
||||
$(INSTALL_FILE): $(MODULE_FILE)
|
||||
@test -d $(LIB_DIR) || mkdir -p $(LIB_DIR)
|
||||
@echo "[ INSTALL ] $(MODULE_FILE)"
|
||||
$(VER)cp -rafp $(MODULE_FILE) $(LIB_DIR)
|
||||
|
||||
ld-flags := -lmspcore$(TARG) -lrot$(TARG) -lart$(TARG) -lbiometric$(TARG) -lsec_flash_client$(TARG) -lchinadrm$(TARG)
|
||||
|
||||
ifeq ($(CONFIG_WEAVER), true)
|
||||
ld-flags += -lweaver$(TARG)
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_VLTMM_SRV), true)
|
||||
ld-flags += -lvltmm$(TARG)
|
||||
endif
|
||||
|
||||
ifeq ($(xom32_enable), y)
|
||||
ld-flags += -T $(XOM_LIB_LDS)
|
||||
endif
|
||||
|
||||
$(BUILD_DIR)/extern.txt: extern.txt $(BUILD_DIR)/export.txt
|
||||
@echo "preprocess ${BUILD_DIR}/extern.txt"
|
||||
@mkdir -p $(@D)
|
||||
@${CC} ${flags} -P -E -o $@ -x c $<
|
||||
$(BUILD_DIR)/export.txt: export.txt
|
||||
@echo "preprocess ${BUILD_DIR}/export.txt"
|
||||
@mkdir -p $(@D)
|
||||
@${CC} ${flags} -P -E -o $@ -x c $<
|
||||
|
||||
ifeq ($(xom32_enable), y)
|
||||
$(MODULE_FILE): $(BUILD_DIR)/extern.txt $(libvendor_shared_objs)
|
||||
@echo "[ LD ] $@ LIB_DIR=$(LIB_DIR)"
|
||||
$(VER)$(LD) --shared -X -EL -z text -z now -z relro -z noexecstack --gc-sections --version-script=$(BUILD_DIR)/export.txt -o $@ \
|
||||
$^ -L$(LIB_DIR) -L$(PREBUILD_LIBS)/$(ARCH) --start-group $(ld-flags) $(LIB_VENDOR_FLAGS) \
|
||||
$(LIBCOMPILER_RT_BUILTINS) --end-group -nostdlib -z max-page-size=4096
|
||||
$(VER)$(XOM) $@
|
||||
$(VER)$(OBJCOPY) $@ --remove-section ".xomloc"
|
||||
else
|
||||
$(MODULE_FILE): $(BUILD_DIR)/extern.txt $(libvendor_shared_objs)
|
||||
@echo "[ LD ] $@ LIB_DIR=$(LIB_DIR)"
|
||||
$(VER)$(LD) --shared -X -EL -z text -z now -z relro -z noexecstack --gc-sections --version-script=$(BUILD_DIR)/export.txt -o $@ \
|
||||
$^ -L$(LIB_DIR) -L$(PREBUILD_LIBS)/$(ARCH) --start-group $(ld-flags) $(LIB_VENDOR_FLAGS) \
|
||||
$(LIBCOMPILER_RT_BUILTINS) --end-group -nostdlib -z max-page-size=4096
|
||||
endif
|
||||
@@ -1,259 +0,0 @@
|
||||
{
|
||||
global:
|
||||
/* vendor_shared internal */
|
||||
__tee_hal_get_dieid;
|
||||
TEE_inSE_support;
|
||||
TEE_EXT_Get_Skytone_Version;
|
||||
__hdcp13_key_all_set;
|
||||
__hdcp22_key_set;
|
||||
__hdcp_dp_enable;
|
||||
__hdcp_get_value;
|
||||
__hdcp_set_reg;
|
||||
__hdcp_ioctl;
|
||||
__hdcp_wfd_handle_map;
|
||||
__hdcp_wfd_handle_unmap;
|
||||
__scard_connect;
|
||||
__scard_disconnect;
|
||||
__driver_p61_factory_test;
|
||||
__scard_transmit;
|
||||
__scard_support_mode;
|
||||
__scard_send;
|
||||
__scard_receive;
|
||||
__scard_get_status;
|
||||
__inse_connect;
|
||||
__inse_disconnect;
|
||||
__ese_transmit_data;
|
||||
__ese_read_data;
|
||||
__scard_get_ese_type;
|
||||
__SE_getflag;
|
||||
__SE_setflag;
|
||||
__hisi_secboot_process_soc_addr;
|
||||
__hisi_secboot_copy_soc_data;
|
||||
__hisi_secboot_soc_verification;
|
||||
__hisi_secboot_soc_reset;
|
||||
__hisi_secboot_soc_set;
|
||||
__hisi_secboot_get_vrl_addr;
|
||||
__secboot_get_cuid;
|
||||
__bsp_modem_call;
|
||||
__sre_se_channel_info_write;
|
||||
__sre_se_channel_info_read;
|
||||
__sre_se_deactive_write;
|
||||
__sre_se_deactive_read;
|
||||
__sre_seaid_switch_write;
|
||||
__sre_seaid_list_len_read;
|
||||
__sre_seaid_switch_read;
|
||||
__sre_se_connect_info_write;
|
||||
__sre_se_connect_info_read;
|
||||
__hisi_mspc_check_secflash;
|
||||
__hisi_mspc_fac_mode_enter;
|
||||
__hisi_mspc_fac_mode_exit;
|
||||
__hisi_mspc_recovery;
|
||||
__hisi_mspc_secflash_writelock;
|
||||
__secflash_chip_reset;
|
||||
__secflash_power_save;
|
||||
|
||||
/* seplat */
|
||||
seplat_get_dts_status;
|
||||
seplat_power_ctrl;
|
||||
|
||||
/* driver_api */
|
||||
__file_encry_interface;
|
||||
__driver_fingerprint_command;
|
||||
__driver_spi_full_duplex;
|
||||
__driver_spi_full_duplex_with_speed;
|
||||
__driver_spi_half_duplex_with_speed;
|
||||
__driver_spi_dev2_full_duplex;
|
||||
__driver_spi_dev2_full_duplex_with_speed;
|
||||
__driver_spi_dev2_half_duplex_with_speed;
|
||||
__driver_fp_set_spi_mode;
|
||||
__fr_read_current_time;
|
||||
__fr_secure_memory_map;
|
||||
__fr_secure_memory_unmap;
|
||||
__fr_is_secure_memory;
|
||||
__fr_flush_cache;
|
||||
__fr_sion_pool_flag_set;
|
||||
__fr_sion_pool_flag_unset;
|
||||
__fr_get_static_phy_addr;
|
||||
__tee_call_hieps_drivers;
|
||||
__hisi_secboot_copy_img_from_os;
|
||||
__eiius_encrypto_ctr;
|
||||
__eiius_image_verify;
|
||||
__eiius_get_paddr;
|
||||
__eiius_secure_memory_map;
|
||||
__eiius_secure_memory_unmap;
|
||||
__npu_syscall_ioctl_cmdproc;
|
||||
__npu_syscall_llseek_cmdproc;
|
||||
__npu_syscall_open_cmdproc;
|
||||
__npu_syscall_release_cmdproc;
|
||||
__npu_syscall_write_cmdproc;
|
||||
__teesvm_ioctl;
|
||||
__sion_ioctl;
|
||||
sion_mmap;
|
||||
sion_munmap;
|
||||
sion_create_smmu_domain;
|
||||
sion_destroy_smmu_domain;
|
||||
ddr_sec_cfg;
|
||||
sion_mmap_sfd;
|
||||
sion_munmap_sfd;
|
||||
sion_ddr_sec_cfg;
|
||||
secmem_get_version;
|
||||
__SECURE_TEE_Mmap;
|
||||
__SECURE_TEE_Unmap;
|
||||
__SECURE_FlushCache;
|
||||
__SECURE_ISSecureMemory;
|
||||
__ese_proto7816_reset;
|
||||
__phNxpEse_GetOsMode;
|
||||
__ese_set_nfc_chiptype;
|
||||
__mspe_poweron;
|
||||
__mspe_poweroff;
|
||||
__mspe_rnd_gen_trnd;
|
||||
__mspe_sm2_gen_key;
|
||||
__mspe_sm2_encrypt;
|
||||
__mspe_sm2_decrypt;
|
||||
__mspe_sm3_hash_init;
|
||||
__mspe_sm3_hash_update;
|
||||
__mspe_sm3_hash_dofinal;
|
||||
__mspe_sm3_hash_sigle;
|
||||
__mspe_sm4_set_key;
|
||||
__mspe_sm4_set_iv;
|
||||
__mspe_sm4_init;
|
||||
__mspe_sm4_update;
|
||||
__mspe_sm4_dofinal;
|
||||
__mspe_km_derive_kdr;
|
||||
__mspe_sm9_sign;
|
||||
__mspe_sm9_verify;
|
||||
__mspe_sm9_encrypt;
|
||||
__mspe_sm9_decrypt;
|
||||
__mspe_sm9_wrap_key;
|
||||
__mspe_sm9_unwrap_key;
|
||||
__mspe_sm9_pre_data;
|
||||
__secisp_mem_end;
|
||||
#ifdef DEF_ENG
|
||||
__tee_call_bus_drivers;
|
||||
#endif
|
||||
|
||||
#if (defined TEE_SUPPORT_SEM || defined TEE_SUPPORT_SE_SERVICE_32BIT || defined TEE_SUPPORT_SE_SERVICE_64BIT)
|
||||
/* msp core start */
|
||||
TEE_EXT_MSPLoadSA;
|
||||
TEE_EXT_MSPInstallSA;
|
||||
TEE_EXT_MSPGetStatus;
|
||||
/* msp core end */
|
||||
#endif
|
||||
|
||||
/* weaver start */
|
||||
TEE_EXT_WeaverGetNumSlots;
|
||||
TEE_EXT_WeaverWrite;
|
||||
TEE_EXT_WeaverRead;
|
||||
TEE_EXT_WeaverErase;
|
||||
TEE_EXT_WeaverEraseAll;
|
||||
TEE_EXT_WeaverGetStatus;
|
||||
TEE_EXT_WeaverGetErrorType;
|
||||
/* weaver end */
|
||||
|
||||
/* secflash start */
|
||||
TEE_EXT_SecFlashIsAvailable;
|
||||
TEE_EXT_SecFlashFactoryRecovery;
|
||||
TEE_EXT_SecFlashPowerSaving;
|
||||
TEE_EXT_SecFlashReset;
|
||||
TEE_EXT_SecFlashGetBindingKey;
|
||||
TEE_EXT_SecFlashWriteLockEnable;
|
||||
__secflash_chip_reset;
|
||||
__secflash_power_save;
|
||||
sf_creat_persistent_object;
|
||||
sf_open_persistent_object;
|
||||
sf_read_object_data;
|
||||
sf_write_object_data;
|
||||
sf_truncate_object_data;
|
||||
sf_seek_object_data;
|
||||
sf_close_and_delete_persistent_object;
|
||||
sf_info_object_data;
|
||||
sf_sync_persistent_object;
|
||||
sf_rename_persistent_object;
|
||||
sf_close_object;
|
||||
/* secflash end */
|
||||
|
||||
/* mspc start */
|
||||
TEE_EXT_MSPIsAvailable;
|
||||
__hisi_mspc_check_secflash;
|
||||
TEE_EXT_MSPServiceIsAvailable;
|
||||
__hisi_mspc_power_on;
|
||||
__hisi_mspc_power_off;
|
||||
TEE_EXT_MspcRecovery;
|
||||
TEE_EXT_MspcPowerOn;
|
||||
TEE_EXT_MspcPowerOff;
|
||||
TEE_EXT_MspcIpcTest;
|
||||
TEE_EXT_MspcDdrRead;
|
||||
TEE_EXT_MspcDdrWrite;
|
||||
__mspc_ipc_test;
|
||||
__mspc_ddr_read;
|
||||
__mspc_ddr_write;
|
||||
/* mspc end */
|
||||
|
||||
/* root of trust start */
|
||||
TEE_EXT_ROTImportKey;
|
||||
TEE_EXT_ROTExportCert;
|
||||
TEE_EXT_ROTSign;
|
||||
TEE_EXT_ROTStoreID;
|
||||
TEE_EXT_ROTVerifyID;
|
||||
TEE_EXT_ROTGenerateKey;
|
||||
TEE_EXT_ROTGenerateAppKey;
|
||||
TEE_EXT_ROTExportKey;
|
||||
TEE_EXT_ROTVerify;
|
||||
TEE_EXT_ROTComputeMAC;
|
||||
TEE_EXT_ROTCompareMAC;
|
||||
TEE_EXT_ROTEncrypt;
|
||||
TEE_EXT_ROTDecrypt;
|
||||
TEE_EXT_ROTCertExist;
|
||||
TEE_EXT_ROTAttestKey;
|
||||
TEE_EXT_ROTGetBlobHandle;
|
||||
/* root of trust end */
|
||||
|
||||
/* art start */
|
||||
TEE_EXT_ARTAllocSlot;
|
||||
TEE_EXT_ARTReadCounter;
|
||||
TEE_EXT_ARTIncreaseCounter;
|
||||
/* art end */
|
||||
|
||||
/* biometric start */
|
||||
TEE_EXT_BioLoadSA;
|
||||
TEE_EXT_BioInstallSA;
|
||||
TEE_EXT_BioStartSA;
|
||||
TEE_EXT_BioSendCommand;
|
||||
TEE_EXT_BioCloseSA;
|
||||
TEE_EXT_BioReInit;
|
||||
/* biometric end */
|
||||
|
||||
/* secure memory begin */
|
||||
#ifdef TEE_SUPPORT_VLTMM_SRV
|
||||
vlt_create_zone;
|
||||
vlt_destroy_zone;
|
||||
vlt_malloc;
|
||||
vlt_free;
|
||||
vlt_open;
|
||||
vlt_close;
|
||||
vlt_map;
|
||||
vlt_unmap;
|
||||
vlt_import_fd;
|
||||
vlt_pool_dump;
|
||||
vlt_shrinker;
|
||||
vlt_errno;
|
||||
vlt_create_siommu_domain;
|
||||
vlt_destroy_siommu_domain;
|
||||
#endif
|
||||
|
||||
secmem_smmu_domain_init;
|
||||
secmem_smmu_domain_destroy;
|
||||
secmem_get_version;
|
||||
tee_ese_transmit;
|
||||
tee_ese_read;
|
||||
/* secure memory end */
|
||||
/* mspe chianDRM api start */
|
||||
cdrm_hisee_video_init;
|
||||
cdrm_hisee_video_update;
|
||||
cdrm_hisee_video_dofinal;
|
||||
cdrm_hisee_video_deinit;
|
||||
TEE_AEDecryptFinal_KDS;
|
||||
TEE_AEEncryptFinal_KDS;
|
||||
/* mspe chianDRM api end */
|
||||
local: *;
|
||||
};
|
||||
@@ -1,254 +0,0 @@
|
||||
EXTERN(
|
||||
/* vendor_shared internal */
|
||||
__tee_hal_get_dieid
|
||||
TEE_inSE_support
|
||||
TEE_EXT_Get_Skytone_Version
|
||||
__hdcp13_key_all_set
|
||||
__hdcp22_key_set
|
||||
__hdcp_dp_enable
|
||||
__hdcp_get_value
|
||||
__hdcp_set_reg
|
||||
__hdcp_ioctl
|
||||
__hdcp_wfd_handle_map
|
||||
__hdcp_wfd_handle_unmap
|
||||
__scard_connect
|
||||
__scard_disconnect
|
||||
__driver_p61_factory_test
|
||||
__scard_transmit
|
||||
__scard_support_mode
|
||||
__scard_send
|
||||
__scard_receive
|
||||
__scard_get_status
|
||||
__inse_connect
|
||||
__inse_disconnect
|
||||
__ese_transmit_data
|
||||
__ese_read_data
|
||||
__scard_get_ese_type
|
||||
__SE_getflag
|
||||
__SE_setflag
|
||||
__hisi_secboot_process_soc_addr
|
||||
__hisi_secboot_copy_soc_data
|
||||
__hisi_secboot_soc_verification
|
||||
__hisi_secboot_soc_reset
|
||||
__hisi_secboot_soc_set
|
||||
__hisi_secboot_get_vrl_addr
|
||||
__secboot_get_cuid
|
||||
__bsp_modem_call
|
||||
__sre_se_channel_info_write
|
||||
__sre_se_channel_info_read
|
||||
__sre_se_deactive_write
|
||||
__sre_se_deactive_read
|
||||
__sre_seaid_switch_write
|
||||
__sre_seaid_list_len_read
|
||||
__sre_seaid_switch_read
|
||||
__sre_se_connect_info_write
|
||||
__sre_se_connect_info_read
|
||||
__hisi_mspc_check_secflash
|
||||
__hisi_mspc_fac_mode_enter
|
||||
__hisi_mspc_fac_mode_exit
|
||||
__hisi_mspc_recovery
|
||||
__hisi_mspc_secflash_writelock
|
||||
__secflash_chip_reset
|
||||
__secflash_power_save
|
||||
|
||||
/* seplat */
|
||||
seplat_get_dts_status
|
||||
seplat_power_ctrl
|
||||
|
||||
/* driver_api */
|
||||
__file_encry_interface
|
||||
__driver_fingerprint_command
|
||||
__driver_spi_full_duplex
|
||||
__driver_spi_full_duplex_with_speed
|
||||
__driver_spi_half_duplex_with_speed
|
||||
__driver_spi_dev2_full_duplex
|
||||
__driver_spi_dev2_full_duplex_with_speed
|
||||
__driver_spi_dev2_half_duplex_with_speed
|
||||
__driver_fp_set_spi_mode
|
||||
__fr_read_current_time
|
||||
__fr_secure_memory_map
|
||||
__fr_secure_memory_unmap
|
||||
__fr_is_secure_memory
|
||||
__fr_flush_cache
|
||||
__fr_sion_pool_flag_set
|
||||
__fr_sion_pool_flag_unset
|
||||
__fr_get_static_phy_addr
|
||||
__tee_call_hieps_drivers
|
||||
__hisi_secboot_copy_img_from_os
|
||||
__eiius_encrypto_ctr
|
||||
__eiius_image_verify
|
||||
__eiius_get_paddr
|
||||
__eiius_secure_memory_map
|
||||
__eiius_secure_memory_unmap
|
||||
__npu_syscall_ioctl_cmdproc
|
||||
__npu_syscall_llseek_cmdproc
|
||||
__npu_syscall_open_cmdproc
|
||||
__npu_syscall_release_cmdproc
|
||||
__npu_syscall_write_cmdproc
|
||||
__teesvm_ioctl
|
||||
__sion_ioctl
|
||||
sion_mmap
|
||||
sion_munmap
|
||||
sion_create_smmu_domain
|
||||
sion_destroy_smmu_domain
|
||||
ddr_sec_cfg
|
||||
sion_mmap_sfd
|
||||
sion_munmap_sfd
|
||||
sion_ddr_sec_cfg
|
||||
secmem_get_version
|
||||
secmem_smmu_domain_init
|
||||
secmem_smmu_domain_destroy
|
||||
__SECURE_TEE_Mmap
|
||||
__SECURE_TEE_Unmap
|
||||
__SECURE_FlushCache
|
||||
__SECURE_ISSecureMemory
|
||||
__ese_proto7816_reset
|
||||
__phNxpEse_GetOsMode
|
||||
__ese_set_nfc_chiptype
|
||||
__mspe_poweron
|
||||
__mspe_poweroff
|
||||
__mspe_rnd_gen_trnd
|
||||
__mspe_sm2_gen_key
|
||||
__mspe_sm2_encrypt
|
||||
__mspe_sm2_decrypt
|
||||
__mspe_sm3_hash_init
|
||||
__mspe_sm3_hash_update
|
||||
__mspe_sm3_hash_dofinal
|
||||
__mspe_sm3_hash_sigle
|
||||
__mspe_sm4_set_key
|
||||
__mspe_sm4_set_iv
|
||||
__mspe_sm4_init
|
||||
__mspe_sm4_update
|
||||
__mspe_sm4_dofinal
|
||||
__mspe_km_derive_kdr
|
||||
__mspe_sm9_sign
|
||||
__mspe_sm9_verify
|
||||
__mspe_sm9_encrypt
|
||||
__mspe_sm9_decrypt
|
||||
__mspe_sm9_wrap_key
|
||||
__mspe_sm9_unwrap_key
|
||||
__mspe_sm9_pre_data
|
||||
__secisp_mem_end
|
||||
#ifdef DEF_ENG
|
||||
__tee_call_bus_drivers;
|
||||
#endif
|
||||
|
||||
#if (defined TEE_SUPPORT_SEM || defined TEE_SUPPORT_SE_SERVICE_32BIT || defined TEE_SUPPORT_SE_SERVICE_64BIT)
|
||||
/* msp core start */
|
||||
TEE_EXT_MSPLoadSA
|
||||
TEE_EXT_MSPInstallSA
|
||||
TEE_EXT_MSPGetStatus
|
||||
/* msp core end */
|
||||
#endif
|
||||
|
||||
/* weaver start */
|
||||
TEE_EXT_WeaverGetNumSlots
|
||||
TEE_EXT_WeaverWrite
|
||||
TEE_EXT_WeaverRead
|
||||
TEE_EXT_WeaverErase
|
||||
TEE_EXT_WeaverEraseAll
|
||||
TEE_EXT_WeaverGetStatus
|
||||
TEE_EXT_WeaverGetErrorType
|
||||
/* weaver end */
|
||||
|
||||
/* secflash start */
|
||||
TEE_EXT_SecFlashIsAvailable
|
||||
TEE_EXT_SecFlashFactoryRecovery
|
||||
TEE_EXT_SecFlashPowerSaving
|
||||
TEE_EXT_SecFlashReset
|
||||
TEE_EXT_SecFlashGetBindingKey
|
||||
TEE_EXT_SecFlashWriteLockEnable
|
||||
__secflash_chip_reset
|
||||
__secflash_power_save
|
||||
sf_creat_persistent_object
|
||||
sf_open_persistent_object
|
||||
sf_read_object_data
|
||||
sf_write_object_data
|
||||
sf_truncate_object_data
|
||||
sf_seek_object_data
|
||||
sf_close_and_delete_persistent_object
|
||||
sf_info_object_data
|
||||
sf_sync_persistent_object
|
||||
sf_rename_persistent_object
|
||||
sf_close_object
|
||||
/* secflash end */
|
||||
|
||||
/* mspc start */
|
||||
TEE_EXT_MSPIsAvailable
|
||||
__hisi_mspc_check_secflash
|
||||
TEE_EXT_MSPServiceIsAvailable
|
||||
__hisi_mspc_power_on
|
||||
__hisi_mspc_power_off
|
||||
TEE_EXT_MspcRecovery
|
||||
TEE_EXT_MspcPowerOn
|
||||
TEE_EXT_MspcPowerOff
|
||||
TEE_EXT_MspcIpcTest
|
||||
TEE_EXT_MspcDdrRead
|
||||
TEE_EXT_MspcDdrWrite
|
||||
__mspc_ipc_test
|
||||
__mspc_ddr_read
|
||||
__mspc_ddr_write
|
||||
/* mspc end */
|
||||
|
||||
/* root of trust start */
|
||||
TEE_EXT_ROTImportKey
|
||||
TEE_EXT_ROTExportCert
|
||||
TEE_EXT_ROTSign
|
||||
TEE_EXT_ROTStoreID
|
||||
TEE_EXT_ROTVerifyID
|
||||
TEE_EXT_ROTGenerateKey
|
||||
TEE_EXT_ROTGenerateAppKey
|
||||
TEE_EXT_ROTExportKey
|
||||
TEE_EXT_ROTVerify
|
||||
TEE_EXT_ROTComputeMAC
|
||||
TEE_EXT_ROTCompareMAC
|
||||
TEE_EXT_ROTEncrypt
|
||||
TEE_EXT_ROTDecrypt
|
||||
TEE_EXT_ROTCertExist
|
||||
TEE_EXT_ROTAttestKey
|
||||
TEE_EXT_ROTGetBlobHandle
|
||||
/* root of trust end */
|
||||
|
||||
/* art start */
|
||||
TEE_EXT_ARTAllocSlot
|
||||
TEE_EXT_ARTReadCounter
|
||||
TEE_EXT_ARTIncreaseCounter
|
||||
/* art end */
|
||||
|
||||
/* biometric start */
|
||||
TEE_EXT_BioLoadSA
|
||||
TEE_EXT_BioInstallSA
|
||||
TEE_EXT_BioStartSA
|
||||
TEE_EXT_BioSendCommand
|
||||
TEE_EXT_BioCloseSA
|
||||
TEE_EXT_BioReInit
|
||||
/* biometric end */
|
||||
|
||||
/* secure memory begin */
|
||||
#ifdef TEE_SUPPORT_VLTMM_SRV
|
||||
vlt_create_zone
|
||||
vlt_destroy_zone
|
||||
vlt_malloc
|
||||
vlt_free
|
||||
vlt_open
|
||||
vlt_close
|
||||
vlt_map
|
||||
vlt_unmap
|
||||
vlt_import_fd
|
||||
vlt_pool_dump
|
||||
vlt_shrinker
|
||||
vlt_errno
|
||||
vlt_create_siommu_domain
|
||||
vlt_destroy_siommu_domain
|
||||
#endif
|
||||
tee_ese_transmit
|
||||
tee_ese_read
|
||||
secmem_get_version
|
||||
/* secure memory end */
|
||||
/* mspe chianDRM api start */
|
||||
cdrm_hisee_video_init
|
||||
cdrm_hisee_video_update
|
||||
cdrm_hisee_video_dofinal
|
||||
cdrm_hisee_video_deinit
|
||||
/* mspe chianDRM api end */
|
||||
)
|
||||
@@ -1,26 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved.
|
||||
* Description: functions to get chip info
|
||||
* Create: 2020-4-6
|
||||
*/
|
||||
#include "chip_info.h"
|
||||
#include <stdint.h>
|
||||
#include <hm_mman_ext.h>
|
||||
#include <hmdrv.h>
|
||||
#include <hm_msg_type.h> /* for ARRAY_SIZE */
|
||||
#include <sre_syscalls_id.h>
|
||||
#include <sre_syscalls_id_ext.h>
|
||||
#include "lib_timer.h"
|
||||
#include "sre_task.h"
|
||||
#include "sre_syscall.h"
|
||||
#include "tee_defines.h"
|
||||
#include "tee_bit_ops.h"
|
||||
|
||||
__attribute__((visibility("default"))) \
|
||||
int32_t __tee_hal_get_dieid(uint32_t *in_buffer)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)(in_buffer),
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_TEE_HAL_GET_DIEID, args, ARRAY_SIZE(args));
|
||||
}
|
||||
-26
@@ -1,26 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2018-2019. All rights reserved.
|
||||
* Description: hieps drive interface, Analysis of test commands.
|
||||
* call different test interfaces
|
||||
* Author:
|
||||
* Create: 2020-9-11
|
||||
*/
|
||||
|
||||
#include "hmdrv.h"
|
||||
#include "mem_page_ops.h"
|
||||
#include <sre_syscalls_id_ext.h>
|
||||
#include "tee_log.h"
|
||||
|
||||
#ifdef DEF_ENG
|
||||
uint32_t __tee_call_bus_drivers(uint32_t cmd, const char *parm_info,
|
||||
uint32_t parm_size)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)cmd,
|
||||
(uint64_t)(uintptr_t)parm_info,
|
||||
(uint64_t)parm_size,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_SYSCALL_LSBUS_DRV, args, ARRAY_SIZE(args));
|
||||
}
|
||||
#endif
|
||||
-10
@@ -1,10 +0,0 @@
|
||||
#ifndef __BUS_DRV_TEST_TASK_H__
|
||||
#define __BUS_DRV_TEST_TASK_H__
|
||||
|
||||
#include "stdint.h"
|
||||
|
||||
#ifdef DEF_ENG
|
||||
uint32_t __tee_call_bus_drivers(uint32_t cmd,
|
||||
const char *parm_info, uint32_t parm_size);
|
||||
#endif
|
||||
#endif
|
||||
-27
@@ -1,27 +0,0 @@
|
||||
#include <stdint.h>
|
||||
#include <hm_mman_ext.h>
|
||||
#include "lib_timer.h"
|
||||
#include "sre_hwi.h"
|
||||
#include "sre_task.h"
|
||||
#include "sre_syscall.h"
|
||||
#include "sre_syscalls_ext.h"
|
||||
#include "tee_internal_api.h"
|
||||
#include "tee_log.h"
|
||||
|
||||
#include <sre_syscalls_id.h>
|
||||
#include <sre_syscalls_id_ext.h>
|
||||
|
||||
#include "hmdrv.h"
|
||||
#ifdef TEE_SUPPORT_FILE_ENCRY
|
||||
|
||||
__attribute__((visibility("default"))) \
|
||||
INT32 __file_encry_interface(INT32 cmd_id, UINT8 *iv_buf, UINT32 length)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)cmd_id,
|
||||
(uint64_t)(uintptr_t)iv_buf, /* Not support 64bit TA */
|
||||
(uint64_t)length,
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_FILE_ENCRY_INTERFACE, args, ARRAY_SIZE(args));
|
||||
}
|
||||
#endif
|
||||
@@ -1,103 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2019-2019. All rights reserved.
|
||||
* Create: 2019-05-08
|
||||
* Description: fingerprint driver interface.
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <hm_mman_ext.h>
|
||||
#include "lib_timer.h"
|
||||
#include "sre_hwi.h"
|
||||
#include "sre_task.h"
|
||||
#include "sre_syscall.h"
|
||||
#include "sre_syscalls_ext.h"
|
||||
#include "tee_internal_api.h"
|
||||
#include "tee_log.h"
|
||||
|
||||
#include <sre_syscalls_id.h>
|
||||
#include <sre_syscalls_id_ext.h>
|
||||
|
||||
#include "hmdrv.h"
|
||||
|
||||
int __driver_fingerprint_command(void *command_info)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)command_info,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_SYSCALL_FP_COMMAND_INFO, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int __driver_spi_full_duplex(void *p_write_info, void *p_read_info)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)p_write_info,
|
||||
(uint64_t)(uintptr_t)p_read_info,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_SYSCALL_FP_SPI_TRANSACTION, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int __driver_spi_full_duplex_with_speed(void *p_write_info, void *p_read_info, int speed)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)p_write_info,
|
||||
(uint64_t)(uintptr_t)p_read_info,
|
||||
(uint64_t)speed,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_SYSCALL_FP_SPI_FULL_DUPLEX_WITH_SPEED_TRANSACTION, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int __driver_spi_half_duplex_with_speed(void *p_write_info, void *p_read_info, int speed)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)p_write_info,
|
||||
(uint64_t)(uintptr_t)p_read_info,
|
||||
(uint64_t)speed,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_SYSCALL_FP_SPI_HALF_DUPLEX_WITH_SPEED_TRANSACTION, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int __driver_spi_dev2_full_duplex(void *p_write_info, void *p_read_info)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)p_write_info,
|
||||
(uint64_t)(uintptr_t)p_read_info,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_SYSCALL_FP_SPI_DEV2_TRANSACTION, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int __driver_spi_dev2_full_duplex_with_speed(void *p_write_info, void *p_read_info, int speed)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)p_write_info,
|
||||
(uint64_t)(uintptr_t)p_read_info,
|
||||
(uint64_t)speed,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_SYSCALL_FP_SPI_DEV2_FULL_DUPLEX_WITH_SPEED_TRANSACTION, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int __driver_spi_dev2_half_duplex_with_speed(void *p_write_info, void *p_read_info, int speed)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)p_write_info,
|
||||
(uint64_t)(uintptr_t)p_read_info,
|
||||
(uint64_t)speed,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_SYSCALL_FP_SPI_DEV2_HALF_DUPLEX_WITH_SPEED_TRANSACTION, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int __driver_fp_set_spi_mode(int mode)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)mode,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_SYSCALL_FP_SET_SPI_MODE, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
@@ -1,97 +0,0 @@
|
||||
#include <stdint.h>
|
||||
#include <hm_mman_ext.h>
|
||||
#include <cache_flush.h>
|
||||
#include "lib_timer.h"
|
||||
#include "sre_hwi.h"
|
||||
#include "sre_task.h"
|
||||
#include "sre_syscall.h"
|
||||
#include "sre_syscalls_ext.h"
|
||||
#include "tee_internal_api.h"
|
||||
#include "tee_log.h"
|
||||
|
||||
#include <sre_syscalls_id.h>
|
||||
#include <sre_syscalls_id_ext.h>
|
||||
|
||||
#include "hmdrv.h"
|
||||
#define ADDR_OFFSET 32
|
||||
|
||||
unsigned int __fr_read_current_time(__attribute__((unused)) void *command_info)
|
||||
{
|
||||
return hm_drv_call(SW_SYSCALL_FR_READ_CURRENT_TIME, NULL, 0);
|
||||
}
|
||||
|
||||
int __fr_secure_memory_map(paddr_t phy_addr, unsigned int size, unsigned int *virt_addr, unsigned int secure_mode,
|
||||
unsigned int cache_mode)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)phy_addr,
|
||||
(uint64_t)size,
|
||||
(uint64_t)(uintptr_t)virt_addr, /* Not support 64bit TA now */
|
||||
(uint64_t)secure_mode,
|
||||
(uint64_t)cache_mode,
|
||||
};
|
||||
|
||||
int ret = hm_drv_call(SW_SYSCALL_FR_SECURE_TEE_MMAP, args, ARRAY_SIZE(args));
|
||||
if (ret == 0) {
|
||||
__dma_flush_range(*virt_addr, *virt_addr + size);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int __fr_secure_memory_unmap(unsigned int virt_addr, unsigned int size)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)virt_addr,
|
||||
(uint64_t)size,
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_FR_SECURE_TEE_UNMAP, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int __fr_is_secure_memory(paddr_t addr, unsigned int size, unsigned int protect_id)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)addr,
|
||||
(uint64_t)size,
|
||||
(uint64_t)protect_id,
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_FR_SECURE_ISSECUREMEM, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
void __fr_flush_cache(unsigned int start, unsigned int end)
|
||||
{
|
||||
__dma_flush_range(start, end);
|
||||
}
|
||||
|
||||
int __fr_sion_pool_flag_set(unsigned int type)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)type,
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_FR_SECURE_ION_SET, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int __fr_sion_pool_flag_unset(unsigned int type)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)type,
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_FR_SECURE_ION_UNSET, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int __fr_get_static_phy_addr(paddr_t *addr, unsigned int type, unsigned int index, unsigned int size)
|
||||
{
|
||||
if (addr == NULL) {
|
||||
return -1;
|
||||
}
|
||||
uint32_t ret;
|
||||
uint32_t phy_addr = 0;
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)&phy_addr,
|
||||
(uint64_t)type,
|
||||
(uint64_t)index,
|
||||
(uint64_t)size,
|
||||
};
|
||||
ret = hm_drv_call(SW_SYSCALL_FR_GET_STATIC_PHY_ADDR, args, ARRAY_SIZE(args));
|
||||
*addr = (paddr_t)phy_addr;
|
||||
return ret;
|
||||
}
|
||||
-28
@@ -1,28 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2018-2019. All rights reserved.
|
||||
* Description: eps drive interface, Analysis of test commands.
|
||||
* call different test interfaces
|
||||
* Create: 2018-12-01
|
||||
*/
|
||||
|
||||
#include "hmdrv.h"
|
||||
#include "mem_page_ops.h"
|
||||
#include <sre_syscalls_id_ext.h>
|
||||
|
||||
uint32_t __tee_call_hieps_drivers(uint32_t cmd, const char *input, uint32_t max_input_len, const char *parm_info,
|
||||
uint32_t parm_size)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)cmd,
|
||||
(uint64_t)(uintptr_t)input,
|
||||
(uint64_t)max_input_len,
|
||||
(uint64_t)(uintptr_t)parm_info,
|
||||
(uint64_t)parm_size,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_FEATURE_SEPLAT
|
||||
return hm_drv_multithread_call(SW_EPS_CDRM, args, ARRAY_SIZE(args));
|
||||
#else
|
||||
return hm_drv_call(SW_EPS_CDRM, args, ARRAY_SIZE(args));
|
||||
#endif
|
||||
}
|
||||
-9
@@ -1,9 +0,0 @@
|
||||
#ifndef __HISI_HIEPS_TASK_H__
|
||||
#define __HISI_HIEPS_TASK_H__
|
||||
|
||||
#include "stdint.h"
|
||||
|
||||
uint32_t __tee_call_hieps_drivers(uint32_t cmd, const char *input, uint32_t max_input_len,
|
||||
const char *parm_info, uint32_t parm_size);
|
||||
|
||||
#endif
|
||||
-21
@@ -1,21 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2018-2019. All rights reserved.
|
||||
* Description: hisp drive interface.
|
||||
* call different test interfaces
|
||||
* Author: xiehanhua x00474758
|
||||
* Create: 2020-07-06
|
||||
*/
|
||||
#include "hmdrv.h"
|
||||
#include <sre_syscalls_id_ext.h>
|
||||
|
||||
|
||||
int __secisp_mem_end()
|
||||
{
|
||||
#ifdef TEE_SUPPORT_SECISP
|
||||
uint64_t args[] = {
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_SECISP_MEM_END, args, ARRAY_SIZE(args));
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
Vendored
-240
@@ -1,240 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved.
|
||||
* Description: privacy data protection api syscall interface, call tee drvier api
|
||||
* Create: 2020-03-10
|
||||
*/
|
||||
|
||||
#include "hisi_privacy_protection_drv.h"
|
||||
#include "hmdrv.h"
|
||||
#include "mem_page_ops.h"
|
||||
#include <sre_syscalls_id_ext.h>
|
||||
|
||||
uint32_t __mspe_poweron(uint32_t cmd, uint32_t id, uint32_t profile)
|
||||
{
|
||||
uint64_t args[] = { (uint64_t)cmd,
|
||||
(uint64_t)id,
|
||||
(uint64_t)profile,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_PRIP_POWERON, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t __mspe_poweroff(uint32_t cmd, uint32_t id, uint32_t profile)
|
||||
{
|
||||
uint64_t args[] = { (uint64_t)cmd,
|
||||
(uint64_t)id,
|
||||
(uint64_t)profile,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_PRIP_POWEROFF, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t __mspe_rnd_gen_trnd(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen)
|
||||
{
|
||||
uint64_t args[] = { (uint64_t)cmd,
|
||||
(uint64_t)(uintptr_t)sendbuf,
|
||||
(uint64_t)sendlen,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_PRIP_RNG_GEN_TRND, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t __mspe_sm2_gen_key(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen)
|
||||
{
|
||||
uint64_t args[] = { (uint64_t)cmd,
|
||||
(uint64_t)(uintptr_t)sendbuf,
|
||||
(uint64_t)sendlen,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_PRIP_SM2_GEN_KEY, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t __mspe_sm2_encrypt(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen)
|
||||
{
|
||||
uint64_t args[] = { (uint64_t)cmd,
|
||||
(uint64_t)(uintptr_t)sendbuf,
|
||||
(uint64_t)sendlen,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_PRIP_SM2_ENCRYPT, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t __mspe_sm2_decrypt(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen)
|
||||
{
|
||||
uint64_t args[] = { (uint64_t)cmd,
|
||||
(uint64_t)(uintptr_t)sendbuf,
|
||||
(uint64_t)sendlen,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_PRIP_SM2_DECRYPT, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t __mspe_sm3_hash_init(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen)
|
||||
{
|
||||
uint64_t args[] = { (uint64_t)cmd,
|
||||
(uint64_t)(uintptr_t)sendbuf,
|
||||
(uint64_t)sendlen,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_PRIP_SM3_HASH_INIT, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t __mspe_sm3_hash_update(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen)
|
||||
{
|
||||
uint64_t args[] = { (uint64_t)cmd,
|
||||
(uint64_t)(uintptr_t)sendbuf,
|
||||
(uint64_t)sendlen,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_PRIP_SM3_HASH_UPDATE, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t __mspe_sm3_hash_dofinal(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen)
|
||||
{
|
||||
uint64_t args[] = { (uint64_t)cmd,
|
||||
(uint64_t)(uintptr_t)sendbuf,
|
||||
(uint64_t)sendlen,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_PRIP_SM3_HASH_DOFINAL, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t __mspe_sm3_hash_sigle(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen)
|
||||
{
|
||||
uint64_t args[] = { (uint64_t)cmd,
|
||||
(uint64_t)(uintptr_t)sendbuf,
|
||||
(uint64_t)sendlen,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_PRIP_SM3_HASH_SIGLE, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t __mspe_sm4_set_key(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen)
|
||||
{
|
||||
uint64_t args[] = { (uint64_t)cmd,
|
||||
(uint64_t)(uintptr_t)sendbuf,
|
||||
(uint64_t)sendlen,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_PRIP_SM4_SET_KEY, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t __mspe_sm4_set_iv(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen)
|
||||
{
|
||||
uint64_t args[] = { (uint64_t)cmd,
|
||||
(uint64_t)(uintptr_t)sendbuf,
|
||||
(uint64_t)sendlen,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_PRIP_SM4_SET_IV, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t __mspe_sm4_init(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen)
|
||||
{
|
||||
uint64_t args[] = { (uint64_t)cmd,
|
||||
(uint64_t)(uintptr_t)sendbuf,
|
||||
(uint64_t)sendlen,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_PRIP_SM4_INIT, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t __mspe_sm4_update(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen)
|
||||
{
|
||||
uint64_t args[] = { (uint64_t)cmd,
|
||||
(uint64_t)(uintptr_t)sendbuf,
|
||||
(uint64_t)sendlen,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_PRIP_SM4_UDATE, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t __mspe_sm4_dofinal(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen)
|
||||
{
|
||||
uint64_t args[] = { (uint64_t)cmd,
|
||||
(uint64_t)(uintptr_t)sendbuf,
|
||||
(uint64_t)sendlen,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_PRIP_SM4_DOFINAL, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t __mspe_km_derive_kdr(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen)
|
||||
{
|
||||
uint64_t args[] = { (uint64_t)cmd,
|
||||
(uint64_t)(uintptr_t)sendbuf,
|
||||
(uint64_t)sendlen,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_PRIP_KM_DERIVE_KDR, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t __mspe_sm9_sign(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen)
|
||||
{
|
||||
uint64_t args[] = { (uint64_t)cmd,
|
||||
(uint64_t)(uintptr_t)sendbuf,
|
||||
(uint64_t)sendlen,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_PRIP_SM9_SIGN, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t __mspe_sm9_verify(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen)
|
||||
{
|
||||
uint64_t args[] = { (uint64_t)cmd,
|
||||
(uint64_t)(uintptr_t)sendbuf,
|
||||
(uint64_t)sendlen,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_PRIP_SM9_VERIFY, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t __mspe_sm9_wrap_key(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen)
|
||||
{
|
||||
uint64_t args[] = { (uint64_t)cmd,
|
||||
(uint64_t)(uintptr_t)sendbuf,
|
||||
(uint64_t)sendlen,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_PRIP_SM9_WRAP_KEY, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t __mspe_sm9_unwrap_key(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen)
|
||||
{
|
||||
uint64_t args[] = { (uint64_t)cmd,
|
||||
(uint64_t)(uintptr_t)sendbuf,
|
||||
(uint64_t)sendlen,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_PRIP_SM9_UNWRAP_KEY, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t __mspe_sm9_encrypt(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen)
|
||||
{
|
||||
uint64_t args[] = { (uint64_t)cmd,
|
||||
(uint64_t)(uintptr_t)sendbuf,
|
||||
(uint64_t)sendlen,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_PRIP_SM9_ENCRYPT, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t __mspe_sm9_decrypt(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen)
|
||||
{
|
||||
uint64_t args[] = { (uint64_t)cmd,
|
||||
(uint64_t)(uintptr_t)sendbuf,
|
||||
(uint64_t)sendlen,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_PRIP_SM9_DECRYPT, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t __mspe_sm9_pre_data(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen)
|
||||
{
|
||||
uint64_t args[] = { (uint64_t)cmd,
|
||||
(uint64_t)(uintptr_t)sendbuf,
|
||||
(uint64_t)sendlen,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_PRIP_SM9_PRE_DATA, args, ARRAY_SIZE(args));
|
||||
}
|
||||
Vendored
-36
@@ -1,36 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved.
|
||||
* Description: privacy data protection api syscall interface, call tee drvier api
|
||||
* Create: 2020-03-10
|
||||
*/
|
||||
#ifndef HISI_PRIVACY_PROTECTION_DRV_H
|
||||
#define HISI_PRIVACY_PROTECTION_DRV_H
|
||||
|
||||
#include "stdint.h"
|
||||
|
||||
/* privacy protection */
|
||||
uint32_t __mspe_poweron(uint32_t cmd, uint32_t id, uint32_t profile);
|
||||
uint32_t __mspe_poweroff(uint32_t cmd, uint32_t id, uint32_t profile);
|
||||
uint32_t __mspe_rnd_gen_trnd(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen);
|
||||
uint32_t __mspe_sm2_gen_key(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen);
|
||||
uint32_t __mspe_sm2_encrypt(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen);
|
||||
uint32_t __mspe_sm2_decrypt(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen);
|
||||
uint32_t __mspe_sm3_hash_init(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen);
|
||||
uint32_t __mspe_sm3_hash_update(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen);
|
||||
uint32_t __mspe_sm3_hash_dofinal(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen);
|
||||
uint32_t __mspe_sm3_hash_sigle(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen);
|
||||
uint32_t __mspe_sm4_set_key(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen);
|
||||
uint32_t __mspe_sm4_set_iv(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen);
|
||||
uint32_t __mspe_sm4_init(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen);
|
||||
uint32_t __mspe_sm4_update(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen);
|
||||
uint32_t __mspe_sm4_dofinal(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen);
|
||||
uint32_t __mspe_km_derive_kdr(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen);
|
||||
uint32_t __mspe_sm9_sign(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen);
|
||||
uint32_t __mspe_sm9_verify(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen);
|
||||
uint32_t __mspe_sm9_wrap_key(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen);
|
||||
uint32_t __mspe_sm9_unwrap_key(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen);
|
||||
uint32_t __mspe_sm9_encrypt(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen);
|
||||
uint32_t __mspe_sm9_decrypt(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen);
|
||||
uint32_t __mspe_sm9_pre_data(uint32_t cmd, const uint8_t *sendbuf, uint32_t sendlen);
|
||||
|
||||
#endif
|
||||
-79
@@ -1,79 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2019-2019. All rights reserved.
|
||||
* Create: 2019-05-08
|
||||
* Description: secboot interface.
|
||||
*/
|
||||
|
||||
#include "hmdrv.h"
|
||||
#include "mem_page_ops.h"
|
||||
#include <sre_syscalls_id_ext.h>
|
||||
|
||||
#define ADDR_OFFSET 32
|
||||
|
||||
__attribute__((visibility("default"))) uint32_t __hisi_secboot_copy_img_from_os(uint32_t soc_type)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)soc_type,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_COPY_IMG_FROM_OS_DRIVER, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t __eiius_encrypto_ctr(paddr_t in_paddr, paddr_t out_paddr, uint32_t in_size, uint8_t *iv_vaddr,
|
||||
uint32_t iv_size, uint32_t mode)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)in_paddr,
|
||||
(uint64_t)out_paddr,
|
||||
(uint64_t)in_size,
|
||||
(uint64_t)(uintptr_t)iv_vaddr, /* Not support 64bit TA now */
|
||||
(uint64_t)iv_size,
|
||||
(uint64_t)mode,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_EIIUS_ENCRYPTO_DATA, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int32_t __eiius_image_verify(paddr_t data_paddr, paddr_t vrl_paddr, uint32_t maxsize, uint32_t is_decrypto)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)data_paddr,
|
||||
(uint64_t)vrl_paddr,
|
||||
(uint64_t)maxsize,
|
||||
(uint64_t)is_decrypto,
|
||||
};
|
||||
return hm_drv_call(SW_EIIUS_VERIFY_DATA, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t __eiius_get_paddr(uint32_t *low_paddr, uint32_t *high_paddr, uint32_t *p_size, uint32_t addr_type)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)low_paddr, /* Not support 64bit TA now */
|
||||
(uint64_t)(uintptr_t)high_paddr, /* Not support 64bit TA now */
|
||||
(uint64_t)(uintptr_t)p_size, /* Not support 64bit TA now */
|
||||
(uint64_t)addr_type,
|
||||
};
|
||||
return hm_drv_call(SW_EIIUS_GET_PADDR, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t __eiius_secure_memory_map(paddr_t phy_addr, unsigned int size, unsigned int *virt_addr,
|
||||
unsigned int secure_mode, unsigned int cache_mode)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)phy_addr,
|
||||
(uint64_t)size,
|
||||
(uint64_t)(uintptr_t)virt_addr, /* Not support 64bit TA now */
|
||||
(uint64_t)secure_mode,
|
||||
(uint64_t)cache_mode,
|
||||
};
|
||||
return hm_drv_call(SW_EIIUS_MAP_ADDR, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t __eiius_secure_memory_unmap(unsigned int virt_addr, unsigned int size)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)virt_addr,
|
||||
(uint64_t)size,
|
||||
};
|
||||
return hm_drv_call(SW_EIIUS_UNMAP_ADDR, args, ARRAY_SIZE(args));
|
||||
}
|
||||
@@ -1,72 +0,0 @@
|
||||
#include <stdint.h>
|
||||
#include <hm_mman_ext.h>
|
||||
#include "lib_timer.h"
|
||||
#include "sre_syscall.h"
|
||||
#include "sre_syscalls_ext.h"
|
||||
#include "tee_internal_api.h"
|
||||
#include "tee_log.h"
|
||||
|
||||
#include <sre_syscalls_id.h>
|
||||
#include <sre_syscalls_id_ext.h>
|
||||
|
||||
#include "hmdrv.h"
|
||||
|
||||
unsigned int __npu_syscall_ioctl_cmdproc(void *command_info)
|
||||
{
|
||||
if (command_info == NULL)
|
||||
return -1;
|
||||
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)command_info /* Not support 64bit TA now */
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_NPU_IOCTL_CFG, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
unsigned int __npu_syscall_llseek_cmdproc(void *command_info)
|
||||
{
|
||||
if (command_info == NULL)
|
||||
return -1;
|
||||
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)command_info /* Not support 64bit TA now */
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_NPU_LLSEEK_CFG, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
unsigned int __npu_syscall_open_cmdproc(void)
|
||||
{
|
||||
return hm_drv_call(SW_SYSCALL_NPU_OPEN_MODE_CFG, NULL, 0);
|
||||
}
|
||||
|
||||
unsigned int __npu_syscall_release_cmdproc(void *command_info)
|
||||
{
|
||||
if (command_info == NULL)
|
||||
return -1;
|
||||
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)command_info /* Not support 64bit TA now */
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_NPU_REALEASE_MODE_CFG, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
unsigned int __npu_syscall_write_cmdproc(void *command_info)
|
||||
{
|
||||
if (command_info == NULL)
|
||||
return -1;
|
||||
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)command_info /* Not support 64bit TA now */
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_NPU_WRITE_INSTR_CFG, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
#ifdef TEE_SUPPORT_SVM
|
||||
int __teesvm_ioctl(int svm_ta_tag, void *mcl)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)svm_ta_tag,
|
||||
(uint64_t)mcl,
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_NPU_SMMU_SVM, args, ARRAY_SIZE(args));
|
||||
}
|
||||
#endif
|
||||
-159
@@ -1,159 +0,0 @@
|
||||
#include "secmem_drv.h"
|
||||
#include <stdint.h>
|
||||
#include <hm_mman_ext.h>
|
||||
#include "lib_timer.h"
|
||||
#include "sre_hwi.h"
|
||||
#include "sre_task.h"
|
||||
#include "sre_syscall.h"
|
||||
#include "tee_internal_api.h"
|
||||
|
||||
#ifdef TEE_SUPPORT_VLTMM_SRV
|
||||
#include <vltmm_client_api.h>
|
||||
#endif
|
||||
|
||||
#include <sre_syscalls_id.h>
|
||||
#include <sre_syscalls_id_ext.h>
|
||||
|
||||
#include "hmdrv.h"
|
||||
|
||||
/*
|
||||
* RTOSck integrated Secure Element API
|
||||
* in rtosck:
|
||||
* __XXXX are used by el0 apps (e.g.: ta)
|
||||
* XXXX are used by kernel (e.g.: drivers)
|
||||
* due to the drivers now are moved to el0, most apis we need to
|
||||
* provide two version.
|
||||
*/
|
||||
|
||||
#ifdef TEE_SUPPORT_TZMP2
|
||||
__attribute__((visibility("default"))) int __sion_ioctl(int ion_ta_tag, void *mcl)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)ion_ta_tag,
|
||||
(uint64_t)(uintptr_t)mcl,
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_SECMEM_ION_IOCTL_SECTA, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
__attribute__((visibility("default"))) \
|
||||
unsigned int sion_mmap(void *sglist, unsigned int size, unsigned int protect_id, int mode, int cached, int used_by_ta)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)sglist, (uint64_t)size, (uint64_t)protect_id, (uint64_t)mode, (uint64_t)cached,
|
||||
(uint64_t)used_by_ta,
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_SECMEM_ION_MMAP, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
__attribute__((visibility("default"))) \
|
||||
int sion_munmap(void *sglist, unsigned int va, unsigned int size, unsigned int protect_id, int mode, int used_by_ta)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)sglist, (uint64_t)va, (uint64_t)size,
|
||||
(uint64_t)protect_id, (uint64_t)mode, (uint64_t)used_by_ta,
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_SECMEM_ION_MUNMAP, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
__attribute__((visibility("default"))) int ddr_sec_cfg(struct sglist *sglist, int feature_id, int ddr_cfg_type)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)sglist,
|
||||
(uint64_t)feature_id,
|
||||
(uint64_t)ddr_cfg_type,
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_SECMEM_DDR_CFG, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
__attribute__((visibility("default"))) \
|
||||
unsigned int sion_mmap_sfd(unsigned int sfd, unsigned int size, unsigned int protect_id, int mode, int cached, int used_by_ta)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)sfd, (uint64_t)size, (uint64_t)protect_id, (uint64_t)mode, (uint64_t)cached,
|
||||
(uint64_t)used_by_ta,
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_SECMEM_ION_MMAP_SFD, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
__attribute__((visibility("default"))) \
|
||||
int sion_munmap_sfd(unsigned int sfd, unsigned int va, unsigned int size, unsigned int protect_id, int mode, int used_by_ta)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)sfd, (uint64_t)va, (uint64_t)size,
|
||||
(uint64_t)protect_id, (uint64_t)mode, (uint64_t)used_by_ta,
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_SECMEM_ION_MUNMAP_SFD, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
__attribute__((visibility("default"))) \
|
||||
int sion_ddr_sec_cfg(u16 buffer_id, unsigned int size,
|
||||
int cached, int feature_id, int ddr_cfg_type)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)buffer_id,
|
||||
(uint64_t)size,
|
||||
(uint64_t)cached,
|
||||
(uint64_t)feature_id,
|
||||
(uint64_t)ddr_cfg_type,
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_SECMEM_DDR_CFG_SFD, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
__attribute__((visibility("default"))) \
|
||||
int sion_create_smmu_domain(u32 protect_id, u64 pgtable_addr,
|
||||
u32 pgtable_size)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)protect_id,
|
||||
(uint64_t)pgtable_addr,
|
||||
(uint64_t)pgtable_size,
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_SECMEM_CREATE_DOMAIN, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
__attribute__((visibility("default"))) \
|
||||
int sion_destroy_smmu_domain(u32 protect_id)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)protect_id,
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_SECMEM_DESTROY_DOMAIN, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
#endif
|
||||
__attribute__((visibility("default"))) \
|
||||
int secmem_get_version(void)
|
||||
{
|
||||
int version = VERSION_1;
|
||||
|
||||
#ifdef TEE_SUPPORT_VLTMM_SRV
|
||||
version = VERSION_2;
|
||||
#endif
|
||||
|
||||
return version;
|
||||
}
|
||||
|
||||
#ifndef UNUSED
|
||||
#define UNUSED(x) ((void)(x))
|
||||
#endif
|
||||
|
||||
__attribute__((visibility("default"))) \
|
||||
int secmem_smmu_domain_init(uint32_t sid, uint32_t size)
|
||||
{
|
||||
#ifdef TEE_SUPPORT_VLTMM_SRV
|
||||
return vlt_create_siommu_domain(sid, size);
|
||||
#endif
|
||||
UNUSED(sid);
|
||||
UNUSED(size);
|
||||
return 0;
|
||||
}
|
||||
|
||||
__attribute__((visibility("default"))) \
|
||||
int secmem_smmu_domain_destroy(uint32_t sid)
|
||||
{
|
||||
#ifdef TEE_SUPPORT_VLTMM_SRV
|
||||
return vlt_destroy_siommu_domain(sid);
|
||||
#endif
|
||||
UNUSED(sid);
|
||||
return 0;
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2019-2019. All rights reserved.
|
||||
* Description: moved from teeos, secmem driver
|
||||
* Create: 2019-11-08
|
||||
*/
|
||||
#ifndef LIBTEE_DRIVER_API_SECMEM_DRV_H
|
||||
#define LIBTEE_DRIVER_API_SECMEM_DRV_H
|
||||
#include "dynion.h" // struct sglist
|
||||
|
||||
enum SEC_Task {
|
||||
SEC_TASK_DRM = 0x0,
|
||||
SEC_TASK_SEC,
|
||||
SEC_TASK_TINY,
|
||||
SEC_TASK_MAX,
|
||||
};
|
||||
|
||||
#ifdef TEE_SUPPORT_TZMP2
|
||||
/* sec_mem */
|
||||
int __sion_ioctl(int ion_ta_tag, void *mcl);
|
||||
unsigned int sion_mmap(void *sglist, unsigned int size, unsigned int protect_id, int mode, int cached, int used_by_ta);
|
||||
int sion_munmap(void *sglist, unsigned int va, unsigned int size, unsigned int protect_id, int mode, int used_by_ta);
|
||||
int ddr_sec_cfg(struct sglist *sglist, int feature_id, int ddr_cfg_type);
|
||||
|
||||
|
||||
extern int sion_create_smmu_domain(u32 protect_id,
|
||||
u64 pgtable_addr, u32 pgtable_size);
|
||||
extern int sion_destroy_smmu_domain(u32 protect_id);
|
||||
|
||||
#endif
|
||||
|
||||
extern int secmem_smmu_domain_init(uint32_t sid, uint32_t size);
|
||||
extern int secmem_smmu_domain_destroy(uint32_t sid);
|
||||
|
||||
int secmem_get_version(void);
|
||||
/* same as secmem_api.h */
|
||||
enum {
|
||||
VERSION_1 = 1,
|
||||
VERSION_2 = 2,
|
||||
};
|
||||
|
||||
#endif /* LIBTEE_DRIVER_API_SECMEM_DRV_H */
|
||||
@@ -1,70 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2019-2020. All rights reserved.
|
||||
* Create: 2019-05-08
|
||||
* Description: vdecry driver interface.
|
||||
*/
|
||||
#include <stdint.h>
|
||||
#include <hm_mman_ext.h>
|
||||
#include <cache_flush.h>
|
||||
#include "mem_page_ops.h"
|
||||
#include "lib_timer.h"
|
||||
#include "sre_hwi.h"
|
||||
#include "sre_task.h"
|
||||
#include "sre_syscall.h"
|
||||
#include "tee_internal_api.h"
|
||||
#include "tee_log.h"
|
||||
#include "mem_page_ops.h" // paddr_t
|
||||
|
||||
#include <sre_syscalls_id.h>
|
||||
#include <sre_syscalls_id_ext.h>
|
||||
|
||||
#include "hmdrv.h"
|
||||
|
||||
typedef struct mem_map_para {
|
||||
paddr_t phy_addr;
|
||||
unsigned int size;
|
||||
unsigned int secure_mode;
|
||||
unsigned int cache_mode;
|
||||
unsigned int protect_id;
|
||||
unsigned int buff_id;
|
||||
} MEM_Map_Para_S;
|
||||
|
||||
typedef struct mem_unmap_para {
|
||||
unsigned int vir_addr;
|
||||
unsigned int secure_mode;
|
||||
unsigned int size;
|
||||
unsigned int protect_id;
|
||||
unsigned int buff_id;
|
||||
} MEM_UnMap_Para_S;
|
||||
|
||||
int __SECURE_TEE_Mmap(struct mem_map_para *mem_para, unsigned int *virt_addr)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)mem_para, /* Not support 64bit TA now */
|
||||
(uint64_t)(uintptr_t)virt_addr /* Not support 64bit TA now */
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_SYSCALL_SECURE_TEE_MMAP, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int __SECURE_TEE_Unmap(struct mem_unmap_para *mem_para)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)mem_para /* Not support 64bit TA now */
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_SYSCALL_SECURE_TEE_UNMAP, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
void __SECURE_FlushCache(unsigned int start, unsigned int end)
|
||||
{
|
||||
__dma_flush_range(start, end);
|
||||
}
|
||||
|
||||
int __SECURE_ISSecureMemory(paddr_t addr, unsigned int size, unsigned int protect_id)
|
||||
{
|
||||
uint64_t args[] = { (uint64_t)addr, (uint64_t)((addr >> 32) & 0xffffffff), /* addr offset */
|
||||
(uint64_t)size, (uint64_t)protect_id };
|
||||
|
||||
return hm_drv_call(SW_SYSCALL_SECURE_ISSEUCREMEM, args, ARRAY_SIZE(args));
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved.
|
||||
* Description: symbles export for use
|
||||
* Create: 2020-03-20
|
||||
*/
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#define SE_CRYPTO_SUPPORT 0x1U
|
||||
#define SE_CRYPTO_NOT_SUPPORT 0x0U
|
||||
#define SKYTONE_VERSION 10000U
|
||||
|
||||
uint32_t TEE_inSE_support()
|
||||
{
|
||||
#ifdef FEATURE_SE_CRYPTO
|
||||
return SE_CRYPTO_SUPPORT;
|
||||
#else
|
||||
return SE_CRYPTO_NOT_SUPPORT;
|
||||
#endif
|
||||
}
|
||||
|
||||
uint32_t TEE_EXT_Get_Skytone_Version()
|
||||
{
|
||||
return SKYTONE_VERSION;
|
||||
}
|
||||
@@ -1,102 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2018-2018. All rights reserved.
|
||||
*
|
||||
*
|
||||
* Create: 2018-05-06
|
||||
*
|
||||
* Description: HDCP(High -bandwidth Digital Content Protection) functions f
|
||||
* or compatible RTOSck SRE syscalls
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <hmdrv.h>
|
||||
#include <hm_msg_type.h> // for ARRAY_SIZE
|
||||
|
||||
#include "sre_syscalls_id_ext.h"
|
||||
|
||||
/*
|
||||
* CODEREVIEW CHECKLIST
|
||||
* ARG: no need to check, pass to platdrv directly
|
||||
* RIGHTS: N/A
|
||||
* BUFOVF: N/A
|
||||
* LOG: N/A
|
||||
* RET:
|
||||
* - return hm_drv_call() return value
|
||||
* RACING: N/A
|
||||
* LEAK: N/A
|
||||
* ARITHOVF: N/A
|
||||
*/
|
||||
int32_t __hdcp13_key_all_set(void *key_all)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)key_all, /* Not support 64bit TA now */
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_HDCP13_KEY_ALL_SET, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int32_t __hdcp22_key_set(void *duk, void *kpf)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)duk, /* Not support 64bit TA now */
|
||||
(uint64_t)(uintptr_t)kpf, /* Not support 64bit TA now */
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_HDCP22_KEY_SET, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int32_t __hdcp_dp_enable(unsigned int dp_flag)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)dp_flag,
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_HDCP_DP_ENABLE, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int32_t __hdcp_get_value(unsigned int offset)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)offset,
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_HDCP_GET_VALUE, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int32_t __hdcp_set_reg(unsigned int reg_value, unsigned int offset)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)reg_value,
|
||||
(uint64_t)offset,
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_HDCP_SET_REG, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int __hdcp_ioctl(unsigned int cmd_id, unsigned int data,
|
||||
void* buf, unsigned int size)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)cmd_id,
|
||||
(uint64_t)data,
|
||||
(uint64_t)(uintptr_t)buf, /* Not support 64bit TA now */
|
||||
(uint64_t)size,
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_HDCP_IOCTL, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int __hdcp_wfd_handle_map(unsigned int *mappedAddr, unsigned int cacheMode,
|
||||
unsigned int secShareFd, unsigned int dataLen)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)mappedAddr,
|
||||
(uint64_t)cacheMode,
|
||||
(uint64_t)secShareFd,
|
||||
(uint64_t)dataLen
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_HDCP_WFD_HANDLE_MAP, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int __hdcp_wfd_handle_unmap(unsigned int secShareFd, unsigned int dataLen)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)secShareFd,
|
||||
(uint64_t)dataLen
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_HDCP_WFD_HANDLE_UNMAP, args, ARRAY_SIZE(args));
|
||||
}
|
||||
@@ -1,71 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved.
|
||||
* Description: Syscall to call MSPC drivers.
|
||||
* Create: 2020/03/20
|
||||
*/
|
||||
|
||||
#include <sre_syscalls_id_ext.h>
|
||||
#include <hmdrv.h>
|
||||
#include <tee_log.h>
|
||||
#include <tee_defines.h>
|
||||
|
||||
enum mspc_factory_cmd {
|
||||
MSPC_FAC_MODE_ENTER,
|
||||
MSPC_FAC_MODE_EXIT,
|
||||
MSPC_FAC_RECOVERY,
|
||||
MSPC_FAC_WRITE_LOCK,
|
||||
};
|
||||
|
||||
int32_t __hisi_mspc_check_secflash(uint32_t *status)
|
||||
{
|
||||
uint64_t args[] = { (uint64_t)(uintptr_t)status };
|
||||
|
||||
if (!status) {
|
||||
tloge("%s: invalid param!\n", __func__);
|
||||
return TEE_ERROR_BAD_PARAMETERS;
|
||||
}
|
||||
|
||||
return hm_drv_call(SW_SYSCALL_MSPC_CHECK_SECFLASH, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int32_t __hisi_mspc_fac_mode_enter(void)
|
||||
{
|
||||
uint64_t args[] = { MSPC_FAC_MODE_ENTER, 0 };
|
||||
|
||||
return hm_drv_multithread_call(SW_SYSCALL_MSPC_FACOTRY_CMD, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int32_t __hisi_mspc_fac_mode_exit(void)
|
||||
{
|
||||
uint64_t args[] = { MSPC_FAC_MODE_EXIT, 0 };
|
||||
|
||||
return hm_drv_multithread_call(SW_SYSCALL_MSPC_FACOTRY_CMD, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int32_t __hisi_mspc_recovery(uint32_t flags)
|
||||
{
|
||||
uint64_t args[] = { MSPC_FAC_RECOVERY, (uint64_t)flags };
|
||||
|
||||
return hm_drv_multithread_call(SW_SYSCALL_MSPC_FACOTRY_CMD, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int32_t __hisi_mspc_power_on(uint32_t vote_id)
|
||||
{
|
||||
uint64_t args[] = { (uint64_t)vote_id };
|
||||
|
||||
return hm_drv_call(SW_SYSCALL_MSPC_POWER_ON, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int32_t __hisi_mspc_power_off(uint32_t vote_id)
|
||||
{
|
||||
uint64_t args[] = { (uint64_t)vote_id };
|
||||
|
||||
return hm_drv_call(SW_SYSCALL_MSPC_POWER_OFF, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int32_t __hisi_mspc_secflash_writelock(uint32_t is_set_op)
|
||||
{
|
||||
uint64_t args[] = { MSPC_FAC_WRITE_LOCK, (uint64_t)is_set_op };
|
||||
|
||||
return hm_drv_multithread_call(SW_SYSCALL_MSPC_FACOTRY_CMD, args, ARRAY_SIZE(args));
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved.
|
||||
* Description: Header file for MSPC API drivers
|
||||
* Author : z00452790
|
||||
* Create: 2020/07/07
|
||||
*/
|
||||
|
||||
#ifndef __HISI_MSPC_TASK_H__
|
||||
#define __HISI_MSPC_TASK_H__
|
||||
|
||||
#include "stdint.h"
|
||||
|
||||
int32_t __hisi_mspc_fac_mode_enter(void);
|
||||
int32_t __hisi_mspc_fac_mode_exit(void);
|
||||
int32_t __hisi_mspc_power_on(uint32_t vote_id);
|
||||
int32_t __hisi_mspc_power_off(uint32_t vote_id);
|
||||
int32_t __hisi_mspc_recovery(uint32_t flags);
|
||||
int32_t __hisi_mspc_check_secflash(uint32_t *status);
|
||||
int32_t __hisi_mspc_secflash_writelock(uint32_t is_set_op);
|
||||
|
||||
#endif /* end of __HISI_MSPC_TASK_H__ */
|
||||
@@ -1,42 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved.
|
||||
* Description: Syscall to call MSPC drivers.
|
||||
* Create: 2020/06/09
|
||||
*/
|
||||
|
||||
#include <sre_syscalls_id_ext.h>
|
||||
#include <hmdrv.h>
|
||||
#include <tee_log.h>
|
||||
#include <tee_defines.h>
|
||||
|
||||
#ifdef CONFIG_HISI_MSPC_IPC_TEST
|
||||
int32_t __mspc_ipc_test(uint8_t *msg, uint32_t len)
|
||||
{
|
||||
uint64_t args[] = { (uint64_t)(uintptr_t)msg,
|
||||
(uint64_t)len,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_SYSCALL_MSPC_IPC_TEST, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int32_t __mspc_ddr_read(uint32_t addr, uint32_t len, uint8_t *buff, uint32_t *bufflen)
|
||||
{
|
||||
uint64_t args[] = { (uint64_t)addr,
|
||||
(uint64_t)len,
|
||||
(uint64_t)(uintptr_t)buff,
|
||||
(uint64_t)(*bufflen),
|
||||
(uint64_t)(uintptr_t)bufflen,
|
||||
(uint64_t)sizeof(uint32_t),
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_MSPC_DDR_READ, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int32_t __mspc_ddr_write(uint8_t *buff, uint32_t bufflen, uint32_t addr)
|
||||
{
|
||||
uint64_t args[] = { (uint64_t)(uintptr_t)buff,
|
||||
(uint64_t)bufflen,
|
||||
(uint64_t)addr,
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_MSPC_DDR_WRITE, args, ARRAY_SIZE(args));
|
||||
}
|
||||
#endif
|
||||
@@ -1,19 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved.
|
||||
* Description: Header file for MSPC IPC test drivers
|
||||
* Author : z00452790
|
||||
* Create: 2020/07/07
|
||||
*/
|
||||
|
||||
#ifndef __HISI_MSPC_TASK_H__
|
||||
#define __HISI_MSPC_TASK_H__
|
||||
|
||||
#include "stdint.h"
|
||||
|
||||
#ifdef CONFIG_HISI_MSPC_IPC_TEST
|
||||
int32_t __mspc_ipc_test(uint8_t *msg, uint32_t len);
|
||||
int32_t __mspc_ddr_read(uint32_t addr, uint32_t len, uint8_t *buff, uint32_t *bufflen);
|
||||
int32_t __mspc_ddr_write(uint8_t *buff, uint32_t bufflen, uint32_t addr);
|
||||
#endif
|
||||
|
||||
#endif /* end of __HISI_MSPC_TASK_H__ */
|
||||
@@ -1,43 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved.
|
||||
* Description: Syscall to call MSPC drivers stubs.
|
||||
* Author : z00452790
|
||||
* Create: 2020/07/09
|
||||
*/
|
||||
|
||||
#include "hisi_mspc.h"
|
||||
#include "stdint.h"
|
||||
|
||||
int32_t __hisi_mspc_fac_mode_enter(void)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
int32_t __hisi_mspc_fac_mode_exit(void)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
int32_t __hisi_mspc_power_on(uint32_t vote_id)
|
||||
{
|
||||
(void)vote_id;
|
||||
return -1;
|
||||
}
|
||||
int32_t __hisi_mspc_power_off(uint32_t vote_id)
|
||||
{
|
||||
(void)vote_id;
|
||||
return -1;
|
||||
}
|
||||
int32_t __hisi_mspc_recovery(uint32_t flags)
|
||||
{
|
||||
(void)flags;
|
||||
return -1;
|
||||
}
|
||||
int32_t __hisi_mspc_check_secflash(uint32_t *status)
|
||||
{
|
||||
(void)status;
|
||||
return -1;
|
||||
}
|
||||
int32_t __hisi_mspc_secflash_writelock(uint32_t is_set_op)
|
||||
{
|
||||
(void)is_set_op;
|
||||
return -1;
|
||||
}
|
||||
@@ -1,228 +0,0 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* Copyright 2008 - 2050, Huawei Tech. Co., Ltd. */
|
||||
/* ALL RIGHTS RESERVED */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
#include <stdint.h>
|
||||
#include <hm_mman_ext.h>
|
||||
#include <hm_msg_type.h> // for ARRAY_SIZE
|
||||
|
||||
#include "lib_timer.h"
|
||||
#include "sre_task.h"
|
||||
#include "sre_syscall.h"
|
||||
#include "tee_internal_api.h"
|
||||
#include <sre_syscalls_id.h>
|
||||
#include <sre_syscalls_id_ext.h>
|
||||
|
||||
#include "hmdrv.h"
|
||||
#include <stdio.h>
|
||||
|
||||
/*
|
||||
* RTOSck integrated Secure Element API
|
||||
* in rtosck:
|
||||
* __XXXX are used by el0 apps (e.g.: ta)
|
||||
* XXXX are used by kernel (e.g.: drivers)
|
||||
* due to the drivers now are moved to el0, most apis we need to
|
||||
* provide two version.
|
||||
*/
|
||||
|
||||
int __scard_connect(int reader_id, unsigned int vote_id,
|
||||
void *p_atr, unsigned int *atr_len)
|
||||
{
|
||||
if (!atr_len) {
|
||||
printf("__scard_connect: invalid args art_len is null\n");
|
||||
return -1;
|
||||
}
|
||||
uint64_t args[] = {
|
||||
(uint64_t)reader_id,
|
||||
(uint64_t)vote_id,
|
||||
(uint64_t)(uintptr_t)p_atr, /* Not support 64bit TA now */
|
||||
(uint64_t)(uintptr_t)atr_len, /* Not support 64bit TA now */
|
||||
};
|
||||
uint32_t lens[] = {
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
sizeof(unsigned int)
|
||||
};
|
||||
return hm_drv_call_ex(SW_SYSCALL_SCARD_CONNECT, args, lens,
|
||||
ARRAY_SIZE(args), NULL, 0);
|
||||
}
|
||||
|
||||
int __scard_disconnect(int reader_id, unsigned int vote_id)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)reader_id,
|
||||
(uint64_t)vote_id,
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_SCARD_DISCONNECT, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int __driver_p61_factory_test(int reader_id)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)reader_id,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_SYSCALL_P61_FAC_TEST, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int __phNxpEse_GetOsMode(void)
|
||||
{
|
||||
return hm_drv_call(SW_SYSCALL_ESE_GET_OS_MODE, NULL, 0);
|
||||
}
|
||||
|
||||
int __ese_proto7816_reset(void)
|
||||
{
|
||||
return hm_drv_call(SW_SYSCALL_ESE_7816_RESET, NULL, 0);
|
||||
}
|
||||
|
||||
int __ese_set_nfc_chiptype(int chip_type)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)chip_type,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_SYSCALL_SET_NFC_TYPE, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int __scard_transmit(int reader_id, unsigned char *p_cmd, unsigned int cmd_len,
|
||||
unsigned char *p_rsp, unsigned int *rsp_len)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)reader_id,
|
||||
(uint64_t)(uintptr_t)p_cmd, /* Not support 64bit TA now */
|
||||
(uint64_t)cmd_len,
|
||||
(uint64_t)(uintptr_t)p_rsp, /* Not support 64bit TA now */
|
||||
(uint64_t)(uintptr_t)rsp_len, /* Not support 64bit TA now */
|
||||
};
|
||||
uint32_t lens[] = {
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
sizeof(unsigned int)
|
||||
};
|
||||
if (!rsp_len) {
|
||||
printf("__scard_transmit: invalid args, rsp_len is null\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_FEATURE_SEPLAT
|
||||
return hm_drv_call_multithread_ex(SW_SYSCALL_SCARD_TRANSMIT, args, lens,
|
||||
ARRAY_SIZE(args), (void*)rsp_len,
|
||||
sizeof(unsigned int));
|
||||
#else
|
||||
return hm_drv_call_ex(SW_SYSCALL_SCARD_TRANSMIT, args, lens,
|
||||
ARRAY_SIZE(args), (void*)rsp_len,
|
||||
sizeof(unsigned int));
|
||||
#endif
|
||||
}
|
||||
|
||||
int __scard_support_mode(int reader_id)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)reader_id,
|
||||
};
|
||||
|
||||
return hm_drv_call(SW_SYSCALL_SCARD_SUPPORT_MODE, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int __scard_send(int reader_id, unsigned char *p_cmd, unsigned int cmd_len)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)reader_id,
|
||||
(uint64_t)(uintptr_t)p_cmd, /* Not support 64bit TA now */
|
||||
(uint64_t)cmd_len,
|
||||
};
|
||||
uint32_t lens[] = { 0, 0, 0 };
|
||||
if (cmd_len < SYSCALL_DATA_MAX) {
|
||||
lens[1] = cmd_len;
|
||||
};
|
||||
return hm_drv_call_multithread_ex(SW_SYSCALL_SCARD_SEND, args, lens, ARRAY_SIZE(args), NULL, 0);
|
||||
}
|
||||
|
||||
int __scard_receive(unsigned char *p_rsp, unsigned int *rsp_len)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)p_rsp, /* Not support 64bit TA now */
|
||||
(uint64_t)(uintptr_t)rsp_len, /* Not support 64bit TA now */
|
||||
};
|
||||
uint32_t lens[] = { 0, sizeof(unsigned int) };
|
||||
return hm_drv_call_multithread_ex(SW_SYSCALL_SCARD_RECEIVE, args, lens,
|
||||
ARRAY_SIZE(args), rsp_len, sizeof(unsigned int));
|
||||
}
|
||||
|
||||
int __scard_get_status(void)
|
||||
{
|
||||
return hm_drv_call(SW_SYSCALL_SCARD_GET_STATUS, NULL, 0);
|
||||
}
|
||||
|
||||
int __inse_connect(void *id)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)id, /* Not support 64bit TA now */
|
||||
};
|
||||
uint32_t lens[] = { sizeof(unsigned int) };
|
||||
return hm_drv_call_ex(SW_SYSCALL_SE_CONNECT, args, lens, ARRAY_SIZE(args), NULL, 0);
|
||||
}
|
||||
|
||||
int __inse_disconnect(void *id)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)id, /* Not support 64bit TA now */
|
||||
};
|
||||
|
||||
uint32_t lens[] = { sizeof(unsigned int) };
|
||||
return hm_drv_call_ex(SW_SYSCALL_SE_DISCONNECT, args, lens, ARRAY_SIZE(args), NULL, 0);
|
||||
}
|
||||
|
||||
int __ese_transmit_data(unsigned char *data, unsigned int data_size)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)data, /* Not support 64bit TA now */
|
||||
(uint64_t)data_size,
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_ESE_TRANSMIT, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int __ese_read_data(unsigned char *data, unsigned int data_size)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)data, /* Not support 64bit TA now */
|
||||
(uint64_t)data_size,
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_ESE_READ, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int __scard_get_ese_type(void)
|
||||
{
|
||||
return hm_drv_call(SW_SYSCALL_SCARD_GET_ESE_TYPE, NULL, 0);
|
||||
}
|
||||
|
||||
#ifdef FEATURE_SE
|
||||
int __SE_getflag(void)
|
||||
{
|
||||
return hm_drv_call(SW_SYSCALL_SE_GETFLAG, NULL, 0);
|
||||
}
|
||||
|
||||
int __SE_setflag(int flag)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)flag,
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_SE_SETFLAG, args, ARRAY_SIZE(args));
|
||||
}
|
||||
#else
|
||||
int __SE_getflag(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int __SE_setflag(int flag)
|
||||
{
|
||||
(void)flag;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
@@ -1,111 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2019-2019. All rights reserved.
|
||||
* Author: h00424236
|
||||
* Create: 2019-05-08
|
||||
* Description: ese interface.
|
||||
*/
|
||||
|
||||
#include "hmdrv.h"
|
||||
#include <sre_syscalls_id.h>
|
||||
#include <sre_syscalls_id_ext.h>
|
||||
|
||||
#include "tee_internal_api.h"
|
||||
#include <string.h>
|
||||
|
||||
#define TEE_SERVICE_SEM \
|
||||
{ \
|
||||
0xaaa862d1, 0x22fe, 0x4609, \
|
||||
{ \
|
||||
0xa4, 0xee, 0x86, 0x67, 0xf6, 0x53, 0x8f, 0x18 \
|
||||
} \
|
||||
}
|
||||
|
||||
#define CMD_SE_ESE_TRANSMIT 0x00000008
|
||||
#define CMD_SE_ESE_READ 0x00000009
|
||||
#define PARAMS_NUM 4
|
||||
static TEE_TASessionHandle g_sem_session;
|
||||
|
||||
static int open_sem_session(TEE_TASessionHandle *session)
|
||||
{
|
||||
TEE_Result ret;
|
||||
TEE_UUID uuid = TEE_SERVICE_SEM;
|
||||
TEE_Param params[PARAMS_NUM];
|
||||
uint32_t param_types;
|
||||
uint32_t return_origin = 0;
|
||||
|
||||
if (session == NULL)
|
||||
return -1;
|
||||
|
||||
param_types =
|
||||
TEE_PARAM_TYPES(TEE_PARAM_TYPE_NONE, TEE_PARAM_TYPE_NONE, TEE_PARAM_TYPE_NONE, TEE_PARAM_TYPE_NONE);
|
||||
|
||||
ret = TEE_OpenTASession(&uuid, TEE_TIMEOUT_INFINITE, param_types, params, session, &return_origin);
|
||||
if (ret != TEE_SUCCESS)
|
||||
tloge("Open TA Session FAIL, ret = %x, origin = %x", ret, return_origin);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void close_sem_session(TEE_TASessionHandle session)
|
||||
{
|
||||
TEE_CloseTASession(session);
|
||||
tlogd("Close TA Session");
|
||||
}
|
||||
|
||||
int tee_ese_transmit(unsigned char *data, unsigned int size)
|
||||
{
|
||||
uint32_t param_types;
|
||||
uint32_t return_origin = 0;
|
||||
TEE_Result ret;
|
||||
TEE_Param params[PARAMS_NUM];
|
||||
int rc;
|
||||
|
||||
rc = open_sem_session(&g_sem_session);
|
||||
if (rc) {
|
||||
tloge("ese Open TA Session FAIL, ret=%d\n", rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
params[0].memref.buffer = (void *)data;
|
||||
params[0].memref.size = size;
|
||||
|
||||
param_types =
|
||||
TEE_PARAM_TYPES(TEE_PARAM_TYPE_MEMREF_INPUT, TEE_PARAM_TYPE_NONE, TEE_PARAM_TYPE_NONE, TEE_PARAM_TYPE_NONE);
|
||||
|
||||
ret = TEE_InvokeTACommand(g_sem_session, TEE_TIMEOUT_INFINITE, CMD_SE_ESE_TRANSMIT, param_types, params,
|
||||
&return_origin);
|
||||
if (ret != TEE_SUCCESS)
|
||||
tloge("tee ese transmit ret = %x, origin = %x\n", ret, return_origin);
|
||||
|
||||
close_sem_session(g_sem_session);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int tee_ese_read(unsigned int *data, unsigned int size)
|
||||
{
|
||||
uint32_t param_types;
|
||||
uint32_t return_origin = 0;
|
||||
TEE_Result ret;
|
||||
TEE_Param params[PARAMS_NUM];
|
||||
int rc;
|
||||
|
||||
rc = open_sem_session(&g_sem_session);
|
||||
if (rc) {
|
||||
tloge("ese Open TA Session FAIL, ret=%d\n", rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
params[0].memref.buffer = (void *)data;
|
||||
params[0].memref.size = size;
|
||||
|
||||
param_types =
|
||||
TEE_PARAM_TYPES(TEE_PARAM_TYPE_MEMREF_OUTPUT, TEE_PARAM_TYPE_NONE, TEE_PARAM_TYPE_NONE, TEE_PARAM_TYPE_NONE);
|
||||
|
||||
ret =
|
||||
TEE_InvokeTACommand(g_sem_session, TEE_TIMEOUT_INFINITE, CMD_SE_ESE_READ, param_types, params, &return_origin);
|
||||
if (ret != TEE_SUCCESS)
|
||||
tloge("tee ese read ret = %x, origin = %x\n", ret, return_origin);
|
||||
|
||||
close_sem_session(g_sem_session);
|
||||
return ret;
|
||||
}
|
||||
@@ -1,123 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2019-2020. All rights reserved.
|
||||
* Description: set and get se channel information from platdrv
|
||||
* Create: 2020-1-14
|
||||
*/
|
||||
#include "se_status.h"
|
||||
#include <hmdrv.h>
|
||||
#include <hm_msg_type.h> /* for ARRAY_SIZE */
|
||||
|
||||
#include "tee_bit_ops.h"
|
||||
#include "sre_syscalls_id.h"
|
||||
|
||||
__attribute__((visibility("default"))) \
|
||||
void __sre_se_channel_info_write(uint32_t reader_id, uint32_t channel_id, uint32_t task_id)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)reader_id,
|
||||
(uint64_t)channel_id,
|
||||
(uint64_t)task_id,
|
||||
};
|
||||
(void)hm_drv_call(SW_SYSCALL_SE_CHANNELINFO_WRITE, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
__attribute__((visibility("default"))) \
|
||||
void __sre_se_channel_info_read(uint32_t reader_id, uint32_t *task_id, uint32_t *cnt)
|
||||
{
|
||||
if (task_id == NULL || cnt == NULL || *cnt == 0)
|
||||
return;
|
||||
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)task_id,
|
||||
(uint64_t)(uintptr_t)cnt,
|
||||
(uint64_t)reader_id,
|
||||
};
|
||||
(void)hm_drv_call(SW_SYSCALL_SE_CHANNELINFO_READ, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
__attribute__((visibility("default"))) \
|
||||
void __sre_se_deactive_write(uint32_t deactive)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)deactive,
|
||||
};
|
||||
(void)hm_drv_call(SW_SYSCALL_SE_DEACTIVE_WRITE, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
__attribute__((visibility("default"))) \
|
||||
void __sre_se_deactive_read(uint32_t *deactive)
|
||||
{
|
||||
if (deactive == NULL)
|
||||
return;
|
||||
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)deactive,
|
||||
};
|
||||
(void)hm_drv_call(SW_SYSCALL_SE_DEACTIVE_READ, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
__attribute__((visibility("default"))) \
|
||||
void __sre_seaid_switch_write(uint8_t *seaid_list, uint32_t seaid_list_len)
|
||||
{
|
||||
if (seaid_list == NULL || seaid_list_len == 0)
|
||||
return;
|
||||
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)seaid_list,
|
||||
(uint64_t)seaid_list_len,
|
||||
};
|
||||
(void)hm_drv_call(SW_SYSCALL_SEAID_SWITCH_WRITE, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
__attribute__((visibility("default"))) \
|
||||
void __sre_seaid_list_len_read(uint32_t *seaid_list_len)
|
||||
{
|
||||
if (seaid_list_len == NULL)
|
||||
return;
|
||||
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)seaid_list_len,
|
||||
};
|
||||
(void)hm_drv_call(SW_SYSCALL_SEAID_LIST_LEN_READ, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
__attribute__((visibility("default"))) \
|
||||
void __sre_seaid_switch_read(uint8_t *seaid_list, uint32_t seaid_list_len)
|
||||
{
|
||||
if (seaid_list == NULL || seaid_list_len == 0)
|
||||
return;
|
||||
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)seaid_list,
|
||||
(uint64_t)seaid_list_len,
|
||||
};
|
||||
(void)hm_drv_call(SW_SYSCALL_SEAID_SWITCH_READ, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
__attribute__((visibility("default"))) \
|
||||
void __sre_se_connect_info_write(uint32_t reader_id, uint8_t *se_connect_info, uint32_t se_connect_info_len)
|
||||
{
|
||||
if (se_connect_info == NULL || se_connect_info_len == 0)
|
||||
return;
|
||||
|
||||
uint64_t args[] = {
|
||||
(uint64_t)reader_id,
|
||||
(uint64_t)(uintptr_t)se_connect_info,
|
||||
(uint64_t)se_connect_info_len,
|
||||
};
|
||||
(void)hm_drv_call(SW_SYSCALL_SE_CONNECT_INFO_WRITE, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
__attribute__((visibility("default"))) \
|
||||
void __sre_se_connect_info_read(uint32_t reader_id, uint8_t *se_connect_info, uint32_t *se_connect_info_len)
|
||||
{
|
||||
if (se_connect_info == NULL || se_connect_info_len == NULL || *se_connect_info_len == 0)
|
||||
return;
|
||||
|
||||
uint64_t args[] = {
|
||||
(uint64_t)reader_id,
|
||||
(uint64_t)(uintptr_t)se_connect_info,
|
||||
(uint64_t)(uintptr_t)se_connect_info_len,
|
||||
};
|
||||
(void)hm_drv_call(SW_SYSCALL_SE_CONNECT_INFO_READ, args, ARRAY_SIZE(args));
|
||||
}
|
||||
@@ -1,121 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2018-2018. All rights reserved.
|
||||
*
|
||||
*
|
||||
* Create: 2018-04-07
|
||||
*
|
||||
* Description: security boot functions for compatible RTOSck SRE syscalls
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <hm_mman_ext.h>
|
||||
#include <hmdrv.h>
|
||||
#include <hm_msg_type.h> /* for ARRAY_SIZE */
|
||||
|
||||
#include "lib_timer.h"
|
||||
#include "sre_task.h"
|
||||
#include "sre_syscall.h"
|
||||
#include "tee_defines.h"
|
||||
|
||||
#include <sre_syscalls_id.h>
|
||||
#include <sre_syscalls_id_ext.h>
|
||||
#include "tee_bit_ops.h"
|
||||
#include "secboot_drv_call.h"
|
||||
|
||||
/*
|
||||
* CODEREVIEW CHECKLIST
|
||||
* ARG: no need to check, pass to platdrv directly
|
||||
* RIGHTS: N/A
|
||||
* BUFOVF: N/A
|
||||
* LOG: N/A
|
||||
* RET:
|
||||
* - return hm_drv_call() return value
|
||||
* RACING: N/A
|
||||
* LEAK: N/A
|
||||
* ARITHOVF: N/A
|
||||
*/
|
||||
#define HIGH_SHIFT 32
|
||||
|
||||
__attribute__((visibility("default"))) \
|
||||
UINT32 __hisi_secboot_process_soc_addr(UINT32 soc_type, const paddr_t src_addr, UINT32 process_type)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)soc_type,
|
||||
(uint64_t)src_addr,
|
||||
(uint64_t)process_type,
|
||||
};
|
||||
return hm_drv_call(SW_PROCESS_SOC_ADDR, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
__attribute__((visibility("default"))) \
|
||||
UINT32 __hisi_secboot_copy_soc_data(UINT32 soc_type, UINT32 offset, const paddr_t src_addr, unsigned len)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)soc_type,
|
||||
(uint64_t)offset,
|
||||
(uint64_t)src_addr,
|
||||
(uint64_t)len,
|
||||
};
|
||||
return hm_drv_call(SW_COPY_SOC_DATA_TYPE, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
__attribute__((visibility("default"))) \
|
||||
UINT32 __hisi_secboot_soc_verification(UINT32 socType, UINT32 vrlAddress, paddr_t imageAddress, unsigned int lock_state)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)socType,
|
||||
(uint64_t)vrlAddress,
|
||||
(uint64_t)imageAddress,
|
||||
(uint64_t)lock_state,
|
||||
};
|
||||
return hm_drv_call(SW_VERIFY_SOC_DATA_TYPE, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
__attribute__((visibility("default"))) \
|
||||
UINT32 __secboot_get_cuid(UINT8 *cuid, UINT32 len)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)(uintptr_t)cuid,
|
||||
(uint64_t)len,
|
||||
};
|
||||
return hm_drv_call(SW_GET_CUID, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
__attribute__((visibility("default"))) \
|
||||
UINT32 __hisi_secboot_soc_reset(UINT32 soc_type)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)soc_type,
|
||||
};
|
||||
return hm_drv_call(SW_SOC_IMAGE_RESET, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
__attribute__((visibility("default"))) \
|
||||
UINT32 __hisi_secboot_soc_set(UINT32 soc_type)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)soc_type,
|
||||
};
|
||||
return hm_drv_call(SW_SOC_IMAGE_SET, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
__attribute__((visibility("default"))) \
|
||||
void __hisi_secboot_get_vrl_addr(UINT32 vrl_address)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)vrl_address,
|
||||
};
|
||||
(void)hm_drv_call(SW_SOC_GET_VRL_ADDR, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
__attribute__((visibility("default"))) \
|
||||
int __bsp_modem_call(unsigned int func_cmd, unsigned int arg1, void *arg2, unsigned int arg3)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)func_cmd,
|
||||
(uint64_t)arg1,
|
||||
(uint64_t)(uintptr_t)arg2, /* Not support 64bit TA now */
|
||||
(uint64_t)arg3,
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_BSP_MODEM_CALL, args, ARRAY_SIZE(args));
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2019-2019. All rights reserved.
|
||||
* Description: secure flash module driver.
|
||||
* Create: 2019/9/3
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include "hm_mman_ext.h"
|
||||
#include "hm_msg_type.h"
|
||||
|
||||
#include "sre_syscall.h"
|
||||
#include "sre_syscalls_id.h"
|
||||
#include "sre_syscalls_id_ext.h"
|
||||
|
||||
#include "hmdrv.h"
|
||||
|
||||
#ifdef CONFIG_HISI_SECFLASH
|
||||
|
||||
int32_t __secflash_chip_reset(uint32_t type)
|
||||
{
|
||||
uint64_t args[] = { (uint64_t)type };
|
||||
|
||||
return hm_drv_call(SW_SYSCALL_SECFLASH_RESET, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
int32_t __secflash_power_save(void)
|
||||
{
|
||||
return hm_drv_call(SW_SYSCALL_SECFLASH_POWER_SAVE, NULL, 0);
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -1,26 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2021-2021. All rights reserved.
|
||||
* Description: Drivers for seplat.
|
||||
* Create: 2021/01/03
|
||||
*/
|
||||
|
||||
#include <sre_syscalls_id_ext.h>
|
||||
#include <hmdrv.h>
|
||||
#include <tee_log.h>
|
||||
#include <tee_defines.h>
|
||||
|
||||
uint32_t seplat_get_dts_status(void)
|
||||
{
|
||||
uint64_t args[] = {};
|
||||
return hm_drv_call(SW_SYSCALL_SEPLAT_GET_DTS_STATUS, args, ARRAY_SIZE(args));
|
||||
}
|
||||
|
||||
uint32_t seplat_power_ctrl(uint32_t vote_id, uint32_t cmd, uint32_t op_type)
|
||||
{
|
||||
uint64_t args[] = {
|
||||
(uint64_t)vote_id,
|
||||
(uint64_t)cmd,
|
||||
(uint64_t)op_type,
|
||||
};
|
||||
return hm_drv_call(SW_SYSCALL_SEPLAT_POWER_CTRL, args, ARRAY_SIZE(args));
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Huawei Technologies Co., Ltd. 2021-2021. All rights reserved.
|
||||
* Description: Header file for seplat share interface.
|
||||
* Create: 2021/02/07
|
||||
*/
|
||||
|
||||
#ifndef SEPLAT_H
|
||||
#define SEPLAT_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
uint32_t seplat_get_dts_status(void);
|
||||
uint32_t seplat_power_ctrl(uint32_t vote_id, uint32_t cmd, uint32_t op_type);
|
||||
|
||||
#endif /* SEPLAT_H */
|
||||
@@ -1,76 +0,0 @@
|
||||
include(apps_lib_common)
|
||||
include(apps_svc_common)
|
||||
include(apps_sub_cfg)
|
||||
include(apps_subcommon)
|
||||
include(apps_feature_macro)
|
||||
|
||||
list(APPEND TEE_C_SOURCES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/chip_info.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/extra_syms.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/hdcp.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/hisi_mspc.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/inse.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/secboot.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/secflash.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/driver_api/file_encry_drv.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/driver_api/fp_drv.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/driver_api/fr_drv.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/driver_api/hisi_hieps_task.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/driver_api/hisi_privacy_protection_drv.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/driver_api/hisi_secboot_drv.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/driver_api/npu_drv.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/driver_api/secmem_drv.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/driver_api/vdecry_drv.c
|
||||
${PROJECT_SOURCE_DIR}/vendor/common/src/chip_info.c
|
||||
${PROJECT_SOURCE_DIR}/libs/libsec_flash_client/src/sec_flash_api.c
|
||||
)
|
||||
|
||||
if ("${CONFIG_SE_SERVICE_32BIT}" STREQUAL "true" OR "${CONFIG_SE_SERVICE_64BIT}" STREQUAL "true")
|
||||
list(APPEND TEE_C_SOURCES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../libvendor_shared/src/se_status.c
|
||||
)
|
||||
endif()
|
||||
|
||||
list(APPEND TEE_INCLUDE_PATH
|
||||
${PROJECT_SOURCE_DIR}/libs/libvltmm_a32/include
|
||||
${PROJECT_SOURCE_DIR}/drivers/platdrv/include
|
||||
${PROJECT_SOURCE_DIR}/vendor/common/include
|
||||
${PLATFORM_DIR}/common/tee_config
|
||||
${PLATFORM_DIR}/${PLATFORM_NAME}/${PRODUCT_NAME}/common/tee_config
|
||||
${PROJECT_SOURCE_DIR}/libs/libsec_flash_client/include
|
||||
${PROJECT_SOURCE_DIR}/sys_libs/libteeagentcommon_client/include
|
||||
${PROJECT_SOURCE_DIR}/sys_libs/libteeagentcommon_client/src
|
||||
)
|
||||
|
||||
if ("${TARGET_BUILD_VARIANT}" STREQUAL "user")
|
||||
list(APPEND TEE_C_FLAGS
|
||||
-DDEF_BUILDUSERMODE
|
||||
)
|
||||
endif()
|
||||
|
||||
if ("${CONFIG_HISI_MSPC_IPC_TEST}" STREQUAL "true")
|
||||
list(APPEND TEE_C_FLAGS
|
||||
-DCONFIG_HISI_MSPC_IPC_TEST
|
||||
)
|
||||
endif()
|
||||
|
||||
list(REMOVE_ITEM TEE_C_FLAGS "-Werror")
|
||||
|
||||
tee_add_library(vendor_static STATIC
|
||||
SOURCES
|
||||
${TEE_C_SOURCES}
|
||||
|
||||
COMPILE_TOOL
|
||||
clang
|
||||
|
||||
COMPILER_FLAGS
|
||||
${TEE_C_FLAGS}
|
||||
|
||||
COMPILER_DEFINITIONS
|
||||
${TEE_C_DEFINITIONS}
|
||||
|
||||
PRIVATE_INCLUDES
|
||||
${TEE_INCLUDE_PATH}
|
||||
|
||||
NO_INSTALL
|
||||
)
|
||||
@@ -1,36 +0,0 @@
|
||||
MODULE := libvendor_static$(TARG).a
|
||||
|
||||
FILES := $(wildcard ../libvendor_shared/src/*.c)
|
||||
libvendor_static_c_files := $(filter-out ../libvendor_shared/src/se_status.c ../libvendor_shared/src/hisi_mspc.c ../libvendor_shared/src/hisi_mspc_stubs.c, $(FILES))
|
||||
libvendor_static_c_files += $(wildcard ../libvendor_shared/src/driver_api/*.c)
|
||||
ifneq ($(findstring true, $(CONFIG_SE_SERVICE_32BIT)$(CONFIG_SE_SERVICE_64BIT)),)
|
||||
libvendor_static_c_files += ../libvendor_shared/src/se_status.c
|
||||
endif
|
||||
libvendor_static_c_files += $(wildcard $(TOPDIR)/vendor/common/src/*.c)
|
||||
libvendor_shared_c_files += $(wildcard $(TOPDIR)/libs/libsec_flash_client/src/*.c)
|
||||
|
||||
inc-flags += -I$(TOPDIR)/libs/libvltmm_a32/include
|
||||
inc-flags += -I$(TOPDIR)/drivers/platdrv/include
|
||||
inc-flags += -I$(TOPDIR)/vendor/common/include
|
||||
inc-flags += -I$(PLATFORM_DIR)/common/tee_config
|
||||
inc-flags += -I$(PLATFORM_DIR)/$(PLATFORM_NAME)/$(PRODUCT_NAME)/common/tee_config
|
||||
inc-flags += -I$(TOPDIR)/libs/libsec_flash_client/include
|
||||
inc-flags += -I$(TOPDIR)/sys_libs/libteeagentcommon_client/include
|
||||
inc-flags += -I$(TOPDIR)/sys_libs/libteeagentcommon_client/src
|
||||
|
||||
ifeq ($(strip $(TARGET_BUILD_VARIANT)), user)
|
||||
inc-flags += -DDEF_BUILDUSERMODE
|
||||
endif
|
||||
|
||||
ifneq ($(filter $(TARGET_BOARD_PLATFORM), baltimore), )
|
||||
libvendor_static_c_files += ../libvendor_shared/src/hisi_mspc.c
|
||||
else
|
||||
libvendor_static_c_files += ../libvendor_shared/src/hisi_mspc_stubs.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_HISI_MSPC_IPC_TEST), true)
|
||||
flags += -DCONFIG_HISI_MSPC_IPC_TEST
|
||||
endif
|
||||
|
||||
include $(TOPDIR)/mk/lib-common.mk
|
||||
include $(TOPDIR)/mk/feature-macro.mk
|
||||
@@ -1,6 +0,0 @@
|
||||
add_subdirectory(libvendor_shared)
|
||||
add_subdirectory(libvendor_static)
|
||||
if ("${TARGET_BOARD_PLATFORM}" STREQUAL "shaolingun")
|
||||
add_subdirectory(devchip_apps)
|
||||
add_subdirectory(libdevchip_api)
|
||||
endif()
|
||||
@@ -1,48 +0,0 @@
|
||||
list(REMOVE_ITEM TEE_C_FLAGS "-Werror")
|
||||
|
||||
if ("${CFG_HI_TEE_COMMON_SUPPORT}" STREQUAL "y")
|
||||
add_subdirectory(common)
|
||||
endif()
|
||||
if ("${CFG_HI_TEE_DEMO_SUPPORT}" STREQUAL "y")
|
||||
add_subdirectory(demo)
|
||||
endif()
|
||||
if ("${CFG_HI_TEE_DEMUX_SUPPORT}" STREQUAL "y")
|
||||
add_subdirectory(demux)
|
||||
endif()
|
||||
if ("${CFG_HI_TEE_HDMIRX_SUPPORT}" STREQUAL "y")
|
||||
add_subdirectory(hdmirx)
|
||||
endif()
|
||||
if ("${CFG_HI_TEE_HDMITX_SUPPORT}" STREQUAL "y")
|
||||
add_subdirectory(hdmitx)
|
||||
endif()
|
||||
if ("${CFG_HI_TEE_KEYSLOT_SUPPORT}" STREQUAL "y")
|
||||
add_subdirectory(keyslot)
|
||||
endif()
|
||||
if ("${CFG_HI_TEE_KLAD_SUPPORT}" STREQUAL "y")
|
||||
add_subdirectory(klad)
|
||||
endif()
|
||||
if ("${CFG_HI_TEE_NPU_TEST_SUPPORT}" STREQUAL "y")
|
||||
add_subdirectory(npu_test)
|
||||
endif()
|
||||
if ("${CFG_HI_TEE_OTP_SUPPORT}" STREQUAL "y")
|
||||
add_subdirectory(otp)
|
||||
endif()
|
||||
if ("${CFG_HI_TEE_PVR_SUPPORT}" STREQUAL "y")
|
||||
add_subdirectory(pvr)
|
||||
endif()
|
||||
if ("${CFG_HI_TEE_SMMU_SUPPORT}" STREQUAL "y")
|
||||
add_subdirectory(smmu)
|
||||
endif()
|
||||
if ("${CFG_HI_TEE_SSM_SUPPORT}" STREQUAL "y")
|
||||
add_subdirectory(ssm)
|
||||
endif()
|
||||
if ("${CFG_HI_TEE_SSM_TEST_SUPPORT}" STREQUAL "y")
|
||||
add_subdirectory(ssm_test)
|
||||
add_subdirectory(ssm_test_2)
|
||||
endif()
|
||||
if ("${CFG_HI_TEE_TEST_CIPHER_SUPPORT}" STREQUAL "y")
|
||||
add_subdirectory(test_cipher)
|
||||
endif()
|
||||
if ("${CFG_HI_TEE_VFMW_SUPPORT}" STREQUAL "y")
|
||||
add_subdirectory(vfmw)
|
||||
endif()
|
||||
@@ -1,142 +0,0 @@
|
||||
|
||||
ifeq ($(CFG_HI_TEE_EXPORT_FLAG),)
|
||||
TEE_DIR ?= $(shell cd $(CURDIR)/.. && /bin/pwd)
|
||||
#include $(TEE_DIR)/secureos/itrustee/build/base.mk
|
||||
endif
|
||||
|
||||
KEYMASTER_TA_DIR := $(shell ([ -d $(SDK_DIR)/../component/ta/keymaster ] && echo ../../../../component/ta/keymaster) || \
|
||||
([ -d $(SDK_DIR)/../modules/ta/keymaster ] && echo ../../../../modules/ta/keymaster) || \
|
||||
([ -d $(SDK_DIR)/../component/drm/ta/keymaster ] && echo ../../../../component/drm/ta/keymaster) || \
|
||||
([ -d $(SDK_DIR)/../hidolphin/component/ta/keymaster ] && echo ../../../../hidolphin/component/ta/keymaster) || \
|
||||
([ -d keymaster ] && echo 'keymaster') || \
|
||||
echo '')
|
||||
$(info KEYMASTER_TA_DIR = $(KEYMASTER_TA_DIR))
|
||||
GATEKEEPER_TA_DIR := $(shell ([ -d $(SDK_DIR)/../component/ta/gatekeeper ] && echo ../../../../component/ta/gatekeeper) || \
|
||||
([ -d $(SDK_DIR)/../modules/ta/gatekeeper ] && echo ../../../../modules/ta/gatekeeper) || \
|
||||
([ -d $(SDK_DIR)/../component/drm/ta/gatekeeper ] && echo ../../../../component/drm/ta/gatekeeper) || \
|
||||
([ -d $(SDK_DIR)/../hidolphin/component/ta/gatekeeper ] && echo ../../../../hidolphin/component/ta/gatekeeper) || \
|
||||
([ -d gatekeeper ] && echo 'gatekeeper') || \
|
||||
echo '')
|
||||
$(info GATEKEEPER_TA_DIR = $(GATEKEEPER_TA_DIR))
|
||||
CDRM_KEY_TA_DIR := $(shell ([ -d $(SDK_DIR)/../component/ta/cdrm_key ] && echo ../../../../component/ta/cdrm_key) || \
|
||||
([ -d $(SDK_DIR)/../modules/ta/cdrm_key ] && echo ../../../../modules/ta/cdrm_key) || \
|
||||
([ -d $(SDK_DIR)/../component/drm/ta/cdrm_key ] && echo ../../../../component/drm/ta/cdrm_key) || \
|
||||
([ -d $(SDK_DIR)/../hidolphin/component/ta/cdrm_key ] && echo ../../../../hidolphin/component/ta/cdrm_key) || \
|
||||
([ -d cdrm_key ] && echo 'cdrm_key') || \
|
||||
echo '')
|
||||
$(info CDRM_KEY_TA_DIR = $(CDRM_KEY_TA_DIR))
|
||||
devchip_tadirs :=
|
||||
devchip_tas :=
|
||||
HI_TEE_API_DIR := $(TOPDIR)/vendor/huanglong/libdevchip_api
|
||||
HI_TEE_TA_DIR := $(TOPDIR)/vendor/huanglong/devchip_apps
|
||||
|
||||
ifeq ($(strip $(CFG_HI_TEE_DEMO_SUPPORT)), y)
|
||||
devchip_tadirs += demo
|
||||
devchip_tas += task_hisi_demo.elf
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(CFG_HI_TEE_KEYMASTER_SUPPORT)), y)
|
||||
ifneq ($(KEYMASTER_TA_DIR), )
|
||||
devchip_tadirs += $(KEYMASTER_TA_DIR)
|
||||
devchip_tas += task_keymaster.elf
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(CFG_HI_TEE_GATEKEEPER_SUPPORT)), y)
|
||||
ifneq ($(GATEKEEPER_TA_DIR), )
|
||||
devchip_tadirs += $(GATEKEEPER_TA_DIR)
|
||||
devchip_tas += task_gatekeeper.elf
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(CFG_HI_TEE_CHINADRM_KEY_SUPPORT)), y)
|
||||
ifneq ($(CDRM_KEY_TA_DIR), )
|
||||
devchip_tadirs += $(CDRM_KEY_TA_DIR)
|
||||
devchip_tas += task_cdrm_key.elf
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(CFG_HI_TEE_SSM_TEST_SUPPORT)), y)
|
||||
devchip_tadirs += ssm_test
|
||||
devchip_tas += task_hisi_ssm_test.elf
|
||||
|
||||
devchip_tadirs += ssm_test_2
|
||||
devchip_tas += task_hisi_ssm_test_2.elf
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(CFG_HI_TEE_SSM_SUPPORT)), y)
|
||||
devchip_tadirs += ssm
|
||||
devchip_tas += task_hisi_ssm.elf
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(CFG_HI_TEE_SMMU_SUPPORT)), y)
|
||||
devchip_tadirs += smmu
|
||||
devchip_tas += smmu_task.elf
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(CFG_HI_TEE_COMMON_SUPPORT)), y)
|
||||
devchip_tadirs += common
|
||||
devchip_tas += task_hisi_common.elf
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(CFG_HI_TEE_OTP_SUPPORT)), y)
|
||||
devchip_tadirs += otp
|
||||
devchip_tas += task_hisi_otp.elf
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(CFG_HI_TEE_KLAD_SUPPORT)), y)
|
||||
devchip_tadirs += klad
|
||||
devchip_tas += task_hisi_klad.elf
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(CFG_HI_TEE_HDMITX_SUPPORT)), y)
|
||||
devchip_tadirs += hdmitx
|
||||
devchip_tas += task_hisi_hdmitx.elf
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(CFG_HI_TEE_KEYSLOT_SUPPORT)), y)
|
||||
devchip_tadirs += keyslot
|
||||
devchip_tas += task_hisi_keyslot.elf
|
||||
endif
|
||||
|
||||
|
||||
ifeq ($(strip $(CFG_HI_TEE_DEMUX_SUPPORT)), y)
|
||||
devchip_tadirs += demux
|
||||
devchip_tas += task_hisi_dmx.elf
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(CFG_HI_TEE_CIPHER_SUPPORT)), y)
|
||||
#devchip_tadirs += cipher
|
||||
devchip_tas +=
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(CFG_HI_TEE_TEST_CIPHER_SUPPORT)), y)
|
||||
devchip_tadirs += test_cipher
|
||||
devchip_tas += task_hisi_test_cipher.elf
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(CFG_HI_TEE_VFMW_SUPPORT)), y)
|
||||
devchip_tadirs += vfmw
|
||||
devchip_tas += task_hisi_vfmw.elf
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(CFG_HI_TEE_PVR_SUPPORT)), y)
|
||||
devchip_tadirs += pvr
|
||||
devchip_tas += task_hisi_pvr.elf
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(CFG_HI_TEE_HDMIRX_SUPPORT)), y)
|
||||
devchip_tadirs += hdmirx
|
||||
devchip_tas += task_hisi_hdmirx.elf
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(CFG_HI_TEE_NPU_TEST_SUPPORT)), y)
|
||||
devchip_tadirs += npu_test
|
||||
devchip_tas += task_hisi_npu_test.elf
|
||||
endif
|
||||
|
||||
#ifeq ($(strip $()), y)
|
||||
#devchip_tadirs +=
|
||||
#devchip_tas +=
|
||||
#endif
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
include(apps_ta_common)
|
||||
include(apps_svc_common)
|
||||
include(apps_sub_cfg)
|
||||
include(apps_subcommon)
|
||||
|
||||
list(APPEND DEVCHIP_LIBRARIES
|
||||
devchip_api
|
||||
)
|
||||
|
||||
list(APPEND TEE_C_FLAGS
|
||||
-DTEE_PARAM_TYPE_NSSMMU_HAND_INPUT=0x9
|
||||
-DTEE_PARAM_TYPE_SECSMMU_HAND_INPUT=0xa
|
||||
-DTEE_PARAM_TYPE_PHYS_HAND_INPUT=0xb
|
||||
)
|
||||
|
||||
list(APPEND TEE_INCLUDE_PATH
|
||||
${PROJECT_SOURCE_DIR}/vendor/huanglong/devchip_apps/common
|
||||
${PROJECT_SOURCE_DIR}/libs/libplatdrv/platform/huanglong/hi3751v900/devchip_drv/include
|
||||
${PROJECT_SOURCE_DIR}/vendor/huanglong/libdevchip_api/include
|
||||
${PROJECT_SOURCE_DIR}/vendor/huanglong/libdevchip_api/common
|
||||
${PROJECT_SOURCE_DIR}/vendor/huanglong/libdevchip_api/ta_al/itrustee
|
||||
)
|
||||
|
||||
list(APPEND TEE_C_SOURCES
|
||||
hisi_common_task.c
|
||||
)
|
||||
|
||||
list(FIND PRODUCT_APPS "task_hisi_common.elf" index)
|
||||
if (${index} GREATER -1)
|
||||
set(IF_INSTALL DO_INSTALL)
|
||||
endif()
|
||||
|
||||
tee_add_executable(task_hisi_common.elf
|
||||
SOURCES
|
||||
${TEE_C_SOURCES}
|
||||
|
||||
COMPILE_TOOL
|
||||
clang
|
||||
|
||||
COMPILER_FLAGS
|
||||
${TEE_C_FLAGS}
|
||||
|
||||
COMPILER_DEFINITIONS
|
||||
${TEE_C_DEFINITIONS}
|
||||
|
||||
PRIVATE_INCLUDES
|
||||
${TEE_INCLUDE_PATH}
|
||||
|
||||
LD_FLAGS
|
||||
${TA_LDFLAGS}
|
||||
|
||||
LINKGROUP
|
||||
${DEVCHIP_LIBRARIES}
|
||||
|
||||
INSTALL_DIR
|
||||
${BOOTFS_STAGE_DIR}
|
||||
|
||||
${IF_INSTALL}
|
||||
)
|
||||
@@ -1,11 +0,0 @@
|
||||
# TARGET is common TA app
|
||||
TARGET := task_hisi_common.elf
|
||||
|
||||
c_files := $(wildcard *.c)
|
||||
|
||||
# Libraries
|
||||
LIBS :=
|
||||
|
||||
c-flags += -I$(HI_TEE_API_DIR)/common
|
||||
|
||||
include $(HI_TEE_TA_DIR)/itrustee_ta.mk
|
||||
@@ -1,92 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) Hisilicon Technologies Co., Ltd. 2019-2019. All rights reserved.
|
||||
* Description: common TA
|
||||
*/
|
||||
|
||||
#include "hi_tee_hal.h"
|
||||
#include "hi_tee_errno.h"
|
||||
#include "tee_common_utils.h"
|
||||
|
||||
#define TEEC_CMD_GET_VERSION 0
|
||||
|
||||
#define UNUSED(x) ((x) = (x))
|
||||
#define PARA_NUM 4
|
||||
|
||||
/* define the parameter check macro */
|
||||
#define CHECK_PARAM_TYPES(param_types, type0, type1, type2, type3) do { \
|
||||
if ((param_types) != TEE_PARAM_TYPES(type0, type1, type2, type3)) { \
|
||||
ta_debug("[%d]line bad parameter types!\n", __LINE__); \
|
||||
return TEE_ERROR_BAD_PARAMETERS; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
__DEFAULT TEE_Result TA_CreateEntryPoint(void)
|
||||
{
|
||||
TEE_Result ret;
|
||||
hi_char general_session_name[] = "tee_common_session";
|
||||
/* root id for all client */
|
||||
ret = AddCaller_CA_exec(general_session_name, 0);
|
||||
if (ret != TEE_SUCCESS) {
|
||||
tloge("AddCaller_CA_exec %s for root failed!\n", general_session_name);
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = TEE_SUCCESS;
|
||||
out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
__DEFAULT TEE_Result TA_OpenSessionEntryPoint(uint32_t param_types, TEE_Param params[PARA_NUM],
|
||||
hi_void **session_context)
|
||||
{
|
||||
UNUSED(param_types);
|
||||
UNUSED(params);
|
||||
UNUSED(session_context);
|
||||
return TEE_SUCCESS;
|
||||
}
|
||||
|
||||
__DEFAULT TEE_Result TA_InvokeCommandEntryPoint(hi_void *session_context, uint32_t cmd_id, uint32_t param_types,
|
||||
TEE_Param params[PARA_NUM])
|
||||
{
|
||||
TEE_Result ret;
|
||||
UNUSED(session_context);
|
||||
|
||||
switch (cmd_id) {
|
||||
case TEEC_CMD_GET_VERSION: {
|
||||
hi_void *buf = params[0].memref.buffer;
|
||||
hi_u32 buf_size = params[0].memref.size;
|
||||
hi_u32 total_size = params[1].value.a;
|
||||
|
||||
common_check_pointer(buf);
|
||||
|
||||
CHECK_PARAM_TYPES(param_types, TEE_PARAM_TYPE_MEMREF_INOUT, TEE_PARAM_TYPE_VALUE_INPUT,
|
||||
TEE_PARAM_TYPE_NONE, TEE_PARAM_TYPE_NONE);
|
||||
|
||||
ret = tee_common_get_version_info((hi_char *)buf, buf_size, total_size);
|
||||
if (ret != HI_SUCCESS) {
|
||||
ret = TEE_ERROR_GENERIC;
|
||||
} else {
|
||||
ret = TEE_SUCCESS;
|
||||
}
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
ret = TEE_ERROR_BAD_PARAMETERS;
|
||||
tloge("Invalid cmd[0x%x]!\n", cmd_id);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
__DEFAULT void TA_CloseSessionEntryPoint(hi_void* session_context)
|
||||
{
|
||||
UNUSED(session_context);
|
||||
}
|
||||
|
||||
__DEFAULT void TA_DestroyEntryPoint(void)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1,57 +0,0 @@
|
||||
include(apps_ta_common)
|
||||
include(apps_svc_common)
|
||||
include(apps_sub_cfg)
|
||||
include(apps_subcommon)
|
||||
|
||||
list(APPEND TEE_C_FLAGS
|
||||
-DAPI_LEVEL=3
|
||||
)
|
||||
|
||||
list(APPEND TEE_INCLUDE_PATH
|
||||
${PLATFORM_DIR}/common/tee_config
|
||||
${PROJECT_SOURCE_DIR}/libs/libplatdrv/platform/common/crypto
|
||||
${PLATFORM_DIR}/${PLATFORM_NAME}/${PRODUCT_NAME}/common/tee_config
|
||||
)
|
||||
|
||||
list(APPEND TEE_C_SOURCES
|
||||
src/crypto_operation.c
|
||||
src/gp_api_adapt_big_data.c
|
||||
src/gp_api_adapt_small_data.c
|
||||
src/gp_api_adapt_util.c
|
||||
src/gp_keyblob_operation.c
|
||||
src/invoke.c
|
||||
src/invoke_check.c
|
||||
src/invoke_function.c
|
||||
src/kms_key_node.c
|
||||
src/kms_tag_api.c
|
||||
)
|
||||
|
||||
list(FIND PRODUCT_APPS "kms.elf" index)
|
||||
if (${index} GREATER -1)
|
||||
set(IF_INSTALL DO_INSTALL)
|
||||
endif()
|
||||
|
||||
tee_add_executable(kms.elf
|
||||
SOURCES
|
||||
${TEE_C_SOURCES}
|
||||
|
||||
COMPILE_TOOL
|
||||
clang
|
||||
|
||||
COMPILER_FLAGS
|
||||
${TEE_C_FLAGS}
|
||||
|
||||
COMPILER_DEFINITIONS
|
||||
${TEE_C_DEFINITIONS}
|
||||
|
||||
PRIVATE_INCLUDES
|
||||
${TEE_INCLUDE_PATH}
|
||||
|
||||
LD_FLAGS
|
||||
${TA_LDFLAGS}
|
||||
|
||||
INSTALL_DIR
|
||||
${BOOTFS_STAGE_DIR}
|
||||
|
||||
${IF_INSTALL}
|
||||
)
|
||||
@@ -1,13 +0,0 @@
|
||||
# TARGET is a TA app
|
||||
TARGET := task_hisi_demo.elf
|
||||
|
||||
c_files := $(wildcard ./*.c) \
|
||||
$(wildcard ./test/*.c)
|
||||
|
||||
# Libraries
|
||||
LIBS :=
|
||||
|
||||
c-flags += -I$(HI_TEE_API_DIR)/demo/ \
|
||||
-I./test/
|
||||
|
||||
include $(HI_TEE_TA_DIR)/itrustee_ta.mk
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user