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

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

2. 下载配套iTrustee SDK，里面包含QCA lib、QTA源码。

```
git clone -b master https://gitee.com/openeuler/itrustee_sdk.git
```


3. 下载并集成边界检查函数库。

```
git clone https://gitee.com/openeuler/libboundscheck.git
mv libboundscheck/ itrustee_sdk/thirdparty/open_source/
```


4. 编译、部署QCA lib。

  a. 编译QCA lib。

```
cd itrustee_sdk/test/CA/libqca
make
TARGET_HOST_QCA=y
```


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

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

```
cp output/libqca.so
/usr/lib64
```


qca-report可通过make TARGET_CONTAINER_QCA=y编译产生。


5. 编译，部署QTA。

  a. 打开在QTA源码。

```
vim itrustee_sdk/test/TA/qta/src/tee_qta.c
```


  b. 按“i”键进入编辑模式，在TA_CreateEntryPoint函数中/* TA auth CA */注释下添加如下内容，表明只有以/vendor/bin/qcaserver启动的CA才可以调用此TA应用。

```
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”目录下。

```
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二进制部署到以下路径：

    “itrustee_sdk/build/signtools/signed_config/config”

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

  f. 安装iTrustee SDK TA签名工具依赖，编译QTA。

```
pip3 install pycryptodomex
cd itrustee_sdk/test/TA/qta
make
TARGET_HOST_QTA=true
```


  g. 部署QTA，若QCA lib中未指定QTA的路径，默认存放到 /var/itrustee/ta/下；否则需存放到指定的路径。

```
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服务器的配置文件中需要用到此值。
- QTA-report可通过make TARGET_QTA_REPORT=true生成，QTA-report也为特权TA，限定UUID为4f84c0e0-4c3f-422f-97dc-14bfa2314ad1，
