调用示例
使用BoringSSL调用KAE前需要先安装KAE,再进行BoringSSL编译,然后选择调用方案进行调用。本章节提供两种调用方式的调用示例。
前提条件
请参见源码安装完成KAE的安装。
在编译安装KAEOpensslEngine加速引擎步骤中需要使用BoringSSL源码路径,如下所示。
1 | sh build.sh engine_boringssl /opt/boringssl |
安装BoringSSL
- 下载BoringSSL源码包,将BoringSSL源码包拷贝到自定义路径下并解压(如“/opt/boringssl”)。
- 编译并进行安装。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
- 查看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/”。使用步骤如下:
- 设置KAE和BoringSSL动态库查找路径。
export LD_LIBRARY_PATH=/usr/local/boringssl/lib/engines-1.1:/opt/boringssl/install/lib64
- 进入Makefile文件路径,打开Makefile脚本。
cd KAE/KAEOpensslEngine/test/bssl_test/src vi Makefile
- 按“i”进入编辑模式,修改第26行-I为BoringSSL的头文件路径,第28行-L为BoringSSL动态库路径。
按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 进入测试脚本路径,执行测试脚本build.sh,该脚本会自动编译使用示例testsuit_rsa.cpp文件。
cd ../ sh build.sh
- 执行测试用例。
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
- 重新下载一份BoringSSL源码。
- 拷贝bssl_add_kae_support.patch到新的BoringSSL源码同级目录,bssl_add_kae_support.patch文件路径为“KAEOpensslEngine/patch/bssl_add_kae_support.patch”。
- 使用cd命令进入BoringSSL源码目录。
- 合入bssl_add_kae_support.patch文件。
patch -Np1 < ../bssl_add_kae_support.patch
- 构建,需要传入-DENABLE_KAE=ON。
cmake -DENABLE_KAE=ON -DCMAKE_BUILD_TYPE=Release -B build -DBUILD_SHARED_LIBS=1
- 编译安装。
make -C build -j cd build make install
使用示例
编译安装BoringSSL后,使用bssl命令进行性能测试,该命令在BoringSSL源码的“install/bin”目录中,bssl命令参数如表1所示。
以下为使用bssl speed进行性能测试的示例步骤,对比bssl不使用KAE和使用KAE的签名性能结果差异。
- 不使用KAE,即使用未合入patch之前的BoringSSL。
- 设置KAE和BoringSSL动态库路径。
export LD_LIBRARY_PATH=/opt/boringssl/install/lib64
- 进入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和BoringSSL动态库路径。
- 使用KAE,即使用合入patch之后的BoringSSL。
- 设置KAE和合入patch的BoringSSL动态库路径。
export LD_LIBRARY_PATH=/usr/local/boringssl/lib/engines-1.1:/opt/patch/boringssl/install/lib64
- 进入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,性能有明显提升 。
- 设置KAE和合入patch的BoringSSL动态库路径。
父主题: 使用BoringSSL调用KAE