---
title: 调用示例
description: "使用BoringSSL调用KAE前需要先安装KAE，再进行BoringSSL编译，然后选择调用方案进行调用。本章节提供两种调用方式的调用示例。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/251RC1/accel/kunpengaccel_06_0031.html
sourcePath: /source/zh/kunpengboostkithistory/251RC1/accel/kunpengaccel_06_0031.html
indexId: bf1d385e735f7986ae85a8dfc25bb1b8b4c5738273eeca607d0ae64457a0a4f872
---
# 调用示例

使用BoringSSL调用KAE前需要先安装KAE，再进行BoringSSL编译，然后选择调用方案进行调用。本章节提供两种调用方式的调用示例。

#### 前提条件

请参见源码安装完成KAE的安装。

在编译安装KAEOpensslEngine加速引擎步骤中需要使用BoringSSL源码路径，如下所示。```
sh build.sh engine_boringssl /opt/boringssl
```


#### 安装BoringSSL

1. 下载BoringSSL源码包(https://github.com/google/boringssl/releases)，将BoringSSL源码包拷贝到自定义路径下并解压（如“/opt/boringssl”）。
2. 编译并进行安装。
  BoringSSL默认编译Debug版本，发布版本需要添加-DCMAKE_BUILD_TYPE=Release进行编译。

```
cmake -DCMAKE_BUILD_TYPE=Release  -B build -DBUILD_SHARED_LIBS=1
make -C build -j
cd build
make install
```


3. 查看BoringSSL是否安装成功。
  使用make install安装后，BoringSSL的源码路径会生成“install”目录，查看“install”目录下的文件。 1 ll /opt/boringssl/install/

  回显信息如下，表示安装成功。

```
total 16
drwxr-xr-x. 3 root root 4096 Apr  8 11:41 bin
drwxr-xr-x. 3 root root 4096 Apr  8 09:14 include
drwxr-xr-x. 3 root root 4096 Apr  8 09:14 lib
drwxr-xr-x. 2 root root 4096 Apr  8 09:14 lib64
```


#### 方案一：在业务代码中调用接口

使用前提：编译业务代码时需要链接KAE的头文件和动态库- 头文件：/usr/local/boringssl/include/kae_bssl.h
- 动态库：/usr/local/boringssl/lib/engines-1.1/kae_bssl.so


使用示例

示例文件可参考testsuit_rsa.cpp文件，该文件给出了通过ENGINE_init_kae和ENGINE_free_kae接口调用KAE的示例代码，文件路径为：“KAEOpensslEngine/test/bssl_test/src/rsa/”。使用步骤如下：

1. 设置KAE和BoringSSL动态库查找路径。

```
export LD_LIBRARY_PATH=/usr/local/boringssl/lib/engines-1.1:/opt/boringssl/install/lib64
```


2. 进入Makefile文件路径，打开Makefile脚本。

```
cd KAE/KAEOpensslEngine/test/bssl_test/src
vi Makefile
```


3. 按“i”进入编辑模式，修改第26行-I为BoringSSL的头文件路径，第28行-L为BoringSSL动态库路径。
  按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。

4. 进入测试脚本路径，执行测试脚本build.sh，该脚本会自动编译使用示例testsuit_rsa.cpp文件。

```
cd ../
sh build.sh
```


5. 执行测试用例。

```
cd src
./kaedemo
```


#### 方案二：修改BoringSSL源码

使用前提：编译业务代码时需要链接KAE的头文件和动态库- KAE提供的bssl_add_kae_support.patch只适用于0.20250311.0版本的BoringSSL，若使用其他版本的BorinSSL需要对该patch内容进行修改后再合入，修改点已在patch中详细说明，修改量不多（patch文件的加号表示新增，减号表示删除，修改的位置可以参考上下文）。
- 头文件：/usr/local/boringssl/include/kae_bssl.h
- 动态库：/usr/local/boringssl/lib/engines-1.1/kae_bssl.so


1. 重新下载一份BoringSSL源码。
2. 拷贝bssl_add_kae_support.patch到新的BoringSSL源码同级目录，bssl_add_kae_support.patch文件路径为“KAEOpensslEngine/patch/bssl_add_kae_support.patch”。
3. 使用cd命令进入BoringSSL源码目录。
4. 合入bssl_add_kae_support.patch文件。

```
patch -Np1 < ../bssl_add_kae_support.patch
```


5. 构建，需要传入-DENABLE_KAE=ON。

```
cmake -DENABLE_KAE=ON -DCMAKE_BUILD_TYPE=Release  -B build -DBUILD_SHARED_LIBS=1
```


6. 编译安装。

```
make -C build -j
cd build
make install
```


使用示例

编译安装BoringSSL后，使用bssl命令进行性能测试，该命令在BoringSSL源码的“install/bin”目录中，bssl命令参数如表1所示。
**表1 bssl命令参数说明**

| 参数 | 参数说明 |
| --- | --- |
| \-filter | 筛选指定算法进行运行 |
| \-timeout | 测试项运行时间 |


以下为使用bssl speed进行性能测试的示例步骤，对比bssl不使用KAE和使用KAE的签名性能结果差异。

- 不使用KAE，即使用未合入patch之前的BoringSSL。

  1. 设置KAE和BoringSSL动态库路径。

```
export LD_LIBRARY_PATH=/opt/boringssl/install/lib64
```


  2. 进入bssl命令路径并执行测试命令。

```
cd /opt/boringssl/install/bin
./bssl speed -filter RSA -timeout 6
```


    回显信息如下所示。

```
Did 4823 RSA 2048 signing operations in 6019561us (801.2 ops/sec)
Did 202000 RSA 2048 verify (same key) operations in 6010664us (33606.9 ops/sec)
Did 173000 RSA 2048 verify (fresh key) operations in 6005633us (28806.3 ops/sec)
Did 28148 RSA 2048 private key parse operations in 6000050us (4691.3 ops/sec)
Did 1650 RSA 3072 signing operations in 6006562us (274.7 ops/sec)
Did 95000 RSA 3072 verify (same key) operations in 6010544us (15805.6 ops/sec)
Did 85000 RSA 3072 verify (fresh key) operations in 6022383us (14114.0 ops/sec)
Did 14204 RSA 3072 private key parse operations in 6050679us (2347.5 ops/sec)
Did 750 RSA 4096 signing operations in 6039070us (124.2 ops/sec)
Did 54808 RSA 4096 verify (same key) operations in 6075612us (9021.0 ops/sec)
Did 49600 RSA 4096 verify (fresh key) operations in 6001654us (8264.4 ops/sec)
Did 10004 RSA 4096 private key parse operations in 6073923us (1647.0 ops/sec)
```


    可以看到使用未合入patch之前的BoringSSL的RSA算法时，RSA 2048 signing性能为801.2 ops/sec，RSA 3072 signing性能为274.7 ops/sec，RSA 4096 signing性能为124.2 ops/sec。


- 使用KAE，即使用合入patch之后的BoringSSL。

  1. 设置KAE和合入patch的BoringSSL动态库路径。

```
export LD_LIBRARY_PATH=/usr/local/boringssl/lib/engines-1.1:/opt/patch/boringssl/install/lib64
```


  2. 进入bssl命令路径并执行测试命令。

```
cd /opt/patch/boringssl/install/bin
./bssl speed -filter RSA -timeout 6
```


    回显信息如下所示。

```
Did 19536 RSA 2048 signing operations in 6020015us (3245.2 ops/sec)
Did 202000 RSA 2048 verify (same key) operations in 6022999us (33538.1 ops/sec)
Did 171250 RSA 2048 verify (fresh key) operations in 6020358us (28445.2 ops/sec)
Did 32760 RSA 2048 private key parse operations in 6083206us (5385.3 ops/sec)
Did 7215 RSA 3072 signing operations in 6035497us (1195.4 ops/sec)
Did 95000 RSA 3072 verify (same key) operations in 6013634us (15797.4 ops/sec)
Did 85625 RSA 3072 verify (fresh key) operations in 6033388us (14191.9 ops/sec)
Did 14410 RSA 3072 private key parse operations in 6108017us (2359.2 ops/sec)
Did 3268 RSA 4096 signing operations in 6030206us (541.9 ops/sec)
Did 54303 RSA 4096 verify (same key) operations in 6016396us (9025.8 ops/sec)
Did 49749 RSA 4096 verify (fresh key) operations in 6018416us (8266.1 ops/sec)
Did 9072 RSA 4096 private key parse operations in 6080936us (1491.9 ops/sec)
```


    可以看到使用合入patch之后的BoringSSL的RSA算法时，RSA 2048 signing性能为3245.2 ops/sec，RSA 3072 signing性能为1195.4 ops/sec，RSA 4096 signing性能为541.9 ops/sec，性能有明显提升 。
