ethers.js/packages/json-wallets/src.ts/index.ts

54 lines
1.6 KiB
TypeScript
Raw Permalink Normal View History

2019-05-14 18:25:46 -04:00
"use strict";
import { Bytes } from "@ethersproject/bytes";
import { ExternallyOwnedAccount } from "@ethersproject/abstract-signer";
import { decrypt as decryptCrowdsale } from "./crowdsale";
import { getJsonWalletAddress, isCrowdsaleWallet, isKeystoreWallet } from "./inspect";
import { decrypt as decryptKeystore, decryptSync as decryptKeystoreSync, encrypt as encryptKeystore, EncryptOptions, ProgressCallback } from "./keystore";
2019-05-14 18:25:46 -04:00
function decryptJsonWallet(json: string, password: Bytes | string, progressCallback?: ProgressCallback): Promise<ExternallyOwnedAccount> {
if (isCrowdsaleWallet(json)) {
if (progressCallback) { progressCallback(0); }
const account = decryptCrowdsale(json, password)
2019-05-14 18:25:46 -04:00
if (progressCallback) { progressCallback(1); }
return Promise.resolve(account);
}
if (isKeystoreWallet(json)) {
return decryptKeystore(json, password, progressCallback);
}
return Promise.reject(new Error("invalid JSON wallet"));
}
function decryptJsonWalletSync(json: string, password: Bytes | string): ExternallyOwnedAccount {
if (isCrowdsaleWallet(json)) {
return decryptCrowdsale(json, password)
}
if (isKeystoreWallet(json)) {
return decryptKeystoreSync(json, password);
}
throw new Error("invalid JSON wallet");
}
2019-05-14 18:25:46 -04:00
export {
decryptCrowdsale,
decryptKeystore,
decryptKeystoreSync,
2019-05-14 18:25:46 -04:00
encryptKeystore,
isCrowdsaleWallet,
isKeystoreWallet,
getJsonWalletAddress,
decryptJsonWallet,
decryptJsonWalletSync,
2019-05-14 18:25:46 -04:00
ProgressCallback,
EncryptOptions,
};