From 5a067306df8383d613be207c02497285ae6676fa Mon Sep 17 00:00:00 2001 From: zhangdeyo Date: Mon, 3 Jul 2023 15:34:52 +0800 Subject: [PATCH] upgrade tee_client dev kit guide Signed-off-by: zhangdeyo --- docs/TEE_CA_guide/TEE客户端应用开发指导.md | 27 +------ docs/TEE_OS_guide/TEE-Client适配指导.md | 89 ++++------------------ docs/TEE_TA_guide/TEE标准C库支持.md | 2 +- 3 files changed, 19 insertions(+), 99 deletions(-) diff --git a/docs/TEE_CA_guide/TEE客户端应用开发指导.md b/docs/TEE_CA_guide/TEE客户端应用开发指导.md index 34a473b..db73414 100644 --- a/docs/TEE_CA_guide/TEE客户端应用开发指导.md +++ b/docs/TEE_CA_guide/TEE客户端应用开发指导.md @@ -104,35 +104,12 @@ TEE为CA提供了一组标准API来访问TA,这些API声明在“tee\_client\_

在指定的会话session里,由CA向安全服务发送命令commandID,发送的数据为operation,如果发送命令失败,输出参数returnOrigin为错误来源.

-

teek_register_shared_memory

- -

在指定的TEE环境context内注册共享内存sharedMem。

- - -

teek_allocate_shared_memory

- -

在指定的TEE环境context内申请共享内存sharedMem。

- - -

teek_release_shared_memory

- -

释放已注册成功的的或已申请成功的共享内存sharedMem。 -如果是通过teek_allocate_shared_memory方式获取的共享内存,释放时会回收这块内存; -如果是通过teek_register_shared_memory方式获取的共享内存,释放时不会回收共享内存所指向的本地内存。

- - -

teek_request_cancellation

- -

取消掉一个正在运行的open session或者是一个invoke command命令。 -此操作仅仅是发送一个cancel的消息,现版本TEEOS不支持该特性。

- - ## 开发说明 -TEE对CA的形式不做限定,在openHarmony上可以是native程序、SA服务或者hap包,开发样例可参考GP文档:TEE Client API [Specification](https://globalplatform.org/specs-library/?filter-committee=tee) v1.0 \(GPD\_SPE\_007\)。 +TEE对CA的形式不做限定,在openHarmony上可以是native程序或SA服务,开发样例可参考GP文档:TEE Client API [Specification](https://globalplatform.org/specs-library/?filter-committee=tee) v1.0 \(GPD\_SPE\_007\)。 ### 特性与约束 @@ -140,7 +117,7 @@ TEE实现的接口与GP规范相同,但是结构体及使用限制与GP规范 1. TEEC\_Context定义支持指定TA路径加载功能 - TEEC\_Context中定义了ta文件路径,在调用TEEC\_OpenSession前,将TEEC\_Context中ta\_path赋值到具体TA路径(限制/data目录下),可将该路径的TA加载到TEEOS中,如果不指定TA路径,会从默认路径(标准系统:system/bin,小型化系统:vendor/bin)下根据UUID查找对应UUID.sec文件加载到TEEOS中。 + TEEC\_Context中定义了ta文件路径,在调用TEEC\_OpenSession前,将TEEC\_Context中ta\_path赋值到具体TA路径(限制/data目录下),可将该路径的TA加载到TEEOS中,如果不指定TA路径,会从默认路径(系统组件:system/bin,芯片组件:vendor/bin)下根据UUID查找对应UUID.sec文件加载到TEEOS中。 ``` context.ta_path = (uint8_t *)"/data/58dbb3b9-4a0c-42d2-a84d-7c7ab17539fc.sec"; diff --git a/docs/TEE_OS_guide/TEE-Client适配指导.md b/docs/TEE_OS_guide/TEE-Client适配指导.md index e734e2f..9834c17 100644 --- a/docs/TEE_OS_guide/TEE-Client适配指导.md +++ b/docs/TEE_OS_guide/TEE-Client适配指导.md @@ -6,52 +6,21 @@ ## TeeClient概述 -TeeClient模块向应用提供访问TEE OS接口,让非安全侧应用可以访问TEE OS内运行的安全应用。 +TeeClient模块在标准系统使能,向应用提供访问TEE OS接口,让非安全侧应用可以访问TEE OS内运行的安全应用。 TeeClient模块可以分为如下两个部分: -- TeeClient接口层:为应用访问TEE OS内运行的安全应用提供TeeClient API。 +- TeeClient接口层:为芯片组件及系统组件服务访问TEE OS内运行的安全应用提供TeeClient API。 - TeeClient服务层: - - teecd:为TEE OS实现安全存储、时间同步等基础功能,在标准及小型系统使能。 - - tlogcat:为TEE OS实现日志输出及落盘服务,在标准及小型系统使能。 - - cadaemon:为CA访问TEE OS驱动层提供服务,仅在标准系统提供,小型系统应用可直接访问驱动层。 + - teecd:为TEE OS实现安全存储、时间同步等基础功能,支持芯片组件CA访问TEE OS通道。 + - tlogcat:为TEE OS实现日志输出及落盘服务。 + - cadaemon:为系统组件CA访问TEE OS驱动层提供服务。 -代码目录结构: - -``` -base/tee/tee_client -├── frameworks # TeeClient对外接口动态库 -│ ├── build -│ │ ├── lite -│ │ └── standard -│ ├── libteec_client -│ └── libteec_vendor -├── interfaces -│ └── libteec -└── services - ├── cadaemon # 为CA访问TEE OS驱动层提供服务,仅在标准系统提供 - │ ├── build - │ │ └── standard - │ └── src - ├── teecd # 为TEE OS实现安全存储、时间同步等基础功能,在标准及小型系统使能 - │ ├── build - │ │ ├── lite - │ │ └── standard - │ └── src - └── tlogcat # 为TEE OS实现日志输出及落盘服务,在标准及小型系统使能 - ├── build - │ ├── lite - │ └── standard - └── src -``` - ## TeeClient使能实例 -在标准系统及小型系统使能tee\_client,在相应配置json文件中增加tee\_client部件即可: - -**标准系统**: +在标准系统使能tee\_client,在相应配置json文件中增加tee\_client部件即可: 例如在productdefine/common/products/Hi3516DV300.json中增加内容 @@ -59,58 +28,37 @@ base/tee/tee_client "tee:tee_client": {}, ``` -**小型系统**: - -例如在vendor/hisilicon/hispark\_taurus/config.json中增加内容 - -``` -{ - "subsystem": "tee", - "components": [ - { "component": "tee_client", "features":[] } - ] -}, -``` - ## 可配置选项 - TA默认加载路径 - TEE支持从该路径下查找TA文件并加载,在标准系统及小型系统分别配置为system/bin及vendor/bin。 + TEE支持从该路径下查找TA文件并加载,芯片组件和系统组件CA加载TA默认路径分别配置为system/bin及vendor/bin。 配置文件: - 标准系统://base/tee/tee\_client/frameworks/include/standard/tee\_default\_path.h + 芯片组件://base/tee/tee\_client/frameworks/include/standard/teec\_vendor/tee\_default\_path.h - 小型系统://base/tee/tee\_client/frameworks/include/lite/tee\_default\_path.h + 系统组件://base/tee/tee\_client/frameworks/include/standard/teec\_system/tee\_default\_path.h - 驱动默认加载路径: - TEE支持动态加载驱动,teecd启动时会从默认路径下读取驱动文件加载进TEE。在标准系统及小型系统分别配置为/system/bin/tee\_dynamic\_drv及vendor/bin/ tee\_dynamic\_drv。 + TEE支持动态加载驱动,teecd启动时会从默认路径下读取驱动文件加载进TEE。默认配置为vendor/bin/ tee\_dynamic\_drv。 - 配置文件: - - 标准系统://base/tee/tee\_client/services/teecd/include/standard/ dynamic\_drv\_dir.h - - 小型系统://base/tee/tee\_client/services/teecd/include/lite/ dynamic\_drv\_dir.h + 配置文件://base/tee/tee\_client/services/teecd/include/standard/ dynamic\_drv\_dir.h - 安全存储路径配置: - TEE支持安全存储功能,安全存储文件放在该路径下,在标准系统及小型系统分别配置为/data/vendor及/storage/data/。 + TEE支持安全存储功能,安全存储文件放在该路径下,配置为/data/vendor。 - 配置文件: - - 标准系统://base/tee/tee\_client/services/teecd/include/standard/fs\_work\_agent\_define.h - - 小型系统://base/tee/tee\_client/services/teecd/include/lite/fs\_work\_agent\_define.h + 配置文件://base/tee/tee\_client/services/teecd/include/standard/fs\_work\_agent\_define.h - 日志服务配置: tlogcat输出tee日志并存盘的位置有两种: - - 默认输出至系统hilog日志文件,如小型系统上是storage/data/log/hilog\*.txt文件; + - 默认输出至系统hilog日志文件,如data/log/hilog\*.txt文件; - - 可配置输出至私有日志文件, 如小型系统上是storage/data/log/tee路径。 + - 可配置输出至私有日志文件, 如data/log/tee路径。 tlogcat支持的配置功能有: @@ -124,10 +72,5 @@ base/tee/tee_client 定义编译宏CONFIG\_TLOGCAT\_TAG可使能hilog日志中ta日志的tag拆分功能,对应的tag为teeos\_ + "service name",否则ta的REE侧hilog日志tag都是teeos。 - 配置文件: - - 标准系统://base/tee/tee\_client/services/tlogcat/build/standard/BUILD.gn - - 小型系统://base/tee/tee\_client/services/tlogcat/build/lite/BUILD.gn - + 配置文件://base/tee/tee\_client/services/tlogcat/build/standard/BUILD.gn diff --git a/docs/TEE_TA_guide/TEE标准C库支持.md b/docs/TEE_TA_guide/TEE标准C库支持.md index 00f4851..a3dd684 100644 --- a/docs/TEE_TA_guide/TEE标准C库支持.md +++ b/docs/TEE_TA_guide/TEE标准C库支持.md @@ -2,7 +2,7 @@ 支持大多数的POSIX接口,具体支持情况请参考:POSIX:[https://mirror.math.princeton.edu/pub/oldlinux/download/c953.pdf](https://mirror.math.princeton.edu/pub/oldlinux/download/c953.pdf) -支持绝大多数的libc接口。目前使用的musl-1.2.0/libc库请参考下表。 +支持绝大多数的libc接口。使用musl/libc库,接口支持请参考下表。 >![](public_sys-resources/icon-note.gif) **说明:** >- 不支持文件系统、控制台。