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

4
我有一个C++程序,需要使用特定的私钥验证已使用GPG签名的文件的签名。通过使用GPGME,我已经成功编写了一个程序,它可以验证给定的文件是否已使用与GPG密钥环中公钥之一相对应的私钥正确签名。
现在,我想通过在我的程序中硬编码公钥来验证文件,而不仅仅是使用GPG密钥环中可用的公钥来验证签名。
我希望我的程序(将安装在他人的计算机上)能够验证该文件确实来自于我。如果它使用用户计算机上GPG密钥环中的公钥列表进行验证操作,则似乎该用户只需使用自己的私钥重新签署我的文件,我的程序就会验证文件的签名,即使我没有签署。
有没有使用GPGME实现这一点的方法?非常感谢任何帮助。
1个回答

2
虽然并不是解决我的问题的确切方法,但我通过检查用于验证签名文件的公钥指纹来解决了这个问题。我可以在程序中硬编码我的公钥指纹,并使用 GPGME 将我的公钥导入到 GPG 中(如果还没有导入)。
在 GPGME 中,指纹可以从通过 gpgme_op_verify_result(...) 调用获得的 gpgme_signature_t 中获取(请参见文档 documentation)。
GPG 可以使用以下命令显示您的公钥指纹:gpg --fingerprint。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接