UNPKG

617 BJavaScriptView Raw
1import { u8aConcat } from '@polkadot/util';
2import { hmacShaAsU8a } from '../../hmac/index.js';
3import { mnemonicToSeedSync } from '../../mnemonic/bip39.js';
4const ED25519_CRYPTO = 'ed25519 seed';
5export function ledgerMaster(mnemonic, password) {
6 const seed = mnemonicToSeedSync(mnemonic, password);
7 const chainCode = hmacShaAsU8a(ED25519_CRYPTO, new Uint8Array([1, ...seed]), 256);
8 let priv;
9 while (!priv || (priv[31] & 32)) {
10 priv = hmacShaAsU8a(ED25519_CRYPTO, priv || seed, 512);
11 }
12 priv[0] &= 248;
13 priv[31] &= 127;
14 priv[31] |= 64;
15 return u8aConcat(priv, chainCode);
16}