如何基于标志动态使用FIPS和非FIPS openssl库?
我正在使用FIPS和OpenSSL库。当我不需要FIPS时,由于FIPS自检,系统性能会下降。由于性能问题,我希望有以下解决方案:-如何基于标志动态使用FIPS和非FIPS openssl库?,openssl,shared-libraries,fips,Openssl,Shared Libraries,Fips,我正在使用FIPS和OpenSSL库。当我不需要FIPS时,由于FIPS自检,系统性能会下降。由于性能问题,我希望有以下解决方案:- LibA->OpenSSL+FIPS 仅限LibB->OpenSLL 当我启用FIPS时,它会触及/tmp目录中的一个文件并重新启动系统。 现在,基于文件的存在,我想加载LibA或LibB。 在这里,LibA和LibB都是带有fip或不带fip的openssl库 有可能做到吗?如果是,如何进行? 还有其他更好的解决办法吗 注意:-平台是LINUX 我希望有以下解决
- LibA->OpenSSL+FIPS
- 仅限LibB->OpenSLL
FIPS\模式\设置(0)
禁用FIPS算法
我认为在您想要的用法中,当加载libA
时,它会检查temp文件,并且仅在文件存在时调用FIPS\u mode\u set(1)
如果编译并链接FIPS-capable和FIPS-non-capable,那么应该使用OPENSSL\u-FIPS
保护代码
所以可能是这样的:
#ifdef OPENSSL_FIPS
int mode, ret = 0; unsigned long err = 0;
mode = FIPS_mode();
if (temp_file_exsts && mode == 0)
{
ret = FIPS_mode_set(1 /*on*/);
err = ERR_get_error();
}
else if (temp_file_exsts && mode != 0))
{
ret = FIPS_mode_set(0 /*off*/);
err = ERR_get_error();
}
else
{
printf("Who knows...");
}
if(ret != 1)
{
printf("FIPS_mode_set failed: %lx.", err);
}
#endif
如何动态使用FIP和非FIP 您可以使用
dlopen
和朋友。您必须执行一些技巧,以确保libA
总是在libB
之前加载/运行时链接。如果你有困难,研究一下并问一个新问题
它触及/tmp目录中的一个文件并重新启动系统
研究如何编写临时文件以及如何以编程方式重新启动系统。如果你有困难,可以问一个新问题。我能够完成第一部分和最后一部分。我在使用基于FIPS标志的FIPS和非FIPS库时被阻止。让我试试你的建议。谢谢