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

时间:2015-06-15 08:51:43

标签: c++ c cryptography gnupg gpgme

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

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

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

有没有办法用GPGME实现这一目标?非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

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

在GPGME中,指纹可以通过gpgme_signature_t电话获得的gpgme_op_verify_result(...)获得(参见documentation)。

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