@polkadot/util-crypto
Version:
A collection of useful crypto utilities for @polkadot
21 lines (20 loc) • 805 B
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.ledgerMaster = void 0;
const util_1 = require("@polkadot/util");
const index_js_1 = require("../../hmac/index.js");
const bip39_js_1 = require("../../mnemonic/bip39.js");
const ED25519_CRYPTO = 'ed25519 seed';
function ledgerMaster(mnemonic, password) {
const seed = (0, bip39_js_1.mnemonicToSeedSync)(mnemonic, password);
const chainCode = (0, index_js_1.hmacShaAsU8a)(ED25519_CRYPTO, new Uint8Array([1, ...seed]), 256);
let priv;
while (!priv || (priv[31] & 32)) {
priv = (0, index_js_1.hmacShaAsU8a)(ED25519_CRYPTO, priv || seed, 512);
}
priv[0] &= 248;
priv[31] &= 127;
priv[31] |= 64;
return (0, util_1.u8aConcat)(priv, chainCode);
}
exports.ledgerMaster = ledgerMaster;
;