Rpm

將 RPM 包的密鑰 ID 與 RPM-GPG-KEY 的密鑰指紋進行比較

  • August 30, 2019

在使用 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

由於比較兩個輸出並不容易,如何獲得提到的 Key ID 而不是整個指紋?

在研究過程中,我發現密鑰 ID 通常是密鑰指紋的最後 8 或 16 個字節。所以我想從輸出中提取它們。如何做到這一點?

我發現以下似乎可行的方法:

keyID.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\}$'

您可以使用導入 GPG 密鑰rpm --import GPGFILE,然後執行rpmkeys --checksig foo.rpm

引用自:https://unix.stackexchange.com/questions/537795