初期秘密鍵/資料鍵からPGP鍵を生成する

初期秘密鍵/資料鍵からPGP鍵を生成する

一部のライブラリでは、次のpgpキーペアを生成できます。

var options = {
    curve: 'secp256k1',
    userId: 'Hamlet <[email protected]>',
    passphrase: 'To be, or not to be: that is the question',
    material: {
      key: privateKey,
      subkey: privateKey
    }
};

openpgp.generateKeyPair(options).then(function(keypair) {
    // success
    var privkey = keypair.privateKeyArmored;
    var pubkey = keypair.publicKeyArmored;
    //.........

つまり、user_id/passphraseに加えて、いくつかの初期秘密鍵/資料が与えられたら、pgpキーを生成または変換できます。

Linuxに付属の標準のgpgユーティリティを使用して同じことを行う方法があるかどうか疑問に思います。 userIdとpassphraseをパラメータとして受け入れることを知っていますが、そのライブラリの「資料」秘密鍵に対応するパラメータをパラメータとして受け入れますか?

それとも、openpgキーペアの生成と同じ結果を得るためのより多くのステップを含める方法はありますか?

答え1

はい。

GNUPGは既存のキーを使用できます。インタラクティブなインターフェイスを使用している場合、メニュー項目を表示するには、「エキスパート」オプションを有効にする必要があります。 GNUPG 2.2.1を使用している場合は、次のような内容が表示されます。

$gpg --expert --full-gen-key

gpg (GnuPG) 2.2.1; Copyright (C) 2017 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
   (7) DSA (set your own capabilities)
   (8) RSA (set your own capabilities)
   (9) ECC and ECC
  (10) ECC (sign only)
  (11) ECC (set your own capabilities)
  (13) Existing key
Your selection? 

既存の PGP キーマテリアルを使用するには、オプション 13 を選択します。スタートキーのキーハンドルを知る必要があります。 GPGで使用される既存のPGPキーの場合:

$gpg --with-keygrip --list-secret-keys [keyid]

私が理解したところによると、これは新機能なので、すべてのバグがまだ解決されていない可能性があります。これがおそらく専門家のメニューに隠されている理由です。私が直接テストしたいくつかの簡単なテストでは、RSAキーでは機能しますが、Curve 25519キーでは動作しないことがわかりました。

関連情報