Использование 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

Другие вопросы по тегам