UNPKG

1.77 kBJavaScriptView Raw
1var inquirer = require("inquirer");
2var cryptoLib = require("../lib/crypto.js");
3var accountHelper = require("../helpers/account.js");
4
5function 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
34function 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
62module.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