0
A
回答
2
"Programming RPM with C"在Fedora也许会有帮助,特别是部分"Reading the RPM lead and signature"。这只是一些C调用的概述;然后它会说:“当然,您可以使用签名来做更多的事情,而不仅仅是阅读它。查看联机RPM文档以了解更多有关验证签名的信息。”
+0
我认为这条路线,但正如我所说的“简单的方法”。 –
+0
该文档与此无关。文档非常非常差,并且包含几乎没有用的信息,比如'Fclose',而不是真正与库一起工作。 –
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
的详细信息。
参考:
- Using rpm -K(最大RPM)
- Tools For Studying RPM Files(最大RPM)
这些可能不您的系统上安装。 - tools/rpmsignature.c
相关问题
- 1. 验证Android代码签名
- 2. 代码签名(微软验证码)
- 3. EV代码签名证书或代码签名证书为Microsoft验证
- 4. C#验证签名
- 5. Facebook签名验证,.NET代码
- 6. 代码签名地狱! - 应用程序失败的代码签名验证
- 7. 代码签名“应用程序失败的代码签名验证....”
- 8. 代码签名错误:应用程序失败的代码签名验证
- 9. 如何验证代码中的二进制签名证书?
- 10. 使用C代码验证OpenSSL s/mime签名
- 11. C#验证PDF签名
- 12. C#使用RSA签名和验证签名。编码问题
- 13. 验证C#中的java SAML签名
- 14. C中的XML签名验证库?
- 15. Xcode 4.2验证过程中应用程序失败的代码签名验证
- 16. 代码签名证书Java
- 17. InnoSetup - 代码签名证书
- 18. 代码签名证书
- 19. Mac代码签名证书
- 20. 代码签名证书
- 21. x64代码签名证书?
- 22. 验证签名
- 23. 验证JWT.IO中的签名
- 24. 如何验证C#代码?
- 25. C++验证登录代码
- 26. C#代码验证程序
- 27. 验证/提交错误:应用程序失败的代码签名验证
- 28. 在C#验证签名的请求#
- 29. 忽略C++中自签名证书的“证书验证”
- 30. 应用程序失败的代码签名验证。签名无效,或未使用Apple提交证书签名
如果依赖于'rpm'可执行文件本身是可以接受的,那么你可以exec'rpm --checksig ...'并检查退出代码/输出。这可能不够优雅,但可能更容易一些。 –
签名通常在任何情况下都使用GPG。 –
不是rpm头的签名部分?不可能解析rpm并获得签名? –