UNPKG

@neo-one/server-plugin-wallet

Version:

NEO•ONE Server wallet plugin.

90 lines (88 loc) 11.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const client_common_1 = require("@neo-one/client-common"); const server_plugin_1 = require("@neo-one/server-plugin"); const server_plugin_network_1 = require("@neo-one/server-plugin-network"); const constants_1 = require("../../constants"); const common_1 = require("./common"); const ENCRYPT_MESSAGE = 'Enter a password to encrypt your private key: '; class CreateWalletCRUD extends server_plugin_1.CreateCRUD { constructor({ resourceType }) { super({ resourceType, options: common_1.common.options.concat([ { option: '-p, --private-key <WIF>', description: 'Private Key to create the wallet with. If a private key is not ' + 'provided, one will be generated automatically', }, ]), }); } async getCLIName(options) { return common_1.common.getCLIName(options); } async getCLIAutocompleteResourceOptions({ cli }) { return common_1.common.getCLIResourceOptions({ cli, args: {}, options: {} }); } async getCLIResourceOptions(optionsIn) { const { cli, options } = optionsIn; const { network } = await common_1.common.getCLIResourceOptions(optionsIn); let password; const wif = options['private-key']; let privateKey; if (wif == undefined && network === server_plugin_network_1.constants.NETWORK_NAME.MAIN) { password = await common_1.common.promptPassword({ cli, prompt: ENCRYPT_MESSAGE, }); } else if (wif != undefined) { let valid = false; try { privateKey = client_common_1.wifToPrivateKey(wif); valid = true; } catch (_a) { valid = false; } if (valid) { if (network === server_plugin_network_1.constants.NETWORK_NAME.MAIN) { password = await common_1.common.promptPassword({ cli, prompt: ENCRYPT_MESSAGE, }); } } else if (client_common_1.isNEP2(wif)) { password = await common_1.common.promptPassword({ cli, prompt: 'Enter password: ', }); privateKey = await client_common_1.decryptNEP2({ encryptedKey: wif, password, }); } else { if (network === server_plugin_network_1.constants.NETWORK_NAME.MAIN) { throw new Error('Invalid private key. Please provide a private key or ' + 'NEP2 encrypted key.'); } throw new Error('Invalid private key. Please provide a valid private key or ' + 'NEP2 encrypted key, or do not provide one at all and one will ' + 'be generated automatically (recommended).'); } } return { network, password, privateKey }; } async postExecCLI({ name, cli, options }) { const { name: originalName, network } = constants_1.constants.extractWallet(name); let command = `open wallet ${originalName} --network ${network}`; if (options.password !== undefined) { command += ` --password ${options.password}`; } await cli.exec(command); } } exports.CreateWalletCRUD = CreateWalletCRUD; //# sourceMappingURL=data:application/json;charset=utf8;base64,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RCxnRUFBZ0U7b0JBQ2hFLDJDQUEyQyxDQUM5QyxDQUFDO2FBQ0g7U0FDRjtRQUVELE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFTSxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQXlDO1FBQ3BGLE1BQU0sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxHQUFHLHFCQUFTLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RFLElBQUksT0FBTyxHQUFHLGVBQWUsWUFBWSxjQUFjLE9BQU8sRUFBRSxDQUFDO1FBQ2pFLElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUU7WUFDbEMsT0FBTyxJQUFJLGVBQWUsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQzlDO1FBQ0QsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFCLENBQUM7Q0FDRjtBQW5GRCw0Q0FtRkMiLCJmaWxlIjoibmVvLW9uZS1zZXJ2ZXItcGx1Z2luLXdhbGxldC9zcmMvY3J1ZC93YWxsZXQvQ3JlYXRlV2FsbGV0Q1JVRC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlY3J5cHRORVAyLCBpc05FUDIsIHdpZlRvUHJpdmF0ZUtleSB9IGZyb20gJ0BuZW8tb25lL2NsaWVudC1jb21tb24nO1xuaW1wb3J0IHtcbiAgQ3JlYXRlQ1JVRCxcbiAgRXhlY0NMSU9wdGlvbnMsXG4gIEdldENMSUF1dG9jb21wbGV0ZU9wdGlvbnMsXG4gIEdldENMSU5hbWVPcHRpb25zLFxuICBHZXRDTElSZXNvdXJjZU9wdGlvbnMsXG59IGZyb20gJ0BuZW8tb25lL3NlcnZlci1wbHVnaW4nO1xuaW1wb3J0IHsgY29uc3RhbnRzIGFzIG5ldHdvcmtDb25zdGFudHMgfSBmcm9tICdAbmVvLW9uZS9zZXJ2ZXItcGx1Z2luLW5ldHdvcmsnO1xuaW1wb3J0IHsgY29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFdhbGxldCwgV2FsbGV0UmVzb3VyY2VPcHRpb25zLCBXYWxsZXRSZXNvdXJjZVR5cGUgfSBmcm9tICcuLi8uLi9XYWxsZXRSZXNvdXJjZVR5cGUnO1xuaW1wb3J0IHsgY29tbW9uIH0gZnJvbSAnLi9jb21tb24nO1xuXG5jb25zdCBFTkNSWVBUX01FU1NBR0UgPSAnRW50ZXIgYSBwYXNzd29yZCB0byBlbmNyeXB0IHlvdXIgcHJpdmF0ZSBrZXk6ICc7XG5cbmV4cG9ydCBjbGFzcyBDcmVhdGVXYWxsZXRDUlVEIGV4dGVuZHMgQ3JlYXRlQ1JVRDxXYWxsZXQsIFdhbGxldFJlc291cmNlT3B0aW9ucz4ge1xuICBwdWJsaWMgY29uc3RydWN0b3IoeyByZXNvdXJjZVR5cGUgfTogeyByZWFkb25seSByZXNvdXJjZVR5cGU6IFdhbGxldFJlc291cmNlVHlwZSB9KSB7XG4gICAgc3VwZXIoe1xuICAgICAgcmVzb3VyY2VUeXBlLFxuICAgICAgb3B0aW9uczogY29tbW9uLm9wdGlvbnMuY29uY2F0KFtcbiAgICAgICAge1xuICAgICAgICAgIG9wdGlvbjogJy1wLCAtLXByaXZhdGUta2V5IDxXSUY+JyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICdQcml2YXRlIEtleSB0byBjcmVhdGUgdGhlIHdhbGxldCB3aXRoLiBJZiBhIHByaXZhdGUga2V5IGlzIG5vdCAnICtcbiAgICAgICAgICAgICdwcm92aWRlZCwgb25lIHdpbGwgYmUgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHknLFxuICAgICAgICB9LFxuICAgICAgXSksXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q0xJTmFtZShvcHRpb25zOiBHZXRDTElOYW1lT3B0aW9uczxXYWxsZXRSZXNvdXJjZU9wdGlvbnM+KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gY29tbW9uLmdldENMSU5hbWUob3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q0xJQXV0b2NvbXBsZXRlUmVzb3VyY2VPcHRpb25zKHsgY2xpIH06IEdldENMSUF1dG9jb21wbGV0ZU9wdGlvbnMpOiBQcm9taXNlPFdhbGxldFJlc291cmNlT3B0aW9ucz4ge1xuICAgIHJldHVybiBjb21tb24uZ2V0Q0xJUmVzb3VyY2VPcHRpb25zKHsgY2xpLCBhcmdzOiB7fSwgb3B0aW9uczoge30gfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q0xJUmVzb3VyY2VPcHRpb25zKG9wdGlvbnNJbjogR2V0Q0xJUmVzb3VyY2VPcHRpb25zKTogUHJvbWlzZTxXYWxsZXRSZXNvdXJjZU9wdGlvbnM+IHtcbiAgICBjb25zdCB7IGNsaSwgb3B0aW9ucyB9ID0gb3B0aW9uc0luO1xuICAgIGNvbnN0IHsgbmV0d29yayB9ID0gYXdhaXQgY29tbW9uLmdldENMSVJlc291cmNlT3B0aW9ucyhvcHRpb25zSW4pO1xuICAgIGxldCBwYXNzd29yZDtcbiAgICBjb25zdCB3aWYgPSBvcHRpb25zWydwcml2YXRlLWtleSddO1xuICAgIGxldCBwcml2YXRlS2V5O1xuICAgIGlmICh3aWYgPT0gdW5kZWZpbmVkICYmIG5ldHdvcmsgPT09IG5ldHdvcmtDb25zdGFudHMuTkVUV09SS19OQU1FLk1BSU4pIHtcbiAgICAgIHBhc3N3b3JkID0gYXdhaXQgY29tbW9uLnByb21wdFBhc3N3b3JkKHtcbiAgICAgICAgY2xpLFxuICAgICAgICBwcm9tcHQ6IEVOQ1JZUFRfTUVTU0FHRSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAod2lmICE9IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IHZhbGlkID0gZmFsc2U7XG4gICAgICB0cnkge1xuICAgICAgICBwcml2YXRlS2V5ID0gd2lmVG9Qcml2YXRlS2V5KHdpZik7XG4gICAgICAgIHZhbGlkID0gdHJ1ZTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICB2YWxpZCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsaWQpIHtcbiAgICAgICAgaWYgKG5ldHdvcmsgPT09IG5ldHdvcmtDb25zdGFudHMuTkVUV09SS19OQU1FLk1BSU4pIHtcbiAgICAgICAgICBwYXNzd29yZCA9IGF3YWl0IGNvbW1vbi5wcm9tcHRQYXNzd29yZCh7XG4gICAgICAgICAgICBjbGksXG4gICAgICAgICAgICBwcm9tcHQ6IEVOQ1JZUFRfTUVTU0FHRSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpc05FUDIod2lmKSkge1xuICAgICAgICBwYXNzd29yZCA9IGF3YWl0IGNvbW1vbi5wcm9tcHRQYXNzd29yZCh7XG4gICAgICAgICAgY2xpLFxuICAgICAgICAgIHByb21wdDogJ0VudGVyIHBhc3N3b3JkOiAnLFxuICAgICAgICB9KTtcblxuICAgICAgICBwcml2YXRlS2V5ID0gYXdhaXQgZGVjcnlwdE5FUDIoe1xuICAgICAgICAgIGVuY3J5cHRlZEtleTogd2lmLFxuICAgICAgICAgIHBhc3N3b3JkLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChuZXR3b3JrID09PSBuZXR3b3JrQ29uc3RhbnRzLk5FVFdPUktfTkFNRS5NQUlOKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHByaXZhdGUga2V5LiBQbGVhc2UgcHJvdmlkZSBhIHByaXZhdGUga2V5IG9yICcgKyAnTkVQMiBlbmNyeXB0ZWQga2V5LicpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnSW52YWxpZCBwcml2YXRlIGtleS4gUGxlYXNlIHByb3ZpZGUgYSB2YWxpZCBwcml2YXRlIGtleSBvciAnICtcbiAgICAgICAgICAgICdORVAyIGVuY3J5cHRlZCBrZXksIG9yIGRvIG5vdCBwcm92aWRlIG9uZSBhdCBhbGwgYW5kIG9uZSB3aWxsICcgK1xuICAgICAgICAgICAgJ2JlIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IChyZWNvbW1lbmRlZCkuJyxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBuZXR3b3JrLCBwYXNzd29yZCwgcHJpdmF0ZUtleSB9O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBvc3RFeGVjQ0xJKHsgbmFtZSwgY2xpLCBvcHRpb25zIH06IEV4ZWNDTElPcHRpb25zPFdhbGxldFJlc291cmNlT3B0aW9ucz4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IG5hbWU6IG9yaWdpbmFsTmFtZSwgbmV0d29yayB9ID0gY29uc3RhbnRzLmV4dHJhY3RXYWxsZXQobmFtZSk7XG4gICAgbGV0IGNvbW1hbmQgPSBgb3BlbiB3YWxsZXQgJHtvcmlnaW5hbE5hbWV9IC0tbmV0d29yayAke25ldHdvcmt9YDtcbiAgICBpZiAob3B0aW9ucy5wYXNzd29yZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb21tYW5kICs9IGAgLS1wYXNzd29yZCAke29wdGlvbnMucGFzc3dvcmR9YDtcbiAgICB9XG4gICAgYXdhaXQgY2xpLmV4ZWMoY29tbWFuZCk7XG4gIH1cbn1cbiJdfQ==