upgrade tee_client dev kit guide

Signed-off-by: zhangdeyo <zhangdeyao@huawei.com>
This commit is contained in:
zhangdeyo
2023-07-03 15:34:52 +08:00
parent bf86e1ef7f
commit 5a067306df
3 changed files with 19 additions and 99 deletions
@@ -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";
+16 -73
View File
@@ -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
+1 -1
View File
@@ -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) **说明:**
>- 不支持文件系统、控制台。