28 lines
667 B
JavaScript
28 lines
667 B
JavaScript
import {
|
|
generateMnemonic as generateMnemonic_bip39,
|
|
mnemonicToSeed,
|
|
} from "web-bip39";
|
|
import wordlist from "web-bip39/wordlists/english";
|
|
import elliptic from "elliptic";
|
|
|
|
const MNEMONIC_STRENGTH = 192;
|
|
const CURVE = "curve25519"
|
|
|
|
export async function generateKeyPair(mnemonic) {
|
|
const seed = (await mnemonicToSeed(mnemonic)).toString("hex");
|
|
|
|
const ec = new elliptic.ec(CURVE);
|
|
const keyPair = ec.genKeyPair({
|
|
entropy: seed.slice(0, 32),
|
|
});
|
|
|
|
return {
|
|
publicKey: keyPair.getPublic("hex"),
|
|
privateKey: keyPair.getPrivate("hex"),
|
|
}
|
|
}
|
|
|
|
export function generateMnemonic() {
|
|
return generateMnemonic_bip39(wordlist, MNEMONIC_STRENGTH);
|
|
}
|