mirror of
https://github.com/pezkuwichain/pezkuwi-common.git
synced 2026-04-22 04:27:59 +00:00
18 lines
802 B
JavaScript
18 lines
802 B
JavaScript
import { stringToU8a } from '@pezkuwi/util';
|
|
import { bip39ToMiniSecret, isReady } from '@pezkuwi/wasm-crypto';
|
|
import { pbkdf2Encode } from '../pbkdf2/index.js';
|
|
import { mnemonicToEntropy } from './toEntropy.js';
|
|
import { mnemonicValidate } from './validate.js';
|
|
export function mnemonicToMiniSecret(mnemonic, password = '', wordlist, onlyJs) {
|
|
if (!mnemonicValidate(mnemonic, wordlist, onlyJs)) {
|
|
throw new Error('Invalid bip39 mnemonic specified');
|
|
}
|
|
else if (!wordlist && !onlyJs && isReady()) {
|
|
return bip39ToMiniSecret(mnemonic, password);
|
|
}
|
|
const entropy = mnemonicToEntropy(mnemonic, wordlist);
|
|
const salt = stringToU8a(`mnemonic${password}`);
|
|
// return the first 32 bytes as the seed
|
|
return pbkdf2Encode(entropy, salt).password.slice(0, 32);
|
|
}
|