Что нужно проекту C ++ для подписи файлов сертификатом (RSA-SHA256) - PullRequest
0 голосов
/ 30 мая 2018

Я занимаюсь разработкой приложения с использованием Qt, и в какой-то момент мне потребовалось зашифровать и «подписать» файл, предоставив закрытый сертификат с использованием SHA-256.Я провел довольно много чтений по OpenSSL и сертификатам, но я не в состоянии понять, как вести процесс в коде C ++.

По сути, я пытаюсь выполнить эквивалент этой команды:

openssl dgst -sha256 -out output.txt -sign certificate.pem input.txt

Я изучил доступные классы Qt, а именно:

Класс QSslCertificate имеет метод дайджеста, который представляется актуальным.Точно так же я могу получить хешированное содержимое файла, используя QCryptographicHash :: hash.Но нигде я не могу найти упоминаний о «подписании» файла сертификатом, содержащим ключ RSA.

Не могу сказать, что полностью понимаю процесс подписания, но я слышал терминологию «маскировка»сгенерированный хеш SHA256 с использованием алгоритма RSA - который, как я предполагал, достигается с помощью аргумента OpenSSL -sign.

Если Qt никогда не предназначался для этого, что было бы самым простым или типичной альтернативой.Я ожидаю, что мне нужно будет включить другую библиотеку?Или я просто погружаюсь, чтобы изучить библиотеки OpenSSL и попытаться включить их в свой проект?https://www.openssl.org/docs/manmaster/man3/

Учитывая, насколько малым будет этот процесс шифрования в моем приложении, я был бы признателен за вариант, который требует минимальной интеграции и обучения.

1 Ответ

0 голосов
/ 30 мая 2018

Похоже, есть функция RSA_sign, которая делает именно это, если вы собираетесь реализовать ее самостоятельно с помощью OpenSSL.Вы можете вручную взять SHA256 вашего файла (опять же, с OpenSSL), RSA_sign его и использовать RSA_verify для проверки его действительности.

Смотрите здесь ...

Редактировать: Здесь - это пример того, как извлечь данные закрытого ключа из сертификата PEM - это, конечно, если ваш сертификат в формате PEM.PEM в основном включает в себя читаемый человеком заголовок и следующие ключевые данные в формате base64.Вы можете проверить, начинается ли файл сертификата со строки -----BEGIN RSA PRIVATE KEY-----.

...