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

调用示例

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

前提条件

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

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

安装BoringSSL

  1. 下载BoringSSL源码包,将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,性能有明显提升 。