Я пытаюсь скомпилировать статическую оболочку DLL, которая включает статические библиотеки OpenSSL Fips.
Я связал:
C:\Work\win_x64\fipscanister.lib
C:\Work\libeayfips32.lib
C:\Work\ssleay32.lib
ws2_32.lib
crypt32.lib
Я также включил каталог libs в каталог include.
Я добавил файл fips_premain.c, который был сгенерирован во время сборки openssl-fip2.0. Я настроил 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 test все тесты пройдены успешно
Я, должно быть, где-то пропускаю шаг, мне любопытно, как другие заставили это работать.
Я построил библиотеку как:
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. Оба собраны правильно, что заставляет меня думать, что я создаю свою обертку. Или, может быть, он не может обработать хеш, потому что он был упакован?
Поэтому мне пришлось добавить fips_premain.c в мой проект Visual Studio. Запустите fips_premain_dso.exe, передав в мою новую статическую библиотеку (убедитесь, что fips_premain.c не изменен или не будет генерировать хеш), а затем поместите значение хеша в fips_premain.c, а затем пересоберите в visual studio, и это работает: D
Других решений пока нет …