如何在C代码中验证rpm包的签名(使用GPG签名)? 想要读取签名的rpm标题,以便我可以使用openssl调用进行验证。
我是否正在思考正确的方向?
答案 0 :(得分:2)
"Programming RPM with C"可能有所帮助,特别是"Reading the RPM lead and signature"部分。这只是一些C调用的概述;它然后说"当然,你可以用签名做更多的事情,而不仅仅是阅读它。查看在线RPM文档,了解有关验证签名的更多信息。"
答案 1 :(得分:1)
验证签名的简单方法是(在C代码中)打开管道到rpm
命令以验证包:
FILE *fp = popen("rpm -K mypackagefile.rpm 2>&1 ", "r");
...read the result with fgets, or whatever
pclose(fp);
从命令行,输出几个例子:
$ rpm -K ncurses6-6.0-20150725.x86_64.rpm |for-paste
ncurses6-6.0-20150725.x86_64.rpm: (sha1) dsa sha1 md5 gpg OK
$ rpm -Kv ncurses6-6.0-20150725.x86_64.rpm
ncurses6-6.0-20150725.x86_64.rpm:
Header V4 DSA/SHA1 Signature, key ID f7e48edb: OK
Header SHA1 digest: OK (208298c8b2ee9db30f01c817b773ce30caf74034)
MD5 digest: OK (88c6c126cc1dc4d2a38916c3fce448be)
V4 DSA/SHA1 Signature, key ID f7e48edb: OK
在第一个(非详细)情况下,仅在签名验证时才打印gpg
。您可以使用-v
详细选项显示签名f7e48edb
的详细信息。
供参考: