---
title: 编译远程证明SDK
description: "1. 安装编译依赖。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/250rc2/confidt/kunpengtee_16_0012.html
sourcePath: /source/zh/kunpengboostkithistory/250rc2/confidt/kunpengtee_16_0012.html
indexId: 02e978fbcc5b8edfa7667387498b3e0f488aa40b1129e3821a58ddff7ce1ee0f72
---
# 编译远程证明SDK

#### 环境准备

1. 安装编译依赖。

```
yum install tar cmake make git gcc gcc-c++ openssl-devel glib2-devel rsync patch
```


2. 以“/path/workdir”为工作目录，下载编译依赖库，各库源码都位于该工作目录下。远程证明报告使用QCBOR编码，Demo编译时依赖。

```
git clone https://github.com/laurencelundblade/QCBOR.git -b v1.2
git clone https://github.com/laurencelundblade/t_cose.git -b v1.1.2
cd QCBOR
make
make install
cd ../t_cose
cmake -S . -B build -DCRYPTO_PROVIDER=OpenSSL
cmake --build build
cmake --install build
```


  若git clone失败，可先执行以下命令取消git clone过程中SSL校验后重试。 git config --global http.sslVerify false

3. 安装远程证明库，请参见环境要求章节配置openEuler-24.03-LTS-SP1的yum源。

```
yum install virtCCA_sdk virtCCA_sdk-devel
```


4. 返回到工作目录，下载远程证明源代码。

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


#### 编译远程证明Demo

该Demo提供了简单的远程证明流程参考代码，仅用于验证TEE远程证明功能，用户可基于Demo参考实现远程证明。

1. 编译远程证明报告获取和验证的参考代码。
  参考代码编译需要依赖远程证明SDK，编译前请参见环境准备安装编译依赖。

```
cd virtCCA_sdk/attestation/samples
cmake -S . -B build
cmake --build build
```


2. 检查“build”目录下是否已生成client和server两个可执行文件。
  server端（二进制）包含了调用远程证明sdk获取远程证明报告的代码，仅供参考。 client端（二进制）包含了报告解析和验证的代码，仅供参考。 server和client使用TCP进行数据传递，出于安全考虑，建议优先使用rats-tls。


#### 编译rats-tls样例

rats-tls是一种支持异构硬件可执行环境的双向传输层安全性协议，提供更为安全数据传输。TEE套件完成了rats-tls的适配支持，并提供简单的Demo样例，仅用于验证rats-tls的双向验证功能，客户可基于此Demo开发自己的远程证明应用。

1. 返回到工作目录下，下载源码安装rats-tls编译依赖，仅编译时依赖。

```
cd ../../../
git clone https://github.com/PJK/libcbor.git
cd libcbor
cmake -S . -B build
cd build
make
make install
```


2. 在工作目录，编译支持TEE套件远程证明的rats-tls动态库和参考代码。
  参考代码编译需要依赖远程证明SDK和远程证明报告解析依赖库，编译前请参见环境准备安装远程证明SDK和远程证明报告解析依赖库。

3. 在virtCCA_sdk同级目录下载rats-tls源码。

```
cd ../../
git clone https://github.com/inclavare-containers/rats-tls.git
```


4. 基于特定commit点合入rats-tls支持TEE套件的patch。

```
cd rats-tls
git reset --hard 40f7b78403d75d13b1a372c769b2600f62b02692
git apply ../virtCCA_sdk/attestation/rats-tls/*.patch
```


5. 编译rats-tls样例代码和依赖库。

```
bash build.sh -s -r -c -v gcc
```


  检查“bin”目录下是否已生成软件包。


#### 编译initramfs

在某些场景下，客户期望在cVM启动时对cVM进行度量和验证，若验证不通过，则不启动cVM虚拟机。SDK基于buildroot和rats-tls样例提供了演示样例。

1. 根据实际情况修改rats-tls.tar.gz的路径。

```
cd ../
vim virtCCA_sdk/attestation/initramfs/build.sh
```


2. 编译启动时证明需要的initramfs。

```
cd virtCCA_sdk/attestation/initramfs
export FORCE_UNSAFE_CONFIGURE=1
bash build.sh
```


  如果当前目录不存在buildroot源码，build.sh将会自动下载buildroot代码，也可以自行下载buildroot源码，解压后放到“initramfs”目录下。 构建initramfs过程中需要联网下载一些源码，请提前配置好网络。 rats-tls运行依赖OpenSSL库，当前buildroot构建的initramfs包含了3.2.0版本的OpenSSL，如果rats-tls依赖OpenSSL1.x的版本，可将buildroot的tag切回到2023.02.11，其默认配置的OpenSSL版本为1.1.1w。

3. 编译脚本执行成功后，检查“buildroot/output/images”目录下是否已生成initramfs文件rootfs.cpio.gz。

```
ll buildroot/output/images/
```
