鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

搭建步骤

本文以iTrustee SDK和rsa-demo代码为例介绍TA和CA编译环境部署,系统版本为openEuler 20.03 LTS-SP1。

获取iTrustee patch包

  1. 获取itrustee_client源码。

    下载地址:https://gitee.com/openeuler/itrustee_client

  2. 获取libboundscheck源码。

    下载地址:https://gitee.com/openeuler/libboundscheck

  3. 安装编译依赖。
    1
    yum install openssl-devel zlib-devel
    
  4. 编译itrustee_client。
    1. 将libboundscheck源码放置在itrustee_client/目录下,并修改文件夹名为libboundscheck。层级目录如下图所示。

    2. 编译。
      1
      cd itrustee_client && make
      

      编译成功后,会在itrustee_client/目录下生成dist目录,存放生成的可执行文件和动态库。

  5. 动态库部署。
    1
    2
    cp -rf dist/*.so /usr/lib64
    ldconfig
    

获取iTrustee SDK开发套件

  1. 获取iTrustee SDK开发套件。

    下载地址: https://gitee.com/openeuler/itrustee_sdk

  2. 解压iTrustee SDK开发套件,目录结构如下图所示。

SDK中主要涉及“build”“include”“test”“thirdparty”四个目录。其中:

  • “build/”存放TA应用的签名工具。
  • “include/”存放当前iTrustee OS支持的函数接口说明,遵循GP(Global Platform)标准接口协议。
  • “test/”主要存放TA和CA应用源码。
  • “thirdparty/”存放TA和CA应用使用的第三方库。

编译rsa-demo应用

  1. 获取 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/
  2. 编译rsa-demo CA应用。
    1
    2
    cd itrustee_sdk/test/CA/rsa-demo/cloud
    make
    

    编译后,会在Makefile文件同级目录产生CA二进制文件,如图下图所示。

  3. 编译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开发者手册》可直接向华为业务负责人获取。