@kaiachain/ethers-ext
Version:
ethers.js extension for kaia blockchain
71 lines (70 loc) • 3.04 kB
JavaScript
;
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;