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

调用方案

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。