gpg2 - スクリプトを使用して指紋を取得する

gpg2 - スクリプトを使用して指紋を取得する

GPG2キーから指紋を抽出しようとしています。これにより、pass init $GPG2_FINGERPRINT初期化のために指紋が渡されます。

次の例では、指紋の値が必要です0126E6FFD15E33B8BCE7B748E79142F98581FC60

$ gpg2 --list-signatures
pub   rsa2048 2021-10-14 [SCEA]
      0126E6FFD15E33B8BCE7B748E79142F98581FC60
uid           [ unknown] User 1 (User 1) <[email protected]>
sig 3        E79142F98581FC60 2021-10-14  User 1 (User 1) <[email protected]>
sub   rsa2048 2021-10-14 [SEA]
sig          E79142F98581FC60 2021-10-14  User 1 (User 1) <[email protected]>

サブキーを使用しても指紋が返されます--with-colons。サブ情報なしでクリーンな出力を取得するには?

省略し--list-keysて使用すると--with-fingerprint非常に近づきます...警告が表示されると予想しますgpg: WARNING: no command supplied. Trying to guess what you mean。クリーンな出力を得るために警告をリダイレクトできますが、正しいコマンドを使用したいと思います。

これを行う方法は他にありますか?究極の目標は、passスクリプトを介してGPGキーを設定することです(ユーザー対話なし)。

$ gpg2 --with-fingerprint --with-colons ./pubring.kbx
gpg: WARNING: no command supplied.  Trying to guess what you mean ...
pub:-:2048:1:E79142F98581FC60:1634220843:::-:
fpr:::::::::0126E6FFD15E33B8BCE7B748E79142F98581FC60:
uid:::::::::User 1 (User 1) <[email protected]>:
sub:-:2048:1:213A9C4C15D3AAA9:1634220843::::

答え1

サブキーを使用しても指紋が返されます--with-colons

このオプションは、--with-colonsマシンが解析できる形式で出力をエクスポートするため、正しい選択です。

サブ情報なしでクリーンな出力を取得するには?

私はこれをに配管することを提案しますawk。出力--with-colonsは正規化され、各行はフィールド1のデータ型を持ちます。データ型を持つすべての行はpub公開鍵(サブキーとは反対)を表し、後続の行(データ型fpr)にはフィールド10の指紋文字列が含まれます。

awkこれにより、「pub:」で始まる行をスキャンし、後続の行でフィールド10の指紋を処理することで、出力の解析が簡単になります。

たとえば、以下はキーリングのすべての公開鍵指紋を印刷します。

gpg --with-colons -k | awk -F: '/^pub:.*/ { getline; print $10}'

関連情報