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

标签 c++ c cryptography gnupg gpgme

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

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

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

有什么方法可以用 GPGME 实现这个目标吗?非常感谢任何帮助。

最佳答案

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

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

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

关于c++ - 在 C/C++ 中使用带有 GPGME 的特定公钥验证 GPG 签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30840972/

相关文章:

c++ - 检查元组类型是否是彼此的子集

c - C 中的堆排序,索引 0 问题

c - "Lower precision in wider context"警告实际上是什么意思?

.net - .NET RSACryptoServiceProvider 中的 PyCrypto 签名消息和验证签名

azure - Windows Azure 中的 key 管理

iis - C_GetSlotList 从 IIS 但不是从 IIS Express 调用时失败

c++ - 在一个解决方案中共享类

c++ - 用于插入操作的二叉搜索树代码问题

c++ - 有没有办法在 C/C++ 中并行运行完全不相关的任务

C 库命名约定