Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用OpenSSL验证GPG签名_Ssl_Public Key Encryption_Gnupg_Openpgp_Gpgme - Fatal编程技术网

如何使用OpenSSL验证GPG签名

如何使用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

我编写了一个简单的跨平台实用程序来使用验证GPG签名。然而,gpgme在windows和其他平台(如osx)上工作不太好,它需要安装GnuPG命令行实用程序,这是一个非常严重的依赖性。我也研究了其他openpgp库,例如,但这些库的可移植性更差(它实际上必须使用mingw-w64构建)


是否可以只使用标准库(如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编写的。