Я пытаюсь создать пару ключей Ethereum в JavaScript.
Для этого я тестирую несколько алгоритмов ECDSA / Keccak256 для получения открытого ключа из закрытого ключа. Самый многообещающий, который я нашел (зная ограничение, которое я хочу избежать псевдослучайным только для закрытого ключа), это: https://github.com/bitchan/eccrypto
Мне удалось сгенерировать закрытый ключ и получить открытый ключ, используя две функции библиотеки:
const privateKey2 = eccrypto.generatePrivate();
console.log(privateKey2);
const publicKey = eccrypto.getPublic(privateKey2);
console.log(publicKey);
Однако всякий раз, когда я пытаюсь использовать getPublic для privateKey, который не был сгенерирован eccrypto непосредственно ранее, eccrypto.getPublic не будет работать и будет отклонен с ошибкой Bad private key
.
Самое странное, что даже когда я копирую сгенерированный закрытый ключ с помощью eccrypto и пытаюсь передать его eccrypto.getPublic()
(жестко запрограммированный), я получаю ту же ошибку:
const TypedTable = new Uint8Array([
235,
78,
133,
244,
5,
163,
18,
32,
218,
162,
173,
132,
214,
16,
57,
100,
122,
48,
167,
30,
203,
69,
52,
48,
30,
99,
20,
32,
249,
210,
140,
48
]);
const publicKey = eccrypto.getPublic(TypedTable);
Это очень специфическая проблема, но если у кого-то есть решение, оно мне действительно поможет!