PGP公開鍵ブロックからPGP鍵IDを抽出する方法は、CLIツールまたはなんらかのAPIを介してありますか?
バイナリファイルでキーのヘキサ値を見つけましたが、位置はキーの種類/サイズに基づいていると思います。
基本的に、私はbase64形式の公開鍵を持っています。GnuPGでインポートせずに、そこから鍵IDを取得したいと思います。
gpg --dry-run
を使用して、変更を防ぐことができます。
次の行は、その出力にキーIDを出力します(--with-colons
などの通常の修飾子を使用して、さらに処理するために変更できます)。 A4FF2279
はここのキーIDです。
$ gpg --dry-run --import pubkey.asc
gpg: key A4FF2279: public key "[User ID not found]" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
gpg: no ultimately trusted keys found
試してみましたが、キーがキーチェーンに保存されませんでしたが、キーIDが出力されました。ただし、--dry-run
には注意してください。manページには警告があります。
--dry-run Don't make any changes (this is not completely implemented).
人間が読める、機械が読める、GnuPGの異なるバージョンの非常に技術的な出力の複数のバリアントに関するより詳細な説明は、 Stack Overflowの質問にありますgpgの表示方法インポートせずに重要な詳細情報を入力しますか? 。それらのすべてがキーIDも提示します。
gpg --with-fingerprint GPG-KEY-filename-that-you-downloaded-from-internet
例えば :
wget https://artifacts.elastic.co/GPG-KEY-elasticsearch
gpg --with-fingerprint GPG-KEY-elasticsearch
Jens Eratの回答で述べられている「完全に実装されていない」問題を回避するには、一時ディレクトリでgpg --homedir
を使用します。プラットフォームに応じて、mktemp
コマンドを変更する必要がある場合があります。
gpg --homedir $( mktemp -d -t '' ) --import /tmp/somekey.asc
Gpgマニュアル(gpg(GnuPG)2.2.11)から:
--show-keys
このコマンドは、OpenPGPキーを入力として受け取り、ローカルに保存されたキーに対してコマンド--list-keysが行うのと同じ方法で、それらに関する情報を出力します。さらに、リストオプションshow-unusable-uids、show-unusable-subkeys、show-notations、show-policy-urlsも有効になります。自動処理の場合と同様に、このコマンドはオプション--with-colonsと組み合わせる必要があります。
例えば:
$ gpg --show-keys docker-ce.gpg pub rsa4096 2017-02-22 [SCEA] 9DC858229FC7DD38854AE2D88D81803C0EBFCD88 uid Docker Release (CE deb) <[email protected]> sub rsa4096 2017-02-22 [S]
ここで、9DC858229FC7DD38854AE2D88D81803C0EBFCD88はキーIDです。
公開鍵がインポートされた後
pgp --import PublicKeyToImport.asc
走る
pgp --list-userids
--encrypt
で使用するキーまたはユーザーIDを決定します。
Alg Type Size/Type Flags Key ID User ID
---- ---- --------- ------- ---------- -------