我已经构建了 OpenSSL FIPS 容器版本 2.0.1,然后使用该容器构建了 OpenSSL 1.0.1c(根据OpenSSL FIPS 对象模块 v2.0 的用户指南中的说明):
SET FIPSDIR=C:\OpenSSL\FIPS
cd C:\OpenSSL\openssl-fips-2.0.1
ms\do_fips
cd C:\OpenSSL\openssl-1.0.1c
ms\do_nasm
nmake -f ms\ntdll.mak
我在我的 .NET 应用程序中有这些导入(显然是使用上面的 libeay32.dll):
[DllImport("libeay32", CallingConvention = CallingConvention.Cdecl)]
public extern static void ERR_load_crypto_strings();
[DllImport("libeay32", CallingConvention = CallingConvention.Cdecl)]
public extern static int ERR_print_errors_fp(SafeHandle file);
[DllImport("libeay32", CallingConvention = CallingConvention.Cdecl)]
public extern static int FIPS_mode_set(int onoff);
问题是,当我打电话时FIPS_mode_set(1)
,它正在返回0
,这表明 FIPS 模式无法启用。
为了尝试找出问题的原因,我正在这样做:
ERR_load_crypto_strings();
using (FileStream fs = new FileStream...)
{
ERR_print_errors_fp(fs.SafeFileHandle);
}
这给了我这个错误信息:
OPENSSL_Uplink(0FAF1000,08): no OPENSSL_Applink
我试过寻找答案,但结果空洞 - 任何建议都将不胜感激!
**更新**
我尝试使用 Visual Studio 2008 命令行中的相同步骤而不是 Visual Studio 2010 命令行(我以前使用过)来构建它——它成功了!
但我不知道为什么它不能与 Visual Studio 2010 一起使用,而且我不想让 Visual Studio 2008 永远存在——知道如何让它与 Visual Studio 2010 一起构建吗?