C ++包装库中的OpenSSL Fips如何?错误:指纹不匹配

时间:2018-10-03 01:35:55

标签: c++ c windows openssl fips

我正在尝试编译包含静态OpenSSL Fips库的静态包装dll。

我已链接:

C:\Work\win_x64\fipscanister.lib
C:\Work\libeayfips32.lib
C:\Work\ssleay32.lib
ws2_32.lib
crypt32.lib

我还将libs的目录包括在includes目录中。

我添加了在openssl-fip2.0构建期间生成的fips_premain.c文件。我将SHA1_HASH_SIG调整为等于fips_premain.c.sha1

中的值

我正在使用Visual Studio 2017构建包装器dll。我在项目中包含了包装dll。呼叫FIPS_mode_set(1)时,出现以下错误:

17480:error:2D0A3073:FIPS routines:func(163):fips selftest failed:
.\crypto\ecdh\ech_ossl.c:125: Exception thrown:
'System.Exception' in Test.OpenSSL.dll [Test][11872][26]
ERROR [Native][-] 2018-10-03T01:13:54.971Z ERROR 
Setting fips mode: fingerprint does not match
[Native][11872][27] ERROR [Native][-] 2018-10-03T01:13:54.972Z 
ERROR Setting fips mode: fingerprint does not match Exception thrown: 'System.Exception'
in Test.OpenSSL.dll Exception thrown:
'System.NullReferenceException' in Test.OpenSSL.dll

当我运行 nmake ­f ms \ nt.mak测试时,所有测试均成功完成

我必须在某个地方缺少一个步骤,我很好奇其他人是如何做到这一点的。

我建立了如下库:

perl Configure VC-WIN64A --prefix=C:\Build-OpenSSL-VC-64 
ms\do_win64a 
nmake -f ms\nt.mak  
nmake -f ms\nt.mak install

我正在使用openssl-1.0.2p和openssl-fips-2.0.16两者都正确构建,这使我认为它是如何构建包装器的。还是因为它被包装而无法处理哈希?

1 个答案:

答案 0 :(得分:0)

因此,我不得不将fips_premain.c添加到我的Visual Studio项目中。运行fips_premain_dso.exe并传入我的新静态库(确保未更改fips_premain.c或它将不会生成哈希值),然后将哈希值放入fips_premain.c中,然后在visual studio中进行重建,并且可以:D