gpt4 book ai didi

c - lirpm - 如何验证已安装包的签名 key

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:44:22 24 4
gpt4 key购买 nike

我想以编程方式检查 RPM 包是否 (1) 签名(有签名)和 (2) 用于签名的 key 是否可信。

[root]$ rpm -qi setup
Name : setup
Signature : RSA/SHA1, Wed 02 Oct 2013 05:15:22 AM MDT, Key ID 0946

[root]$ rpm -qi testing
Name : testing
Signature : (none)

我正在浏览 lirpm API,但我没有看到任何允许对已安装包进行签名验证的公共(public)方法。

# This requires a file descriptor
rpmcli.h:rpmVerifySignatures

# This also requires a file descriptor
rpmlib.h:rpmReadPackageFile

进一步挖掘我看到:

# This uses a callback `qva_showPackage` which gives (QVA_t, rpmts, Header)
rpmcli.h:rpmcliVerify

但我似乎无法从回调传入的 header 中获取 RPM 标签 (RPMTAG_SHA1HEADER)。如果我能得到这些标签,那么调用 rpmpgp.h:pgpVerifySig 来验证签名就有意义了。

编辑:

我看到大部分签名验证工作是在静态方法 rpmchecksig.c:rpmpkgVerifySigs 中完成的,该方法只能通过 rpmcli.h:rpmVerifySignatures 获得。但是这个方法需要一个文件描述符。有没有办法从已安装的包中获取 FD 以便能够使用此方法?

最佳答案

如果通过各种模式特定的 %_vsflags* 设置启用,RPM 将在从 rpmdb 检索时验证仅 header 签名。有关值,请参阅/usr/lib/rpm/macros。

如果你这样做,你会看到验证,比如说,“rpm -Vvv bash”。您还可以通过更改特定的宏,在 --query(或其他)rpm 模式上启用仅 header 签名验证。

如果您希望在 rpm 外部进行验证,有一种方法(但不是特定的调用)可以检索 header 明文、仅 header 签名和公钥。

关于c - lirpm - 如何验证已安装包的签名 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38902749/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com