У меня есть программа на C ++, которая должна проверять подпись файла, подписанного с помощью GPG, с использованием определенного закрытого ключа. Используя GPGME, я успешно написал программу, которая проверяет, что данный файл был правильно подписан с помощью закрытого ключа, соответствующего одному из открытых ключей в связке ключей GPG.
Теперь я хотел бы, чтобы моя программа проверяла файл, используя открытый ключ, который жестко запрограммирован в моей программе, вместо того, чтобы просто проверять подпись, используя один из открытых ключей, доступных в связке ключей GPG.
Я хочу, чтобы моя программа (которая будет установлена на чужом компьютере) могла проверить, что файл действительно исходит от меня. Если он выполняет операцию проверки с использованием списка открытых ключей в кольце ключей GPG компьютера пользователя, кажется, что пользователь может просто оставить свой файл с помощью своего личного ключа, и моя программа проверит подпись файла, даже если я этого не сделал. не подписывайте это.
Есть ли способ достичь этого с помощью GPGME? Любая помощь с благодарностью.
Хотя это не совсем решение моей проблемы, я решил эту проблему, проверив отпечаток открытого ключа, который использовался для проверки подписанного файла. Я могу жестко закодировать отпечаток моего открытого ключа в моей программе и использовать GPGME для импорта моего открытого ключа в GPG, если его там еще нет.
В GPGME отпечаток пальца можно получить от gpgme_signature_t
получил gpgme_op_verify_result(...)
позвонить (см. документация).
GPG может отобразить отпечаток вашего открытого ключа с помощью следующей команды: gpg --fingerprint