mirror of
https://github.com/nbd-wtf/nostr-tools.git
synced 2025-12-08 16:28:49 +00:00
28 lines
855 B
TypeScript
28 lines
855 B
TypeScript
import * as secp256k1 from '@noble/secp256k1'
|
|
import {wordlist} from '@scure/bip39/wordlists/english.js'
|
|
import {
|
|
generateMnemonic,
|
|
mnemonicToSeedSync,
|
|
validateMnemonic
|
|
} from '@scure/bip39'
|
|
import {HDKey} from '@scure/bip32'
|
|
|
|
export function privateKeyFromSeed(seed: string): string {
|
|
let root = HDKey.fromMasterSeed(secp256k1.utils.hexToBytes(seed))
|
|
let privateKey = root.derive(`m/44'/1237'/0'/0/0`).privateKey
|
|
if (!privateKey) throw new Error('could not derive private key')
|
|
return secp256k1.utils.bytesToHex(privateKey)
|
|
}
|
|
|
|
export function seedFromWords(mnemonic: string): string {
|
|
return secp256k1.utils.bytesToHex(mnemonicToSeedSync(mnemonic))
|
|
}
|
|
|
|
export function generateSeedWords(): string {
|
|
return generateMnemonic(wordlist)
|
|
}
|
|
|
|
export function validateWords(words: string): boolean {
|
|
return validateMnemonic(words, wordlist)
|
|
}
|