与其他 OpenSSL 版本库共存方案
背景
随着《密码法》颁布和实施以来,商密算法(SM)和国密握手协议(TLCP)越来越重要,各银行、金融和安全企业纷纷对自己的软件进行改造,以应对监管的检查,一些大型软件或者客户端依赖了很多第三方库,第三方库可能依赖了 openssl,并以静态库的方式打包到一个 SDK 中,然后再提供给客户端软件使用,这时候引入 BabaSSL 进行国密改造的话,会面临 BabaSSL 与其他 openssl 同时依赖而导致的一些问题,比如:编译时可能的符号冲突问题、链接时符号可能绑定错误导致数据结构指针不兼容问题,一般的解决办法是把 openssl 替换成 BabaSSL 即可,但第三方库依赖的 openssl 升级到 BabaSSL 可能就不是那么容易了,所以就需要 BabaSSL 来兼容其他 openssl 版本库,二者共存或许是过渡期比较好的一个方案,最终还是希望第三方库也升级到 BabaSSL。本文将从问题复现、技术原理和解决方案三个方面来阐述,让你更深刻地理解和解决国密改造时引入 BabaSSL 后与其他 openssl 版本库不兼容的问题。