mirror of
https://github.com/openharmony/tee_tee_dev_kit.git
synced 2026-08-25 09:09:44 -04:00
@@ -1,12 +1,8 @@
|
||||
## 开发CA
|
||||
|
||||
|
||||
|
||||
## 开发TA
|
||||
|
||||
### TA安装包
|
||||
|
||||
TA安装包不需要跟OpenTrustee镜像打包到一起,可以把TA安装包文件放到到非安全侧文件系统下。在TA被访问时,由TEE Client将TA安装包发送到OpenTrustee系统中加载运行。
|
||||
TA安装包不需要跟OpenTrustee镜像打包到一起,可以把TA安装包文件放到非安全侧文件系统下。在TA被访问时,由TEE Client将TA安装包发送到OpenTrustee系统中加载运行。
|
||||
|
||||
由于TA安装包放在非安全侧文件系统中,需要对TA安装包做签名,保证安装包的完整性。
|
||||
|
||||
@@ -34,9 +30,9 @@ TA安装包是以“.sec”为后缀名的包文件,文件格式如下:包
|
||||
|
||||
TA签名:由于TA安装包放在非安全侧文件系统中,需要对TA安装包做签名,确保加载到OpenTrutee中的TA安装包没有被篡改。OpenTrustee提供的SDK开发套件中,包含了TA的签名工具,支持对TA安装包一键签名。需要在OpenTrustee SDK开发套件中预置TA签名的私钥。
|
||||
|
||||
TA验签:在TA安装包加载到OpenTrustee系统中时,由OpenTrustee TA管理框架对TA安装包做签名验证,验证通过之后才允许该TA加载运行。需要在OpenTrustee系统中预置TA验签的公钥。
|
||||
TA验签:在TA安装包加载到OpenTrustee操作系统中时,由OpenTrustee TA管理框架对TA安装包做签名验证,验证通过之后才允许该TA加载运行。需要在OpenTrustee操作系统中预置TA验签的公钥。
|
||||
|
||||
**⚠**为了方便社区开发者调试,社区的OpenTrustee SDK开发套件已经预置了TA签名私钥,OpenTrustee系统中预置了验签的公钥。开发者在OpenTrustee商用版本中应自行替换该签名私钥和验签公钥。
|
||||
**⚠**为了方便社区开发者调试,社区的OpenTrustee SDK开发套件已经预置了TA签名私钥,OpenTrustee操作系统中预置了验签的公钥。开发者在OpenTrustee商用版本中应自行替换该签名私钥和验签公钥。
|
||||
|
||||
### SDK开发套件
|
||||
|
||||
@@ -46,25 +42,26 @@ OpenTrustee提供了SDK开发套件支持独立开发TA,该开发套件集成
|
||||
|
||||
```
|
||||
├── build
|
||||
│ ├── config_tee_private_sample.ini # sec签名和perm_config签名的python脚本的ini配置文件,需要厂商进行配置
|
||||
│ ├── mk # make编译框架
|
||||
│ ├── pack-TA # 提供sec签名能力的shell脚本
|
||||
│ └── tools # 包含sec文件链接的ld文件(32位和64位)、sec文件二进制检查的shell脚本
|
||||
│ ├── ld # 生成TA ELF文件的链接脚本
|
||||
│ ├── mk # TA make编译框架
|
||||
│ ├── signkey # TA签名用的私钥
|
||||
│ └── tools # 生成TA安装包并对TA签名的脚本
|
||||
├── include
|
||||
│ └── TA # 给TA提供的TEE头文件
|
||||
├── src
|
||||
│ └── TA # 放置TA源码
|
||||
└── sample # TA示例代码
|
||||
├── thirdparty
|
||||
│ └── open_source
|
||||
│ ├── import_open_source_header.sh # 导入TA编译依赖的musl头文件和安全函数库头文件
|
||||
├── sample
|
||||
│ ├── CA # CA示例代码
|
||||
│ └── TA # TA示例代码
|
||||
│ └── import_open_source_header.sh # 导入TA编译依赖的musl头文件和安全函数库头文件
|
||||
└── CHANGELOG # SDK包版本发布记录
|
||||
├── README.md # SDK包的英文说明文件
|
||||
├── README_zh.md # SDK包的中文说明文件
|
||||
├── README.md
|
||||
├── README_zh.md
|
||||
```
|
||||
|
||||
- 开发语言:C语言
|
||||
- 开发环境:linux操作系统
|
||||
OpenTrustee SDK套件的下载地址:https://gitee.com/openharmony-sig/tee_tee_dev_kit
|
||||
|
||||
#### 开发套件准备
|
||||
|
||||
@@ -72,32 +69,43 @@ OpenTrustee提供了SDK开发套件支持独立开发TA,该开发套件集成
|
||||
|
||||
##### 配置编译工具链
|
||||
|
||||
编译工具链获取路径?也可以用OH docker镜像
|
||||
|
||||
export PATH=/home/peter/code/openharmony/prebuilts/clang/ohos/linux-x86_64/15.0.4/llvm/bin:$PATH
|
||||
OpenTrustee使用的编译工具链为llvm,与OpenHarmony一致。开发者需要先下载OpenHarmony编译工具链,并声明该编译工具链的路径。
|
||||
可通过如下命令声明编译工具链路径:
|
||||
export PATH=/home/code/openharmony/prebuilts/clang/ohos/linux-x86_64/15.0.4/llvm/bin:$PATH
|
||||
|
||||
##### 导入第三方头文件
|
||||
|
||||
执行sdk/thirdparty/open_source/import_open_source_header.sh,将TA编译依赖的musl头文件和安全函数库头文件,从OpenHarmony的thirdparty
|
||||
OpenTrustee集成了musl库和安全函数库,TA可以使用这些库。OpenTrustee SDK并没有默认包含musl库和安全函数库的头文件,但是提供了导入的脚本。
|
||||
开发者需要先下载musl库和安全函数库:
|
||||
https://gitee.com/openharmony/third_party_musl
|
||||
|
||||
##### 替换签名密钥
|
||||
https://gitee.com/openharmony/third_party_bounds_checking_function
|
||||
|
||||
然后执行tee_dev_kit/sdk/thirdparty/open_source/import_open_source_header.sh,将musl头文件和安全函数库头文件从源码目录导入到OpenTrustee SDK中。
|
||||
|
||||
##### 替换TA签名和验签密钥
|
||||
OpenTrustee SDK中预置了对TA文件进行签名的私钥,该预置私钥只能用来调试,在商用版本中,开发者需要自行替换该私钥。该私钥路径:
|
||||
tee_dev_kit/sdk/build/signkey/ta_sign_priv_key.pem。同时提供了tee_dev_kit/sdk/build/signkey/ta_sign_algo_config.ini脚本,可以用来对签名算法
|
||||
进行配置。默认的签名算法是RSA,密钥长度4096bit。
|
||||
|
||||
##### 安装python
|
||||
如果开发者替换了OpenTrustee SDK中的签名私钥,需要对应替换OpenTrustee操作系统中的验签公钥,验签公钥的路径:tee_os_framework/lib/syslib/libelf_verify_key/src/common/ta_verify_key.c。
|
||||
|
||||
SDK中用到了python脚本来完成TA的属性配置文件解析、对TA文件进行签名打包等操作,因此需要在开发环境上安装python相关的功能。可能需要root权限。
|
||||
##### 安装python工具
|
||||
|
||||
1、安装python
|
||||
OpenTrustee SDK中用到了python脚本来完成TA的属性配置文件解析、对TA文件进行签名等操作,因此需要在开发环境上安装python工具。
|
||||
|
||||
2、安装python相关的库,
|
||||
1、安装python3及以上版本
|
||||
|
||||
2、安装python相关的库,如:
|
||||
|
||||
pip install pycryptodome
|
||||
|
||||
pip install defusedxml
|
||||
如果在编译过程中提示缺少其他python库,需要一并安装
|
||||
|
||||
### TA开发步骤
|
||||
|
||||
##### TA代码编写
|
||||
##### TA属性配置
|
||||
|
||||
### TA API
|
||||
Reference in New Issue
Block a user