Использование openssl fipsld в статической библиотеке
- Я построил
FIPS capable openssl
библиотека. Openssl
Версия1.0.2t
а такжеFIPS object module 2.0.16
.- Я читал руководство пользователя для
FIPS object module
в котором говорилось, что последний шаг в создании программы сFIPS capable openssl
было использоватьfipsld
связать мою программу сopenssl
скорее, чемgcc/ld
как он вычисляетsha1sum
изfipscansiter.o
с помощьюfipsprelim.c
. - После этого мне нужно позвонить
FIPS_mode_set(1)
что позволяетfips
Режим. - Это работает, если я создаю исполняемый файл. Но в моем проекте мы предоставляем
static
библиотека для наших клиентов, и мы разрешаем все зависимости на нашей стороне, поэтому мы распаковываемlibcrypto.a
с помощьюar x libcrypto.a
и добавить всеopenssl
объектные файлы в нашу статическую библиотекуlibapi.a
. - Есть один класс (
API_DigitalSignature.cpp
), который построен как оболочка вокругopenssl
api для цифровой подписи.
Теперь проблема в том, что я не понимаю, как мне использовать fipsld
в моем проекте, потому что я создаю не программу, а просто архив?
Также я уточнил с некоторыми охранниками, что при распаковке libcrypto.a
не влияет FIPS
проверка, если мы не изменим ciphers
.
1 ответ
Для меня сработало следующее:MacOS
FIPSLD_CC=gcc /usr/local/ssl/fips-2.0/bin/fipsld -o fips_hmac fips_hmac.c /usr/local/lib/libcrypto.a
Linux (Ubuntu)
FIPSLD_CC=gcc /usr/local/ssl/fips-2.0/bin/fipsld -o fips_hmac fips_hmac.c /usr/local/ssl/lib/libcrypto.a -I/usr/local/ssl/include -ldl
Вот, fips_hmac.c
это простая программа на C, которую я написал для тестирования FIPS. Вы должны указать пути дляfipsld
а также libcrypto.a
актуальные для вашей системы.
Обратите внимание на флаг -ldl
в решении Linux