C# でビットコイン トランザクションに署名しようとしています。完成させようとしているコードが 2 ビットあります。Bouncy Castle を使用して秘密鍵と公開鍵のセットを作成できます。これをウォレットのインポート形式に変換できます。
ECDSA 公開鍵からビットコイン アドレスを生成することもできます。
ただし、トランザクションに署名したいのですが、持っているのは自分の秘密鍵だけです。ウォレットにインポートして署名する必要はありません。では、秘密鍵だけが与えられた場合、どうすれば公開鍵を生成できますか?
これを行うJavaScriptメソッドを見つけました:
ecparams.getG().multiply(this.priv).getEncoded();
私が Bouncy Castle で見た唯一の方法は、ランダムなペアを生成することです。
private static AsymmetricCipherKeyPair GenerateKeys(int keySize)
{
ECKeyPairGenerator gen = new ECKeyPairGenerator();
SecureRandom secureRandom = new SecureRandom();
KeyGenerationParameters keyGenParam = new KeyGenerationParameters(secureRandom, keySize);
gen.Init(keyGenParam);
return gen.GenerateKeyPair();
}