Я пытаюсь подписать биткойн-транзакцию на С #. У меня есть 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();
}