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並獲得簽名? –