使用特定的公钥与 C/C++ 中的 GPGME 验证 GPG 签名



我有一个C++程序,需要使用特定的私钥验证已使用 GPG 签名的文件的签名。使用 GPGME,我成功地编写了一个程序,该程序验证给定文件是否已使用与 GPG 密钥环中的一个公钥对应的私钥正确签名。

现在,我希望我的程序使用程序内部硬编码的公钥来验证文件,而不仅仅是使用 GPG 密钥环中可用的公钥之一来验证签名。

我希望我的程序(将安装在其他人的计算机上)能够验证文件是否真的来自我。如果它通过使用用户计算机的 GPG 密钥环中的公钥列表进行验证操作,则似乎该用户可以使用自己的私钥重新签名我的文件,即使我没有签名,我的程序也会验证文件的签名。

有没有办法通过GPGME实现这一目标?任何帮助将不胜感激。

虽然不完全是我问题的解决方案,但我通过检查用于验证签名文件的公钥的指纹来解决这个问题。我可以在我的程序中对公钥的指纹进行硬编码,并且可以使用 GPGME 将我的公钥导入 GPG(如果它还没有)。

在GPGME中,指纹可以从gpgme_op_verify_result(...)调用获得的gpgme_signature_t获取(请参阅文档)。

GPG可以通过以下命令显示公钥的指纹:gpg --fingerprint

最新更新