OpenSSL Fips в C ++ Wrapper Library Как?Ошибка: отпечаток не совпадает - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь скомпилировать статическую оболочку 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 в моем проекте.Когда я вызываю 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 Оба построены правильно, что заставляет меня думать, что я создаю свою обертку.Или, может быть, он не может обработать хеш, потому что он был упакован?

1 Ответ

0 голосов
/ 26 ноября 2018

Так что мне пришлось добавить fips_premain.c в мой проект Visual Studio.Запустите fips_premain_dso.exe, передав в мою новую статическую библиотеку (убедитесь, что fips_premain.c не изменен или не будет генерировать хеш), а затем поместите значение хеша в fips_premain.c, а затем пересоберите в visual studio, и это работает: D

...