Проверка подписи GPG с использованием определенного открытого ключа с помощью GPGME в C/C++

У меня есть программа на C++, которой необходимо проверить подпись файла, подписанного с помощью GPG с использованием определенного закрытого ключа. Используя GPGME, я успешно написал программу, которая проверяет, правильно ли данный файл подписан закрытым ключом, соответствующим одному из открытых ключей в наборе ключей GPG.

Теперь я хотел бы, чтобы моя программа проверяла файл с помощью открытого ключа, жестко запрограммированного внутри моей программы, а не просто проверяла подпись с помощью одного из открытых ключей, доступных в наборе ключей GPG.

Я хочу, чтобы моя программа (которая будет установлена ​​на чужом компьютере) могла проверить, действительно ли файл исходит от меня. Если он выполняет операцию проверки, используя список открытых ключей в связке ключей GPG на компьютере пользователя, похоже, что этот пользователь может просто подписать мой файл со своим собственным закрытым ключом, и моя программа проверит подпись файла, хотя я этого не сделал. т подпишите его.

Есть ли способ добиться этого с помощью GPGME? Любая помощь приветствуется.


person Kevin Salvesen    schedule 15.06.2015    source источник


Ответы (1)


Хотя это не совсем решение моей проблемы, я решил ее, проверив отпечаток открытого ключа, который использовался для проверки подписанного файла. Я могу жестко закодировать отпечаток моего открытого ключа в своей программе и могу использовать GPGME для импорта моего открытого ключа в GPG, если его там еще нет.

В GPGME отпечаток можно получить из gpgme_signature_t полученного с помощью gpgme_op_verify_result(...) вызова (см. документацию< /а>).

GPG может отобразить отпечаток вашего открытого ключа с помощью следующей команды: gpg --fingerprint

person Kevin Salvesen    schedule 15.06.2015