首页 > 解决方案 > 基于某些标志在单个应用程序中动态使用不同的 OpenSSL 版本

问题描述

需要用 2 个版本的 OpenSSL 共享库/DLL 编译一个应用程序。版本 1.0.2 和版本 1.1.1。1.1.1 版不支持 FIPS。所以为了支持联邦客户,我们想继续使用 1.0.2 版本。对于非 FIPS 客户,希望使用具有许多安全修复程序的 1.1.1 版。

所以会有很多 API 添加、删除或签名更改。将有许多结构、枚举添加/删除或修改。为了处理 API,我们计划使用 LoadLibrary/dlopen 基于 FIPS 标志动态加载库,并通过使用 GetProcAddress/dlsym 获取的函数指针调用函数。

麻烦在于结构/枚举/定义。要使用它们,我们必须包含头文件。两个版本的头文件将具有相同的名称,一些共同的声明。所以我们不能在一个 CPP 文件中包含 2 个这样的头文件。

我们尝试使用命名空间,但没有太大帮助。任何通过某种设计模式或其他方式在 C++ 中解决此问题的建议都会有所帮助。

提前致谢

标签: c++openssl

解决方案


推荐阅读