UNPKG

@kaiachain/ethers-ext

Version:
71 lines (70 loc) 3.04 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.decryptKeystoreListSync = exports.decryptKeystoreList = void 0; const address_1 = require("@ethersproject/address"); const json_wallets_1 = require("@ethersproject/json-wallets"); const lodash_1 = __importDefault(require("lodash")); const js_ext_core_1 = require("@kaiachain/js-ext-core"); function decryptKIP3(json, password, progressCallback) { const obj = JSON.parse(json); const jsonList = (0, js_ext_core_1.splitKeystoreKIP3)(json); const count = jsonList.length; const accounts = lodash_1.default.map(jsonList, (json, index) => { const result = (0, json_wallets_1.decryptKeystoreSync)(json, password); if (progressCallback) { progressCallback((index + 1) / count); } return result; }); return Promise.resolve({ address: (0, address_1.getAddress)(obj.address), // the address may not coincide with private keys, get directly from the json. privateKey: accounts[0].privateKey, privateKeyList: lodash_1.default.map(accounts, (account) => account.privateKey), }); } function decryptKIP3Sync(json, password) { const obj = JSON.parse(json); const jsonList = (0, js_ext_core_1.splitKeystoreKIP3)(json); const accounts = lodash_1.default.map(jsonList, (json) => { return (0, json_wallets_1.decryptKeystoreSync)(json, password); }); return { address: (0, address_1.getAddress)(obj.address), // the address may not coincide with private keys, get directly from the json. privateKey: accounts[0].privateKey, privateKeyList: lodash_1.default.map(accounts, (account) => account.privateKey), }; } function decryptKeystoreList(json, password, progressCallback) { if ((0, js_ext_core_1.isKIP3Json)(json)) { return decryptKIP3(json, password, progressCallback); } else { // Because ethers decryptJsonWallet is not an async function, // decryptJsonWalletList is not an async function either, hence using 'then'. return (0, json_wallets_1.decryptKeystore)(json, password, progressCallback).then((account) => { return { address: account.address, privateKey: account.privateKey, privateKeyList: [account.privateKey], }; }); } } exports.decryptKeystoreList = decryptKeystoreList; function decryptKeystoreListSync(json, password) { if ((0, js_ext_core_1.isKIP3Json)(json)) { return decryptKIP3Sync(json, password); } else { const account = (0, json_wallets_1.decryptKeystoreSync)(json, password); return { address: account.address, privateKey: account.privateKey, privateKeyList: [account.privateKey], }; } } exports.decryptKeystoreListSync = decryptKeystoreListSync;