---
title: 调用方案
description: "KAE支持使用BoringSSL调用，调用KAE时提供通过业务代码调用API接口和通过合入使BoringSSL直接调用KAE的patch两种方式，请根据需求选择一种即可。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/252RC1/accel/kunpengaccel_06_0030.html
sourcePath: /source/zh/kunpengboostkithistory/252RC1/accel/kunpengaccel_06_0030.html
indexId: 4e189b45edcc6e7e7ad6ecb8ecf45e5795f702665b86677ffeececa9a7f67c3b72
---
# 调用方案

KAE支持使用BoringSSL调用，调用KAE时提供通过业务代码调用API接口和通过合入使BoringSSL直接调用KAE的patch两种方式，请根据需求选择一种即可。

BoringSSL的Engine机制不能通过设置类似于“OPENSSL_ENGINES”的环境变量来调用KAE，因此KAE提供了相关的对外接口ENGINE_init_kae和ENGINE_free_kae。提供两种BoringSSL调用KAE的方案。

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

该方案的优点是无需重新编译BoringSSL，缺点是用户可能需要修改现有调用BoringSSL业务代码。

RSA私钥加密、私钥解密的接口兼容性如下：- RSA_new()：无法使用到KAE。
- RSA_new_method()：将KAE作为入参，可以调用到KAE。


在进行加密前调用ENGINE_init_kae获取KAE，将KAE作为RSA_new_method的入参，后续的私钥加密和公钥加密就会调用KAE，任务完成后调用ENGINE_free_kae进行KAE资源释放。如图1所示为通过API调用的原理图。图1 BoringSSL通过API调用KAE原理图


#### 方案二：修改BoringSSL源码，合入相关patch

修改BoringSSL源码，合入相关patch，使BoringSSL的RSA算法默认使用KAE来做加解密。目前已针对0.20250311.0版本的BoringSSL给出相应补丁文件bssl_add_kae_support.patch。不同版本的BoringSSL源码有差异，该patch不具有兼容性，如果需要使用其他版本的BoringSSL，可以参考该patch文件中的内容修改相应的源码，修改量并不多。

该方案的优点是无需修改现有业务代码；缺点是BoringSSL需要强依赖于KAE动态库。

RSA私钥加密、私钥解密的接口兼容性如下：- RSA_new()：默认使用KAE。
- RSA_new_method()：将KAE作为入参，可以调用到KAE。
