---
title: 编译部署QCA lib和QTA
description: "1. 编译、部署libteec.so。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2400/confidt/kunpengtrustzone_20_0027.html
sourcePath: /source/zh/kunpengboostkithistory/2400/confidt/kunpengtrustzone_20_0027.html
indexId: 15f7c20e287b9ddd42c2e4ff647817825bbca997deed7995188773fbcd6aa15476
---
# 编译部署QCA lib和QTA

1. 编译、部署libteec.so。
  可参考获取iTrustee Patch包获取、编译itrustee_client，并将libteec.so部署在“/usr/lib64”目录，并确认路径“/usr/lib64”已添加至系统动态库默认搜索路径。

2. 下载配套iTrustee SDK，里面包含QCA lib、QTA源码。
  1 git clone -b master https://gitee.com/openeuler/itrustee_sdk.git

3. 下载并集成边界检查函数库。
  1 2 git clone https://gitee.com/openeuler/libboundscheck.git mv libboundscheck/ itrustee_sdk/thirdparty/open_source/

4. 编译、部署QCA lib。

  a. 编译QCA lib。
    1 2 cd itrustee_sdk/test/CA/libqca make

    编译成功后，会在“output”生成libqca.so动态库。

  b. 部署QCA lib，需将libqca.so部署到系统动态库默认搜索路径中，例如“/usr/lib64”。
    1 cp output/libqca.so /usr/lib64

5. 编译，部署QTA。

  a. 打开在QTA源码。
    1 vim itrustee_sdk/test/TA/qta/src/tee_qta.c

  b. 按“i”键进入编辑模式，在TA_CreateEntryPoint函数中/* TA auth CA */注释下添加如下内容，表明只有以/vendor/bin/qcaserver启动的CA才可以调用此TA应用。
    1 2 3 ret = addcaller_ca_exec("/vendor/bin/qcaserver", "root"); if (ret != TEE_SUCCESS) return ret;

  c. 按“Esc”键退出编辑模式，输入:wq!并按“Enter”键保存退出文件。
  d. QTA依赖cJSON，需下载cJSON源码，并放置到“itrustee_sdk/test/TA/qta/src”目录下。
    1 2 3 wget https://github.com/DaveGamble/cJSON/archive/refs/tags/v1.7.15.tar.gz tar xvf v1.7.15.tar.gz mv cJSON-1.7.15/ itrustee_sdk/test/TA/qta/src/cJSON

  e. QTA同普通TA一样，需先获取华为颁发的TA开发者证书，请参考    调测环境TA应用开发者证书申请
。
    申请完成并获取证书后，需将QTA的TA私钥、config二进制部署到以下路径，并按申请qta证书时配置的configs.xml资源文件修改manifest/manifest.txt。

    “itrustee_sdk/build/signtools/signed_config/config”

    “itrustee_sdk/build/signtools/TA_cert/private_key.pem”

  f. 安装iTrustee SDK TA签名工具依赖，编译QTA。
    1 2 3 pip3 install pycryptodomex cd itrustee_sdk/test/TA/qta make

  g. 部署QTA，若QCA lib中未指定QTA的路径，默认存放到“/var/itrustee/ta/”下；否则需存放到指定的路径。
    1 cp e08f7eca-e875-440e-9ab0-5f381136c600.sec /var/itrustee/ta/

- QTA作为远程证明的特权TA，限定QTA的uuid为e08f7eca-e875-440e-9ab0-5f381136c600，QTA的service_name可予以替换。
- QTA编译完毕后，在当前目录“hash_e08f7eca-e875-440e-9ab0-5f381136c600.txt”中可以查看QTA的基准度量值，在后续AS服务器的配置文件中需要用到此值。
