搭建步骤
本文以iTrustee SDK和rsa-demo代码为例介绍TA和CA编译环境部署,系统版本为openEuler 20.03 LTS-SP1。
获取iTrustee patch包
- 获取itrustee_client源码。
- 获取libboundscheck源码。
- 安装编译依赖。
1
yum install openssl-devel zlib-devel
- 编译itrustee_client。
- 动态库部署。
1 2
cp -rf dist/*.so /usr/lib64 ldconfig
获取iTrustee SDK开发套件

SDK中主要涉及“build”、“include”、“test”、“thirdparty”四个目录。其中:
- “build/”存放TA应用的签名工具。
- “include/”存放当前iTrustee OS支持的函数接口说明,遵循GP(Global Platform)标准接口协议。
- “test/”主要存放TA和CA应用源码。
- “thirdparty/”存放TA和CA应用使用的第三方库。
编译rsa-demo应用
- 获取 rsa-demo 示例代码。
rsa-demo 代码解压后,层级目录如下:
其中包含了TA和CA两部分代码,CA 部分需要拷贝至“itrustee_sdk/test/CA”目录下:
cp -rf rsa-demo/rsa-demo/CA/rsa-demo/ itrustee_sdk/test/CA/
TA 部分需要拷贝至“itrustee_sdk/test/TA”目录下:
cp -rf rsa-demo/rsa-demo/TA/rsa_demo/ itrustee_sdk/test/TA/
- 编译rsa-demo CA应用。
1 2
cd itrustee_sdk/test/CA/rsa-demo/cloud make
编译后,会在Makefile文件同级目录产生CA二进制文件,如图下图所示。
- 编译rsa-demo TA应用。
修改 itrsutee_sdk/test/TA/rsa_demo/rsa_ta_interface.h 头文件,添加如下内容:
#define TEE_OBJECT_STORAGE_PRIVATE 0x00000001 #define TEE_DATA_FLAG_ACCESS_READ 0x00000001 #define TEE_DATA_FLAG_ACCESS_WRITE 0x00000002 extern TEE_Result TEE_CreatePersistentObject(); extern TEE_Result TEE_OpenPersistentObject();
添加位置如图所示:
修改 itrustee_sdk/test/TA/rsa_demo/rsa_ta_interface.c 文件,删除对"tee_trusted_storage_api.h"引用:
编译TA应用1 2
cd itrustee_sdk/test/TA/rsa_demo/cloud make
编译后,会在Makefile文件同级目录产生TA应用.sec文件,文件名为每个TA应用独有的UUID。
一个标准的TA应用,除了源代码,还应当包括TA证书、签名后的config、config_cloud.ini配置文件、manifest.txt,如下图所示。其中config_cloud.ini、config、private_key.pem与TA应用签名相关,相关文件产生方式请参考调测环境TA应用开发者证书申请。manifest.txt文件描述了TA应用在TEE侧可使用资源情况,由开发者自行提供。
manifest.txt文件示例如下。
1 2 3 4 5 6 7 |
gpd.ta.appID: f68fd704-6eb1-4d14-b218-722850eb3ef0 gpd.ta.service_name: rsa-demo gpd.ta.singleInstance: true gpd.ta.multiSession: false gpd.ta.instanceKeepAlive: False gpd.ta.dataSize: 819200 gpd.ta.stackSize: 40960 |
其中:
gpd.ta.appID类型为UUID,该UUID为用户自己生成,区别其他TA应用,并与对应的CA中的UUID保持相同。gpd.ta.service_name类型为String,表示TA应用名称,最长不超过64字符。
更多manifest.txt支持字段请参见《iTrustee SDK开发者手册》。

《iTrustee SDK开发者手册》可直接向华为业务负责人获取。