如何使用OpenSSL验证GPG签名
我编写了一个简单的跨平台实用程序来使用验证GPG签名。然而,gpgme在windows和其他平台(如osx)上工作不太好,它需要安装GnuPG命令行实用程序,这是一个非常严重的依赖性。我也研究了其他openpgp库,例如,但这些库的可移植性更差(它实际上必须使用mingw-w64构建)如何使用OpenSSL验证GPG签名,ssl,public-key-encryption,gnupg,openpgp,gpgme,Ssl,Public Key Encryption,Gnupg,Openpgp,Gpgme,我编写了一个简单的跨平台实用程序来使用验证GPG签名。然而,gpgme在windows和其他平台(如osx)上工作不太好,它需要安装GnuPG命令行实用程序,这是一个非常严重的依赖性。我也研究了其他openpgp库,例如,但这些库的可移植性更差(它实际上必须使用mingw-w64构建) 是否可以只使用标准库(如openssl和zlib)实现一个独立的工具来验证GPG签名?据我所知,openpgp由标准密码和哈希函数组成。是什么原因使这一点如此困难,以至于没有好的C库可以做到这一点?OpenSSL
是否可以只使用标准库(如openssl和zlib)实现一个独立的工具来验证GPG签名?据我所知,openpgp由标准密码和哈希函数组成。是什么原因使这一点如此困难,以至于没有好的C库可以做到这一点?OpenSSL没有实现OpenPGP格式,并且不兼容。使用OpenPGP实现,如GnuPG、Bouncycastle(可用于Java/C的框架)或其他(OpenPGP.js用于JavaScript,还有一个Go库) 虽然OpenPGP使用标准的加密摘要和加密算法,但它有不同的消息格式,尤其是使用自己的消息格式。您必须实现OpenPGP消息格式的解析器,并与OpenPGP CFB模式兼容(如果您想支持加密),最后将结果传递给OpenSSL以进行实际加密
最后,支持包括完整OpenPGP规范的信任概念的整个Web是一项广泛的任务,需要考虑各种各样的问题(……)。在unix世界中,人们似乎对GnuPG和GPGME很满意,这两种技术甚至针对非常高级的安全问题(例如,)进行了深入的测试和分析。新的实现很可能会遇到GnuPG已经解决的类似问题。谢谢,这很有帮助。我希望问题不会那么复杂,因为我不需要加密,只需要签名验证。这可能会大大减少工作量,但仍然需要实现消息格式。有可能
gpgv
已经完成了您所需要的功能。使用一些正则表达式魔术,基本解析应该不会太困难。。。gpgverify仅作为可执行文件提供,对吗?我需要装订。。。或者有我不知道的libgpgv吗?因为OpenPGP是一个二进制协议(ASCII铠装只是编码),所以我不会使用正则表达式。您还可以查看pgpdump
,它是一个OpenPGP解析器(和“漂亮的打印机”),我认为它是用C编写的。