搭建步骤
本文以iTrustee SDK中itrustee_sdk-1.0版本和rsa-demo代码为例介绍TA和CA编译环境部署,操作系统版本为openEuler 20.03 LTS SP1。
获取iTrustee SDK开发套件
- 获取iTrustee SDK开发套件。
下载地址:https://gitee.com/openeuler/itrustee_sdk/tree/itrustee_sdk-1.0/
代码分支:itrustee_sdk-1.0
获取的SDK文件目录结构如下图所示。
SDK中主要涉及“build”、“include”、“test”、“thirdparty”四个目录。其中:
- “build/”存放TA应用的签名工具。
- “include/”存放当前iTrustee OS支持的函数接口说明,包含GP(Global Platform)标准接口和部分华为扩展接口。
- “test/”主要存放TA和CA应用源码。
- “thirdparty/”存放TA和CA应用使用的第三方库。
- 获取libboundscheck边界检查函数库。
下载地址:https://gitee.com/openeuler/libboundscheck
代码分支:master
将下载的libboundscheck文件夹移动到“itrustee_sdk/thirdparty/open_source/”目录下,如下图所示。
编译rsa-demo应用
- 编译rsa-demo CA应用。
1 2
cd itrustee_sdk/test/CA/rsa_demo/cloud make
编译后,会在Makefile文件同级目录产生CA二进制文件,如下图所示。
- 编译rsa-demo TA应用。
- 向华为业务负责人申请获取rsa_demo TA应用配套编译材料,包括配套私钥、华为签发的config二进制。具体文件如下图所示。
- 将编译材料拷贝至iTrustee SDK中rsa_demo TA应用指定目录。
1 2
cp rsa_demo/signed_config/config itrustee_sdk/test/TA/rsa_demo/cloud/signed_config/ cp rsa_demo/TA_cert/private_key.pem itrustee_sdk/test/TA/rsa_demo/cloud/TA_cert/
- 根据申请TA证书时配置的资源文件configs.xml修改manifest.txt,两个配置文件中相同字段的值需要保持一致,否则TA将无法成功加载。详细配置参考配置manifest.txt文件。
- 编译rsa_demo TA应用。
1 2
cd itrustee_sdk/test/TA/rsa_demo/cloud make
编译后,会在Makefile文件同级目录产生TA应用.sec文件,文件名为每个TA应用独有的UUID。
配置manifest.txt文件
一个标准的TA应用,除了源代码,还应当包括TA私钥、签名后的config、config_cloud.ini配置文件、manifest.txt,如下图所示。
- TA开发者证书:包括config二进制和private_key.pem私钥,私钥用于编译TA时签名,config用于加载TA时验签。申请方式请参见调测环境TA应用开发者证书申请。
- TA签名配置文件:config_cloud.ini,用于配置签名TA应用时的签名算法,签名所需文件路径等。模板文件位于“itrustee_sdk/build/signtools/config_cloud.ini”。这些配置影响TA应用的签名和验签,不可随意更改;可自由配置的字段主要有:
- secSignKey:private_key.pem私钥路径,用于对TA应用签名。
- configPath:config二进制路径,用于加载TA时验签。
若使用相对路径,则上述两个路径应填写基于“itrustee_sdk/build/signtools/signtool_v3.py”的相对路径。
- TA资源配置文件:manifest.txt,用于限制TA应用在TEE内可使用的资源,需与申请TA证书时configs.xml里的配置保持一致,manifest.txt文件示例如下:
1 2 3 4 5 6 7 8
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: 67928064 gpd.ta.stackSize: 40960 gpd.ta.mem_page_align: false
其中:
- gpd.ta.appID类型为UUID,该UUID为用户自己生成,区别其他TA应用,并与对应的CA中的UUID保持相同。
- gpd.ta.service_name类型为String,表示TA应用名称,最长不超过27字节。
- gpd.ta.dataSize类型为Integer,表示TA应用堆空间大小,单位在“mem_page_align”为“false”时为1字节,为“true”时为4096字节。
- gpd.ta.stackSize类型为Integer,表示TA应用栈空间大小,单位在“mem_page_align”为“false”时为1字节,为“true”时为4096字节。
更多详细配置请参见《iTrustee SDK 开发者手册》。
《iTrustee SDK 开发者手册》需向华为业务负责人申请获取。
父主题: 搭建TA和CA应用开发环境