1 | var inquirer = require("inquirer");
|
2 | var cryptoLib = require("../lib/crypto.js");
|
3 | var accountHelper = require("../helpers/account.js");
|
4 |
|
5 | function genPubkey() {
|
6 | inquirer.prompt([
|
7 | {
|
8 | type: "password",
|
9 | name: "secret",
|
10 | message: "Enter secret of your testnet account",
|
11 | validate: function (value) {
|
12 | var done = this.async();
|
13 |
|
14 | if (value.length == 0) {
|
15 | done("Secret is too short, minimum is 1 character");
|
16 | return;
|
17 | }
|
18 |
|
19 | if (value.length > 100) {
|
20 | done("Secret is too long, maximum is 100 characters");
|
21 | return;
|
22 | }
|
23 |
|
24 | done(true);
|
25 | }
|
26 | }
|
27 | ], function (result) {
|
28 | var account = accountHelper.account(result.secret.trim());
|
29 | console.log("Public key: " + account.keypair.publicKey);
|
30 | console.log("Address: " + account.address);
|
31 | });
|
32 | }
|
33 |
|
34 | function genAccount() {
|
35 | inquirer.prompt([
|
36 | {
|
37 | type: "input",
|
38 | name: "amount",
|
39 | message: "Enter number of accounts to generate",
|
40 | validate: function (value) {
|
41 | var num = parseInt(value);
|
42 | return !isNaN(num);
|
43 | }
|
44 | }
|
45 | ], function (result) {
|
46 | var n = parseInt(result.amount);
|
47 | var accounts = [];
|
48 |
|
49 | for (var i = 0; i < n; i++) {
|
50 | var a = accountHelper.account(cryptoLib.generateSecret());
|
51 | accounts.push({
|
52 | address: a.address,
|
53 | secret: a.secret,
|
54 | publicKey: a.keypair.publicKey
|
55 | });
|
56 | }
|
57 | console.log(accounts);
|
58 | console.log("Done");
|
59 | });
|
60 | }
|
61 |
|
62 | module.exports = function (program) {
|
63 | program
|
64 | .command("crypto")
|
65 | .description("crypto operations")
|
66 | .option("-p, --pubkey", "generate public key from secret")
|
67 | .option("-g, --generate", "generate random accounts")
|
68 | .action(function (options) {
|
69 | if (options.pubkey) {
|
70 | genPubkey();
|
71 | } else if (options.generate) {
|
72 | genAccount();
|
73 | } else {
|
74 | console.log("'node crypto -h' to get help");
|
75 | }
|
76 | });
|
77 | } |
\ | No newline at end of file |