SpongyCastle を使用して PGP キーをインポートし、それを使用して復号化できることを確認したら、キーリングを保護するためにパスワードを追加したいと考えています。したがって、暗号化されたコピーを作成します。
secretKeyRing = PGPSecretKeyRing.copyWithNewPassword(secretKeyRing, new char[] {},
newPassPhrase.toCharArray(), PGPEncryptedData.CAST5,
new SecureRandom(), new BouncyCastleProvider());
次のコマンドで復号化をテストします。
testKey = secretKeyRing.getSecretKey().extractPrivateKey(newPassPhrase.toCharArray(), new BouncyCastleProvider());
これはどうやらうまくいきます。
同じパスワードを使用して、この暗号化されたキーでファイルを復号化しようとすると:
PGPPrivateKey testKey = secretKey.extractPrivateKey(passPhrase.toCharArray(),
new BouncyCastleProvider());
ここで、secretKey はキーリングのマスター キーです。PGPException というメッセージが表示されます。
Exception constructing key
明らかな何かが欠けているように感じます。詳しくはお気軽にお尋ねください。
これは私が構築しているカスタム pgp アプリ上にあり、1 つの秘密鍵をインポートするだけでよいため、マスター キーが唯一の鍵であることがわかります。