mirror of
https://github.com/openharmony/tee_tee_dev_kit.git
synced 2026-08-24 19:13:10 -04:00
upgrade tee_client dev kit guide
Signed-off-by: zhangdeyo <zhangdeyao@huawei.com>
This commit is contained in:
@@ -104,35 +104,12 @@ TEE为CA提供了一组标准API来访问TA,这些API声明在“tee\_client\_
|
||||
<td class="cellrowborder" valign="top" width="64%" headers="mcps1.1.3.1.2 "><p>在指定的会话session里,由CA向安全服务发送命令commandID,发送的数据为operation,如果发送命令失败,输出参数returnOrigin为错误来源.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td class="cellrowborder" valign="top" width="36.05%" headers="mcps1.1.3.1.1 "><p>teek_register_shared_memory</p>
|
||||
</td>
|
||||
<td class="cellrowborder" valign="top" width="64%" headers="mcps1.1.3.1.2 "><p>在指定的TEE环境context内注册共享内存sharedMem。</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td class="cellrowborder" valign="top" width="36.05%" headers="mcps1.1.3.1.1 "><p>teek_allocate_shared_memory</p>
|
||||
</td>
|
||||
<td class="cellrowborder" valign="top" width="64%" headers="mcps1.1.3.1.2 "><p>在指定的TEE环境context内申请共享内存sharedMem。</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td class="cellrowborder" valign="top" width="36.05%" headers="mcps1.1.3.1.1 "><p>teek_release_shared_memory</p>
|
||||
</td>
|
||||
<td class="cellrowborder" valign="top" width="64%" headers="mcps1.1.3.1.2 "><p>释放已注册成功的的或已申请成功的共享内存sharedMem。
|
||||
如果是通过teek_allocate_shared_memory方式获取的共享内存,释放时会回收这块内存;
|
||||
如果是通过teek_register_shared_memory方式获取的共享内存,释放时不会回收共享内存所指向的本地内存。</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td class="cellrowborder" valign="top" width="36.05%" headers="mcps1.1.3.1.1 "><p>teek_request_cancellation</p>
|
||||
</td>
|
||||
<td class="cellrowborder" valign="top" width="64%" headers="mcps1.1.3.1.2 "><p>取消掉一个正在运行的open session或者是一个invoke command命令。
|
||||
此操作仅仅是发送一个cancel的消息,现版本TEEOS不支持该特性。</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
## 开发说明<a name="section1249761325219"></a>
|
||||
|
||||
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\)。
|
||||
|
||||
### 特性与约束<a name="section139361816527"></a>
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -6,52 +6,21 @@
|
||||
|
||||
## TeeClient概述<a name="section1670413315410"></a>
|
||||
|
||||
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使能实例<a name="section0405457154914"></a>
|
||||
|
||||
在标准系统及小型系统使能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":[] }
|
||||
]
|
||||
},
|
||||
```
|
||||
|
||||
## 可配置选项<a name="section15305122712509"></a>
|
||||
|
||||
- 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
|
||||
|
||||
|
||||
@@ -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库,接口支持请参考下表。
|
||||
|
||||
> **说明:**
|
||||
>- 不支持文件系统、控制台。
|
||||
|
||||
Reference in New Issue
Block a user