将 RPM 包的密钥 ID 与 RPM-GPG-KEY 的密钥指纹进行比较

将 RPM 包的密钥 ID 与 RPM-GPG-KEY 的密钥指纹进行比较

在使用 RPM 包期间,我经常需要根据可用的 GPG 密钥验证签名。

使用

rpm -qip --nosignature <package.rpm> | grep Signature

给我一个密钥 ID,即:

Signature   : RSA/SHA1, Mon 28. Aug 2019 06:00:00 AM CET, Key ID 1234567890abcdef

由此

gpg --with-fingerprint <RPM-GPG-KEY-package>

给我一个钥匙指纹:

Key fingerprint = 0987 6543 21FE DCBA 0987 6543 21FE 1234 5678 90AB CDEF

由于比较两个输出并不容易,如何获取提到的密钥 ID 而不是整个指纹?

答案1

您可以使用导入 GPG 密钥rpm --import GPGFILE,然后运行rpmkeys --checksig foo.rpm

答案2

在研究过程中我发现密钥 ID 通常是密钥指纹的最后 8 或 16 个字节。所以我想从输出中提取它们。如何实现这一目标?

我发现以下方法似乎有效:

密钥ID.sh

#! /bin/bash

KEY_PATH=$1
KEY_FINGERPRINT=$(gpg --with-fingerprint ${KEY_PATH} | grep "Key fingerprint" | cut -d "=" -f 2 | tr -d ' ' | tr '[:upper:]' '[:lower:]')

echo ${KEY_FINGERPRINT} | grep -o '.\{8\}$'
echo ${KEY_FINGERPRINT} | grep -o '.\{16\}$'

相关内容