@piggly/secrets 0.8.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,12 +4,17 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.generateAES256SecretCommand = generateAES256SecretCommand;
7
+ exports.generateMnemonicSecretCommand = generateMnemonicSecretCommand;
7
8
  exports.recoverAES256SecretCommand = recoverAES256SecretCommand;
9
+ var _nodeFs = require("node:fs");
10
+ var _nodePath = _interopRequireDefault(require("node:path"));
8
11
  var _chalk = _interopRequireDefault(require("chalk"));
9
12
  var _index = require("../../../utils/index.js");
10
13
  var _index2 = require("../../../core/index.js");
14
+ var aes = _interopRequireWildcard(require("../../../core/secrets/aes256.js"));
11
15
  var _indexes = require("../../../utils/indexes.js");
12
16
  var _file = require("../../../utils/file.js");
17
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
13
18
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
19
  /* eslint-disable no-console */
15
20
 
@@ -102,4 +107,84 @@ function recoverAES256SecretCommand(program) {
102
107
  return process.exit(0);
103
108
  });
104
109
  }
105
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2hhbGsiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9pbmRleCIsIl9pbmRleDIiLCJfaW5kZXhlcyIsIl9maWxlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiZ2VuZXJhdGVBRVMyNTZTZWNyZXRDb21tYW5kIiwicHJvZ3JhbSIsImNvbW1hbmQiLCJkZXNjcmlwdGlvbiIsImFyZ3VtZW50Iiwib3B0aW9uIiwiYWN0aW9uIiwibiIsIm9wIiwidmVyc2lvbiIsInBhcnNlSW50Iiwia2V5X25hbWUiLCJwYXJzZUZpbGVOYW1lIiwiaW5kZXhfbmFtZSIsImluZGV4IiwidW5kZWZpbmVkIiwiYWJzcGF0aCIsInBhcnNlQWJzcGF0aCIsInByb2Nlc3MiLCJjd2QiLCJwYXRoIiwiZXhpc3RzIiwiRXJyb3IiLCJnZW5lcmF0ZWQiLCJnZW5lcmF0ZVNlY3JldCIsIm1uZW1vbmljIiwibGFuZ3VhZ2UiLCJzdHJlbmd0aCIsInNlZWQiLCJwYXNzd29yZCIsImNvbnNvbGUiLCJsb2ciLCJjaGFsayIsImdyZWVuIiwiZmlsZXMiLCJmaWxlIiwieWVsbG93IiwiZXJyb3IiLCJyZWQiLCJtZXNzYWdlIiwiZXhpdCIsInJlY292ZXJBRVMyNTZTZWNyZXRDb21tYW5kIiwidiIsInJlbW92ZSIsInJlY292ZXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYmluL2NvbW1hbmRzL3NlY3JldHMvYWVzMjU2LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcblxuaW1wb3J0IHsgcGFyc2VGaWxlTmFtZSwgcGFyc2VBYnNwYXRoLCBtbmVtb25pYyB9IGZyb20gJ0AvdXRpbHMvaW5kZXguanMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVTZWNyZXQgfSBmcm9tICdAL2NvcmUvaW5kZXguanMnO1xuaW1wb3J0IHsgcmVtb3ZlIH0gZnJvbSAnQC91dGlscy9pbmRleGVzLmpzJztcbmltcG9ydCB7IGV4aXN0cyB9IGZyb20gJ0AvdXRpbHMvZmlsZS5qcyc7XG5cbi8qKlxuICogR2VuZXJhdGUgYSBzZWNyZXQgYmFzZWQgb24gYSBtbmVtb25pYyBwaHJhc2UuIEl0IHNob3VsZCBiZSB1c2VkIHdpdGggYWVzMjU2XG4gKiBhbGdvcml0aG0uXG4gKlxuICogQHBhcmFtIHByb2dyYW0gLSBUaGUgcHJvZ3JhbSB0byBhZGQgdGhlIGNvbW1hbmQgdG8uXG4gKiBAcmV0dXJucyBUaGUgcHJvZ3JhbS5cbiAqIEBzaW5jZSAxLjAuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQUVTMjU2U2VjcmV0Q29tbWFuZChwcm9ncmFtOiBDb21tYW5kKSB7XG5cdHByb2dyYW1cblx0XHQuY29tbWFuZCgnZ2VuZXJhdGU6YWVzMjU2Jylcblx0XHQuZGVzY3JpcHRpb24oXG5cdFx0XHQnR2VuZXJhdGVzIGEgc2VjcmV0IGJhc2VkIG9uIGEgbW5lbW9uaWMgcGhyYXNlLiBJdCBzaG91bGQgYmUgdXNlZCB3aXRoIGFlczI1NiBhbGdvcml0aG0uJyxcblx0XHQpXG5cdFx0LmFyZ3VtZW50KCc8bmFtZT4nLCAnTmFtZSBvZiB0aGUga2V5LicpXG5cdFx0Lm9wdGlvbignLXAsIC0tcGF0aCA8cGF0aD4nLCAnUGF0aCB0byBzYXZlIHRoZSBrZXkuJylcblx0XHQub3B0aW9uKCctdywgLS1wYXNzd29yZCA8cGFzc3dvcmQ+JywgJ1Bhc3N3b3JkIGZvciBzZWVkIGdlbmVyYXRpb24uJylcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy1sLCAtLWxhbmd1YWdlIDxsYW5ndWFnZT4nLFxuXHRcdFx0J0xhbmd1YWdlIG9mIG1uZW1vbmljLiBPbmx5IGVuZ2xpc2ggaXMgYXZhaWxhYmxlLicsXG5cdFx0XHQnZW5nbGlzaCcsXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLXMsIC0tc3RyZW5ndGggPHN0cmVuZ3RoPicsXG5cdFx0XHQnU3RyZW5ndGggb2YgbW5lbW9uaWMuIERlZmF1bHQgaXMgMTI4LicsXG5cdFx0XHQnMTI4Jyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctdiwgLS12ZXJzaW9uIDx2ZXJzaW9uPicsXG5cdFx0XHQnVmVyc2lvbiBvZiB0aGUga2V5LiBTaG91bGQgYmUgYW4gaW50ZWdlci4gRGVmYXVsdCBpcyAxLicsXG5cdFx0XHQnMScsXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLXgsIC0taW5kZXggPGluZGV4PicsXG5cdFx0XHQnSW5kZXggbmFtZS4gV2lsbCBzdG9yZSB0aGUga2V5IGluIGEgSlNPTiBpbmRleC4gSWYgbm90IHByb3ZpZGVkLCBpbmRleCB3aWxsIG5vdCBiZSBjcmVhdGVkLicsXG5cdFx0KVxuXHRcdC5hY3Rpb24oYXN5bmMgKG4sIG9wKSA9PiB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCB2ZXJzaW9uID0gcGFyc2VJbnQob3AudmVyc2lvbiwgMTApO1xuXHRcdFx0XHRjb25zdCBrZXlfbmFtZSA9IHBhcnNlRmlsZU5hbWUobik7XG5cdFx0XHRcdGNvbnN0IGluZGV4X25hbWUgPSBvcC5pbmRleCA/IHBhcnNlRmlsZU5hbWUob3AuaW5kZXgpIDogdW5kZWZpbmVkO1xuXHRcdFx0XHRjb25zdCBhYnNwYXRoID0gcGFyc2VBYnNwYXRoKHByb2Nlc3MuY3dkKCksIG9wLnBhdGgpO1xuXG5cdFx0XHRcdGlmIChleGlzdHMoYWJzcGF0aCkgPT09IGZhbHNlKSB7XG5cdFx0XHRcdFx0dGhyb3cgRXJyb3IoXG5cdFx0XHRcdFx0XHRgXCJQYXRoICR7YWJzcGF0aH0gZG9lcyBub3QgZXhpc3QuIFBsZWFzZSBjcmVhdGUgaXQgZmlyc3QuXCJgLFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBnZW5lcmF0ZWQgPSBhd2FpdCBnZW5lcmF0ZVNlY3JldChcblx0XHRcdFx0XHQnYWVzMjU2Jyxcblx0XHRcdFx0XHRtbmVtb25pYyh7XG5cdFx0XHRcdFx0XHRsYW5ndWFnZTogb3AubGFuZ3VhZ2UsXG5cdFx0XHRcdFx0XHRzdHJlbmd0aDogcGFyc2VJbnQob3Auc3RyZW5ndGgsIDEwKSxcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRhYnNwYXRoLFxuXHRcdFx0XHRcdGtleV9uYW1lLFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGluZGV4X25hbWUsXG5cdFx0XHRcdFx0XHRzZWVkOiB7XG5cdFx0XHRcdFx0XHRcdHBhc3N3b3JkOiBvcC5wYXNzd29yZCxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR2ZXJzaW9uLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0Y2hhbGsuZ3JlZW4oJ1NlY3JldCBrZXkgZ2VuZXJhdGVkIGF0OicpLFxuXHRcdFx0XHRcdGdlbmVyYXRlZC5maWxlcy5maWxlLFxuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdGlmIChnZW5lcmF0ZWQuZmlsZXMuaW5kZXgpIHtcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhcblx0XHRcdFx0XHRcdGNoYWxrLmdyZWVuKCdTZWNyZXQga2V5IGluZGV4ZWQgYXQ6JyksXG5cdFx0XHRcdFx0XHRnZW5lcmF0ZWQuZmlsZXMuaW5kZXgsXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKCdNbmVtb25pYzonKSwgZ2VuZXJhdGVkLm1uZW1vbmljLCAnXFxuJyk7XG5cblx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0Y2hhbGsueWVsbG93KFxuXHRcdFx0XHRcdFx0J0tlZXAgdGhlIG1uZW1vbmljIHNhZmUhIEl0IGNhbiBiZSB1c2VkIHRvIHJlY292ZXIgdGhlIGtleSBwYWlyLicsXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0KTtcblx0XHRcdH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcihjaGFsay5yZWQoZXJyb3IubWVzc2FnZSkpO1xuXHRcdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDEpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDApO1xuXHRcdH0pO1xufVxuXG4vKipcbiAqIFJlY292ZXIgYSBzZWNyZXQgZnJvbSBhIG1uZW1vbmljIGFuZCBzYXZlIGl0IHRvIGEgZmlsZS4gSXQgd2lsbCByZW1vdmUgdGhlXG4gKiBwcmV2aW91cyBrZXkgZnJvbSBpbmRleCB3aGVuIGluZGV4IGlzIHNldC5cbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSBwcm9ncmFtIHRvIGFkZCB0aGUgY29tbWFuZCB0by5cbiAqIEByZXR1cm5zIFRoZSBwcm9ncmFtLlxuICogQHNpbmNlIDEuMC4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVjb3ZlckFFUzI1NlNlY3JldENvbW1hbmQocHJvZ3JhbTogQ29tbWFuZCkge1xuXHRwcm9ncmFtXG5cdFx0LmNvbW1hbmQoJ3JlY292ZXI6YWVzMjU2Jylcblx0XHQuZGVzY3JpcHRpb24oXG5cdFx0XHQnUmVjb3ZlcnMgYSBrZXktcGFpciBmcm9tIGEgbW5lbW9uaWMgYW5kIHNhdmUgaXQgdG8gYSBmaWxlLiBJdCB3aWxsIHJlbW92ZSB0aGUgcHJldmlvdXMga2V5IGZyb20gaW5kZXggd2hlbiBpbmRleCBpcyBzZXQuJyxcblx0XHQpXG5cdFx0LmFyZ3VtZW50KCc8bmFtZT4nLCAnTmFtZSBvZiB0aGUga2V5LicpXG5cdFx0Lm9wdGlvbignLXAsIC0tcGF0aCA8cGF0aD4nLCAnUGF0aCB0byBzYXZlIHRoZSBrZXkuJylcblx0XHQub3B0aW9uKCctbSwgLS1tbmVtb25pYyA8bW5lbW9uaWM+JywgJ01uZW1vbmljIHRvIHJlY292ZXIgdGhlIGtleS4nKVxuXHRcdC5vcHRpb24oJy13LCAtLXBhc3N3b3JkIDxwYXNzd29yZD4nLCAnUGFzc3dvcmQgZm9yIHNlZWQgZ2VuZXJhdGlvbi4nKVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLXYsIC0tdmVyc2lvbiA8dmVyc2lvbj4nLFxuXHRcdFx0J1ZlcnNpb24gb2YgdGhlIGtleS4gU2hvdWxkIGJlIGFuIGludGVnZXIuIERlZmF1bHQgaXMgMS4nLFxuXHRcdFx0JzEnLFxuXHRcdClcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy14LCAtLWluZGV4IDxpbmRleD4nLFxuXHRcdFx0J0luZGV4IG5hbWUuIFdpbGwgc3RvcmUgdGhlIGtleSBpbiBhIEpTT04gaW5kZXguIElmIG5vdCBwcm92aWRlZCwgaW5kZXggd2lsbCBub3QgYmUgY3JlYXRlZC4nLFxuXHRcdClcblx0XHQuYWN0aW9uKGFzeW5jIChuLCB2LCBvcCkgPT4ge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgeyBtbmVtb25pYyB9ID0gb3A7XG5cblx0XHRcdFx0aWYgKG1uZW1vbmljID09PSB1bmRlZmluZWQgfHwgbW5lbW9uaWMgPT09ICcnKSB7XG5cdFx0XHRcdFx0dGhyb3cgRXJyb3IoJ01uZW1vbmljIGlzIHJlcXVpcmVkLicpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgdmVyc2lvbiA9IHBhcnNlSW50KHYsIDEwKTtcblx0XHRcdFx0Y29uc3Qga2V5X25hbWUgPSBwYXJzZUZpbGVOYW1lKG4pO1xuXHRcdFx0XHRjb25zdCBpbmRleF9uYW1lID0gb3AuaW5kZXggPyBwYXJzZUZpbGVOYW1lKG9wLmluZGV4KSA6IHVuZGVmaW5lZDtcblx0XHRcdFx0Y29uc3QgYWJzcGF0aCA9IHBhcnNlQWJzcGF0aChvcC5wYXRoKTtcblxuXHRcdFx0XHRpZiAoaW5kZXhfbmFtZSkge1xuXHRcdFx0XHRcdGF3YWl0IHJlbW92ZSgnc2VjcmV0cycsIGFic3BhdGgsIGluZGV4X25hbWUsIHZlcnNpb24pO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgZ2VuZXJhdGVkID0gYXdhaXQgZ2VuZXJhdGVTZWNyZXQoXG5cdFx0XHRcdFx0J2FlczI1NicsXG5cdFx0XHRcdFx0bW5lbW9uaWMsXG5cdFx0XHRcdFx0YWJzcGF0aCxcblx0XHRcdFx0XHRrZXlfbmFtZSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRpbmRleF9uYW1lLFxuXHRcdFx0XHRcdFx0cmVjb3ZlcjogdHJ1ZSxcblx0XHRcdFx0XHRcdHNlZWQ6IHtcblx0XHRcdFx0XHRcdFx0cGFzc3dvcmQ6IG9wLnBhc3N3b3JkLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHZlcnNpb24sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhcblx0XHRcdFx0XHRjaGFsay5ncmVlbignU2VjcmV0IGtleSByZWNvdmVyZWQgYXQ6JyksXG5cdFx0XHRcdFx0Z2VuZXJhdGVkLmZpbGVzLmZpbGUsXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0aWYgKGdlbmVyYXRlZC5maWxlcy5pbmRleCkge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKFxuXHRcdFx0XHRcdFx0Y2hhbGsuZ3JlZW4oJ1NlY3JldCBrZXkgcmVpbmRleGVkIGF0OicpLFxuXHRcdFx0XHRcdFx0Z2VuZXJhdGVkLmZpbGVzLmluZGV4LFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zb2xlLmxvZyhjaGFsay5ncmVlbignTW5lbW9uaWM6JyksIGdlbmVyYXRlZC5tbmVtb25pYywgJ1xcbicpO1xuXG5cdFx0XHRcdGNvbnNvbGUubG9nKFxuXHRcdFx0XHRcdGNoYWxrLnllbGxvdyhcblx0XHRcdFx0XHRcdCdLZWVwIHRoZSBtbmVtb25pYyBzYWZlISBJdCBjYW4gYmUgdXNlZCBhZ2FpbiB0byByZWNvdmVyIHRoZSBrZXkgcGFpci4nLFxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGNhdGNoIChlcnJvcjogYW55KSB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoY2hhbGsucmVkKGVycm9yLm1lc3NhZ2UpKTtcblx0XHRcdFx0cmV0dXJuIHByb2Nlc3MuZXhpdCgxKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHByb2Nlc3MuZXhpdCgwKTtcblx0XHR9KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUVBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFFBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLEtBQUEsR0FBQUosT0FBQTtBQUF5QyxTQUFBRCx1QkFBQU0sQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQVB6Qzs7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTRywyQkFBMkJBLENBQUNDLE9BQWdCLEVBQUU7RUFDN0RBLE9BQU8sQ0FDTEMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQzFCQyxXQUFXLENBQ1gseUZBQ0QsQ0FBQyxDQUNBQyxRQUFRLENBQUMsUUFBUSxFQUFFLGtCQUFrQixDQUFDLENBQ3RDQyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsdUJBQXVCLENBQUMsQ0FDcERBLE1BQU0sQ0FBQywyQkFBMkIsRUFBRSwrQkFBK0IsQ0FBQyxDQUNwRUEsTUFBTSxDQUNOLDJCQUEyQixFQUMzQixrREFBa0QsRUFDbEQsU0FDRCxDQUFDLENBQ0FBLE1BQU0sQ0FDTiwyQkFBMkIsRUFDM0IsdUNBQXVDLEVBQ3ZDLEtBQ0QsQ0FBQyxDQUNBQSxNQUFNLENBQ04seUJBQXlCLEVBQ3pCLHlEQUF5RCxFQUN6RCxHQUNELENBQUMsQ0FDQUEsTUFBTSxDQUNOLHFCQUFxQixFQUNyQiw2RkFDRCxDQUFDLENBQ0FDLE1BQU0sQ0FBQyxPQUFPQyxDQUFDLEVBQUVDLEVBQUUsS0FBSztJQUN4QixJQUFJO01BQ0gsTUFBTUMsT0FBTyxHQUFHQyxR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
110
+
111
+ /**
112
+ * Generate a secret based on a mnemonic phrase. It should be used with aes256
113
+ * algorithm.
114
+ *
115
+ * @param program - The program to add the command to.
116
+ * @returns The program.
117
+ * @since 1.0.0
118
+ * @author Caique Araujo <caique@piggly.com.br>
119
+ */
120
+ function generateMnemonicSecretCommand(program) {
121
+ program.command('generate:secret').description('Generates a secret based on a mnemonic phrase.').option('-p, --abspath [path]', 'Absolute path to save the secret. If not provided, it will be displayed in the terminal.').option('-f, --filename [filename]', 'File name to save the secret. If not provided, it will be saved in the "encryption.key" file.', 'encryption.key').option('-s, --salt [salt]', 'Salt to use for the secret. If not provided, it will be generated randomly.').option('-l, --length [length]', 'Length of the secret. Default is 32.', v => {
122
+ if (v === undefined) {
123
+ return 32;
124
+ }
125
+ if (Number.isSafeInteger(parseInt(v, 10)) === false) {
126
+ return -1;
127
+ }
128
+ return Number(v);
129
+ }).option('-m, --mnemonic [mnemonic]', 'Use a specific mnemonic seed to generate the root key. If not provided, a new mnemonic will be generated.', undefined).option('-w, --words [words]', 'Tells the size of works of the mnemonic to be generated. It must be one of the following values: 12 or 24. Default is 12 words.', v => {
130
+ if (v === undefined) {
131
+ return 12;
132
+ }
133
+ if (Number.isSafeInteger(parseInt(v, 10)) === false) {
134
+ return -1;
135
+ }
136
+ const words = Number(v);
137
+ if ([12, 24].includes(words)) {
138
+ return words;
139
+ }
140
+ return -1;
141
+ }).action(async op => {
142
+ try {
143
+ const wds = op.words ?? 12;
144
+ if (wds === -1) {
145
+ console.error(_chalk.default.red('The provided words size seems to be incompatible. It must be one of the following values: 12 or 24.'));
146
+ return process.exit(1);
147
+ }
148
+ const mnm = op.mnemonic ? op.mnemonic : (0, _index.mnemonic)({
149
+ language: 'english',
150
+ strength: wds === 12 ? 128 : 256
151
+ });
152
+ if (mnm.split(' ').length !== wds) {
153
+ console.error(_chalk.default.red('The provided mnemonic seems to be incompatible. Are you sure it is correct?'));
154
+ return process.exit(1);
155
+ }
156
+ const key = aes.generateSecret(await (0, _index.seed)(mnm), {
157
+ length: op.length === -1 ? undefined : Number(op?.length ?? 32),
158
+ salt: op.salt ? Buffer.from(op.salt) : undefined
159
+ });
160
+ console.log(_chalk.default.yellow('Mnemonic:'), mnm);
161
+ if (op.abspath === undefined) {
162
+ console.log(_chalk.default.green('Secret key:'), key.toString('base64'));
163
+ return process.exit(0);
164
+ }
165
+ const abspath = (0, _index.parseAbspath)(process.cwd(), op.path);
166
+ if ((0, _file.exists)(abspath) === false) {
167
+ throw Error(`Path "${abspath}" does not exist. Please create it first.`);
168
+ }
169
+ try {
170
+ await _nodeFs.promises.writeFile(_nodePath.default.join(abspath, op.filename ?? 'encryption.key'), key.toString('base64'), {
171
+ flag: 'wx',
172
+ mode: 0o600
173
+ });
174
+ console.log(_chalk.default.green(`Root key saved successfully in "${abspath}"`));
175
+ return process.exit(0);
176
+ } catch (err) {
177
+ if (err.code === 'EEXIST') {
178
+ console.warn(_chalk.default.yellow(`The root key already exists in "${abspath}".`));
179
+ return process.exit(0);
180
+ }
181
+ console.error(_chalk.default.red(`Failed to save the root key to "${abspath}": ${err.message}`));
182
+ return process.exit(1);
183
+ }
184
+ } catch (error) {
185
+ console.error(_chalk.default.red(error.message));
186
+ return process.exit(1);
187
+ }
188
+ });
189
+ }
190
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZUZzIiwicmVxdWlyZSIsIl9ub2RlUGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY2hhbGsiLCJfaW5kZXgiLCJfaW5kZXgyIiwiYWVzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfaW5kZXhlcyIsIl9maWxlIiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiZGVmYXVsdCIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZ2VuZXJhdGVBRVMyNTZTZWNyZXRDb21tYW5kIiwicHJvZ3JhbSIsImNvbW1hbmQiLCJkZXNjcmlwdGlvbiIsImFyZ3VtZW50Iiwib3B0aW9uIiwiYWN0aW9uIiwib3AiLCJ2ZXJzaW9uIiwicGFyc2VJbnQiLCJrZXlfbmFtZSIsInBhcnNlRmlsZU5hbWUiLCJpbmRleF9uYW1lIiwiaW5kZXgiLCJ1bmRlZmluZWQiLCJhYnNwYXRoIiwicGFyc2VBYnNwYXRoIiwicHJvY2VzcyIsImN3ZCIsInBhdGgiLCJleGlzdHMiLCJFcnJvciIsImdlbmVyYXRlZCIsImdlbmVyYXRlU2VjcmV0IiwibW5lbW9uaWMiLCJsYW5ndWFnZSIsInN0cmVuZ3RoIiwic2VlZCIsInBhc3N3b3JkIiwiY29uc29sZSIsImxvZyIsImNoYWxrIiwiZ3JlZW4iLCJmaWxlcyIsImZpbGUiLCJ5ZWxsb3ciLCJlcnJvciIsInJlZCIsIm1lc3NhZ2UiLCJleGl0IiwicmVjb3ZlckFFUzI1NlNlY3JldENvbW1hbmQiLCJ2IiwicmVtb3ZlIiwicmVjb3ZlciIsImdlbmVyYXRlTW5lbW9uaWNTZWNyZXRDb21tYW5kIiwiTnVtYmVyIiwiaXNTYWZlSW50ZWdlciIsIndvcmRzIiwiaW5jbHVkZXMiLCJ3ZHMiLCJtbm0iLCJzcGxpdCIsImxlbmd0aCIsImtleSIsInNhbHQiLCJCdWZmZXIiLCJmcm9tIiwidG9TdHJpbmciLCJmcyIsIndyaXRlRmlsZSIsImpvaW4iLCJmaWxlbmFtZSIsImZsYWciLCJtb2RlIiwiZXJyIiwiY29kZSIsIndhcm4iXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYmluL2NvbW1hbmRzL3NlY3JldHMvYWVzMjU2LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB7IHByb21pc2VzIGFzIGZzIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuXG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5cbmltcG9ydCB7IHBhcnNlRmlsZU5hbWUsIHBhcnNlQWJzcGF0aCwgbW5lbW9uaWMsIHNlZWQgfSBmcm9tICdAL3V0aWxzL2luZGV4LmpzJztcbmltcG9ydCB7IGdlbmVyYXRlU2VjcmV0IH0gZnJvbSAnQC9jb3JlL2luZGV4LmpzJztcbmltcG9ydCAqIGFzIGFlcyBmcm9tICdAL2NvcmUvc2VjcmV0cy9hZXMyNTYuanMnO1xuaW1wb3J0IHsgcmVtb3ZlIH0gZnJvbSAnQC91dGlscy9pbmRleGVzLmpzJztcbmltcG9ydCB7IGV4aXN0cyB9IGZyb20gJ0AvdXRpbHMvZmlsZS5qcyc7XG5cbi8qKlxuICogR2VuZXJhdGUgYSBzZWNyZXQgYmFzZWQgb24gYSBtbmVtb25pYyBwaHJhc2UuIEl0IHNob3VsZCBiZSB1c2VkIHdpdGggYWVzMjU2XG4gKiBhbGdvcml0aG0uXG4gKlxuICogQHBhcmFtIHByb2dyYW0gLSBUaGUgcHJvZ3JhbSB0byBhZGQgdGhlIGNvbW1hbmQgdG8uXG4gKiBAcmV0dXJucyBUaGUgcHJvZ3JhbS5cbiAqIEBzaW5jZSAxLjAuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQUVTMjU2U2VjcmV0Q29tbWFuZChwcm9ncmFtOiBDb21tYW5kKSB7XG5cdHByb2dyYW1cblx0XHQuY29tbWFuZCgnZ2VuZXJhdGU6YWVzMjU2Jylcblx0XHQuZGVzY3JpcHRpb24oXG5cdFx0XHQnR2VuZXJhdGVzIGEgc2VjcmV0IGJhc2VkIG9uIGEgbW5lbW9uaWMgcGhyYXNlLiBJdCBzaG91bGQgYmUgdXNlZCB3aXRoIGFlczI1NiBhbGdvcml0aG0uJyxcblx0XHQpXG5cdFx0LmFyZ3VtZW50KCc8bmFtZT4nLCAnTmFtZSBvZiB0aGUga2V5LicpXG5cdFx0Lm9wdGlvbignLXAsIC0tcGF0aCA8cGF0aD4nLCAnUGF0aCB0byBzYXZlIHRoZSBrZXkuJylcblx0XHQub3B0aW9uKCctdywgLS1wYXNzd29yZCA8cGFzc3dvcmQ+JywgJ1Bhc3N3b3JkIGZvciBzZWVkIGdlbmVyYXRpb24uJylcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy1sLCAtLWxhbmd1YWdlIDxsYW5ndWFnZT4nLFxuXHRcdFx0J0xhbmd1YWdlIG9mIG1uZW1vbmljLiBPbmx5IGVuZ2xpc2ggaXMgYXZhaWxhYmxlLicsXG5cdFx0XHQnZW5nbGlzaCcsXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLXMsIC0tc3RyZW5ndGggPHN0cmVuZ3RoPicsXG5cdFx0XHQnU3RyZW5ndGggb2YgbW5lbW9uaWMuIERlZmF1bHQgaXMgMTI4LicsXG5cdFx0XHQnMTI4Jyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctdiwgLS12ZXJzaW9uIDx2ZXJzaW9uPicsXG5cdFx0XHQnVmVyc2lvbiBvZiB0aGUga2V5LiBTaG91bGQgYmUgYW4gaW50ZWdlci4gRGVmYXVsdCBpcyAxLicsXG5cdFx0XHQnMScsXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLXgsIC0taW5kZXggPGluZGV4PicsXG5cdFx0XHQnSW5kZXggbmFtZS4gV2lsbCBzdG9yZSB0aGUga2V5IGluIGEgSlNPTiBpbmRleC4gSWYgbm90IHByb3ZpZGVkLCBpbmRleCB3aWxsIG5vdCBiZSBjcmVhdGVkLicsXG5cdFx0KVxuXHRcdC5hY3Rpb24oYXN5bmMgKG4sIG9wKSA9PiB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCB2ZXJzaW9uID0gcGFyc2VJbnQob3AudmVyc2lvbiwgMTApO1xuXHRcdFx0XHRjb25zdCBrZXlfbmFtZSA9IHBhcnNlRmlsZU5hbWUobik7XG5cdFx0XHRcdGNvbnN0IGluZGV4X25hbWUgPSBvcC5pbmRleCA/IHBhcnNlRmlsZU5hbWUob3AuaW5kZXgpIDogdW5kZWZpbmVkO1xuXHRcdFx0XHRjb25zdCBhYnNwYXRoID0gcGFyc2VBYnNwYXRoKHByb2Nlc3MuY3dkKCksIG9wLnBhdGgpO1xuXG5cdFx0XHRcdGlmIChleGlzdHMoYWJzcGF0aCkgPT09IGZhbHNlKSB7XG5cdFx0XHRcdFx0dGhyb3cgRXJyb3IoXG5cdFx0XHRcdFx0XHRgXCJQYXRoICR7YWJzcGF0aH0gZG9lcyBub3QgZXhpc3QuIFBsZWFzZSBjcmVhdGUgaXQgZmlyc3QuXCJgLFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBnZW5lcmF0ZWQgPSBhd2FpdCBnZW5lcmF0ZVNlY3JldChcblx0XHRcdFx0XHQnYWVzMjU2Jyxcblx0XHRcdFx0XHRtbmVtb25pYyh7XG5cdFx0XHRcdFx0XHRsYW5ndWFnZTogb3AubGFuZ3VhZ2UsXG5cdFx0XHRcdFx0XHRzdHJlbmd0aDogcGFyc2VJbnQob3Auc3RyZW5ndGgsIDEwKSxcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRhYnNwYXRoLFxuXHRcdFx0XHRcdGtleV9uYW1lLFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGluZGV4X25hbWUsXG5cdFx0XHRcdFx0XHRzZWVkOiB7XG5cdFx0XHRcdFx0XHRcdHBhc3N3b3JkOiBvcC5wYXNzd29yZCxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR2ZXJzaW9uLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0Y2hhbGsuZ3JlZW4oJ1NlY3JldCBrZXkgZ2VuZXJhdGVkIGF0OicpLFxuXHRcdFx0XHRcdGdlbmVyYXRlZC5maWxlcy5maWxlLFxuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdGlmIChnZW5lcmF0ZWQuZmlsZXMuaW5kZXgpIHtcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhcblx0XHRcdFx0XHRcdGNoYWxrLmdyZWVuKCdTZWNyZXQga2V5IGluZGV4ZWQgYXQ6JyksXG5cdFx0XHRcdFx0XHRnZW5lcmF0ZWQuZmlsZXMuaW5kZXgsXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKCdNbmVtb25pYzonKSwgZ2VuZXJhdGVkLm1uZW1vbmljLCAnXFxuJyk7XG5cblx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0Y2hhbGsueWVsbG93KFxuXHRcdFx0XHRcdFx0J0tlZXAgdGhlIG1uZW1vbmljIHNhZmUhIEl0IGNhbiBiZSB1c2VkIHRvIHJlY292ZXIgdGhlIGtleSBwYWlyLicsXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0KTtcblx0XHRcdH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcihjaGFsay5yZWQoZXJyb3IubWVzc2FnZSkpO1xuXHRcdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDEpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDApO1xuXHRcdH0pO1xufVxuXG4vKipcbiAqIFJlY292ZXIgYSBzZWNyZXQgZnJvbSBhIG1uZW1vbmljIGFuZCBzYXZlIGl0IHRvIGEgZmlsZS4gSXQgd2lsbCByZW1vdmUgdGhlXG4gKiBwcmV2aW91cyBrZXkgZnJvbSBpbmRleCB3aGVuIGluZGV4IGlzIHNldC5cbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSBwcm9ncmFtIHRvIGFkZCB0aGUgY29tbWFuZCB0by5cbiAqIEByZXR1cm5zIFRoZSBwcm9ncmFtLlxuICogQHNpbmNlIDEuMC4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVjb3ZlckFFUzI1NlNlY3JldENvbW1hbmQocHJvZ3JhbTogQ29tbWFuZCkge1xuXHRwcm9ncmFtXG5cdFx0LmNvbW1hbmQoJ3JlY292ZXI6YWVzMjU2Jylcblx0XHQuZGVzY3JpcHRpb24oXG5cdFx0XHQnUmVjb3ZlcnMgYSBrZXktcGFpciBmcm9tIGEgbW5lbW9uaWMgYW5kIHNhdmUgaXQgdG8gYSBmaWxlLiBJdCB3aWxsIHJlbW92ZSB0aGUgcHJldmlvdXMga2V5IGZyb20gaW5kZXggd2hlbiBpbmRleCBpcyBzZXQuJyxcblx0XHQpXG5cdFx0LmFyZ3VtZW50KCc8bmFtZT4nLCAnTmFtZSBvZiB0aGUga2V5LicpXG5cdFx0Lm9wdGlvbignLXAsIC0tcGF0aCA8cGF0aD4nLCAnUGF0aCB0byBzYXZlIHRoZSBrZXkuJylcblx0XHQub3B0aW9uKCctbSwgLS1tbmVtb25pYyA8bW5lbW9uaWM+JywgJ01uZW1vbmljIHRvIHJlY292ZXIgdGhlIGtleS4nKVxuXHRcdC5vcHRpb24oJy13LCAtLXBhc3N3b3JkIDxwYXNzd29yZD4nLCAnUGFzc3dvcmQgZm9yIHNlZWQgZ2VuZXJhdGlvbi4nKVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLXYsIC0tdmVyc2lvbiA8dmVyc2lvbj4nLFxuXHRcdFx0J1ZlcnNpb24gb2YgdGhlIGtleS4gU2hvdWxkIGJlIGFuIGludGVnZXIuIERlZmF1bHQgaXMgMS4nLFxuXHRcdFx0JzEnLFxuXHRcdClcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy14LCAtLWluZGV4IDxpbmRleD4nLFxuXHRcdFx0J0luZGV4IG5hbWUuIFdpbGwgc3RvcmUgdGhlIGtleSBpbiBhIEpTT04gaW5kZXguIElmIG5vdCBwcm92aWRlZCwgaW5kZXggd2lsbCBub3QgYmUgY3JlYXRlZC4nLFxuXHRcdClcblx0XHQuYWN0aW9uKGFzeW5jIChuLCB2LCBvcCkgPT4ge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgeyBtbmVtb25pYyB9ID0gb3A7XG5cblx0XHRcdFx0aWYgKG1uZW1vbmljID09PSB1bmRlZmluZWQgfHwgbW5lbW9uaWMgPT09ICcnKSB7XG5cdFx0XHRcdFx0dGhyb3cgRXJyb3IoJ01uZW1vbmljIGlzIHJlcXVpcmVkLicpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgdmVyc2lvbiA9IHBhcnNlSW50KHYsIDEwKTtcblx0XHRcdFx0Y29uc3Qga2V5X25hbWUgPSBwYXJzZUZpbGVOYW1lKG4pO1xuXHRcdFx0XHRjb25zdCBpbmRleF9uYW1lID0gb3AuaW5kZXggPyBwYXJzZUZpbGVOYW1lKG9wLmluZGV4KSA6IHVuZGVmaW5lZDtcblx0XHRcdFx0Y29uc3QgYWJzcGF0aCA9IHBhcnNlQWJzcGF0aChvcC5wYXRoKTtcblxuXHRcdFx0XHRpZiAoaW5kZXhfbmFtZSkge1xuXHRcdFx0XHRcdGF3YWl0IHJlbW92ZSgnc2VjcmV0cycsIGFic3BhdGgsIGluZGV4X25hbWUsIHZlcnNpb24pO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgZ2VuZXJhdGVkID0gYXdhaXQgZ2VuZXJhdGVTZWNyZXQoXG5cdFx0XHRcdFx0J2FlczI1NicsXG5cdFx0XHRcdFx0bW5lbW9uaWMsXG5cdFx0XHRcdFx0YWJzcGF0aCxcblx0XHRcdFx0XHRrZXlfbmFtZSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRpbmRleF9uYW1lLFxuXHRcdFx0XHRcdFx0cmVjb3ZlcjogdHJ1ZSxcblx0XHRcdFx0XHRcdHNlZWQ6IHtcblx0XHRcdFx0XHRcdFx0cGFzc3dvcmQ6IG9wLnBhc3N3b3JkLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHZlcnNpb24sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhcblx0XHRcdFx0XHRjaGFsay5ncmVlbignU2VjcmV0IGtleSByZWNvdmVyZWQgYXQ6JyksXG5cdFx0XHRcdFx0Z2VuZXJhdGVkLmZpbGVzLmZpbGUsXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0aWYgKGdlbmVyYXRlZC5maWxlcy5pbmRleCkge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKFxuXHRcdFx0XHRcdFx0Y2hhbGsuZ3JlZW4oJ1NlY3JldCBrZXkgcmVpbmRleGVkIGF0OicpLFxuXHRcdFx0XHRcdFx0Z2VuZXJhdGVkLmZpbGVzLmluZGV4LFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zb2xlLmxvZyhjaGFsay5ncmVlbignTW5lbW9uaWM6JyksIGdlbmVyYXRlZC5tbmVtb25pYywgJ1xcbicpO1xuXG5cdFx0XHRcdGNvbnNvbGUubG9nKFxuXHRcdFx0XHRcdGNoYWxrLnllbGxvdyhcblx0XHRcdFx0XHRcdCdLZWVwIHRoZSBtbmVtb25pYyBzYWZlISBJdCBjYW4gYmUgdXNlZCBhZ2FpbiB0byByZWNvdmVyIHRoZSBrZXkgcGFpci4nLFxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGNhdGNoIChlcnJvcjogYW55KSB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoY2hhbGsucmVkKGVycm9yLm1lc3NhZ2UpKTtcblx0XHRcdFx0cmV0dXJuIHByb2Nlc3MuZXhpdCgxKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHByb2Nlc3MuZXhpdCgwKTtcblx0XHR9KTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHNlY3JldCBiYXNlZCBvbiBhIG1uZW1vbmljIHBocmFzZS4gSXQgc2hvdWxkIGJlIHVzZWQgd2l0aCBhZXMyNTZcbiAqIGFsZ29yaXRobS5cbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSBwcm9ncmFtIHRvIGFkZCB0aGUgY29tbWFuZCB0by5cbiAqIEByZXR1cm5zIFRoZSBwcm9ncmFtLlxuICogQHNpbmNlIDEuMC4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVNbmVtb25pY1NlY3JldENvbW1hbmQocHJvZ3JhbTogQ29tbWFuZCkge1xuXHRwcm9ncmFtXG5cdFx0LmNvbW1hbmQoJ2dlbmVyYXRlOnNlY3JldCcpXG5cdFx0LmRlc2NyaXB0aW9uKCdHZW5lcmF0ZXMgYSBzZWNyZXQgYmFzZWQgb24gYSBtbmVtb25pYyBwaHJhc2UuJylcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy1wLCAtLWFic3BhdGggW3BhdGhdJyxcblx0XHRcdCdBYnNvbHV0ZSBwYXRoIHRvIHNhdmUgdGhlIHNlY3JldC4gSWYgbm90IHByb3ZpZGVkLCBpdCB3aWxsIGJlIGRpc3BsYXllZCBpbiB0aGUgdGVybWluYWwuJyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctZiwgLS1maWxlbmFtZSBbZmlsZW5hbWVdJyxcblx0XHRcdCdGaWxlIG5hbWUgdG8gc2F2ZSB0aGUgc2VjcmV0LiBJZiBub3QgcHJvdmlkZWQsIGl0IHdpbGwgYmUgc2F2ZWQgaW4gdGhlIFwiZW5jcnlwdGlvbi5rZXlcIiBmaWxlLicsXG5cdFx0XHQnZW5jcnlwdGlvbi5rZXknLFxuXHRcdClcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy1zLCAtLXNhbHQgW3NhbHRdJyxcblx0XHRcdCdTYWx0IHRvIHVzZSBmb3IgdGhlIHNlY3JldC4gSWYgbm90IHByb3ZpZGVkLCBpdCB3aWxsIGJlIGdlbmVyYXRlZCByYW5kb21seS4nLFxuXHRcdClcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy1sLCAtLWxlbmd0aCBbbGVuZ3RoXScsXG5cdFx0XHQnTGVuZ3RoIG9mIHRoZSBzZWNyZXQuIERlZmF1bHQgaXMgMzIuJyxcblx0XHRcdCh2OiBzdHJpbmcpOiBudW1iZXIgPT4ge1xuXHRcdFx0XHRpZiAodiA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0cmV0dXJuIDMyO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKE51bWJlci5pc1NhZmVJbnRlZ2VyKHBhcnNlSW50KHYsIDEwKSkgPT09IGZhbHNlKSB7XG5cdFx0XHRcdFx0cmV0dXJuIC0xO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIE51bWJlcih2KTtcblx0XHRcdH0sXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLW0sIC0tbW5lbW9uaWMgW21uZW1vbmljXScsXG5cdFx0XHQnVXNlIGEgc3BlY2lmaWMgbW5lbW9uaWMgc2VlZCB0byBnZW5lcmF0ZSB0aGUgcm9vdCBrZXkuIElmIG5vdCBwcm92aWRlZCwgYSBuZXcgbW5lbW9uaWMgd2lsbCBiZSBnZW5lcmF0ZWQuJyxcblx0XHRcdHVuZGVmaW5lZCxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctdywgLS13b3JkcyBbd29yZHNdJyxcblx0XHRcdCdUZWxscyB0aGUgc2l6ZSBvZiB3b3JrcyBvZiB0aGUgbW5lbW9uaWMgdG8gYmUgZ2VuZXJhdGVkLiBJdCBtdXN0IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczogMTIgb3IgMjQuIERlZmF1bHQgaXMgMTIgd29yZHMuJyxcblx0XHRcdCh2OiBzdHJpbmcpOiBudW1iZXIgPT4ge1xuXHRcdFx0XHRpZiAodiA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0cmV0dXJuIDEyO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKE51bWJlci5pc1NhZmVJbnRlZ2VyKHBhcnNlSW50KHYsIDEwKSkgPT09IGZhbHNlKSB7XG5cdFx0XHRcdFx0cmV0dXJuIC0xO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3Qgd29yZHMgPSBOdW1iZXIodik7XG5cblx0XHRcdFx0aWYgKFsxMiwgMjRdLmluY2x1ZGVzKHdvcmRzKSkge1xuXHRcdFx0XHRcdHJldHVybiB3b3Jkcztcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiAtMTtcblx0XHRcdH0sXG5cdFx0KVxuXHRcdC5hY3Rpb24oYXN5bmMgb3AgPT4ge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3Qgd2RzID0gb3Aud29yZHMgPz8gMTI7XG5cblx0XHRcdFx0aWYgKHdkcyA9PT0gLTEpIHtcblx0XHRcdFx0XHRjb25zb2xlLmVycm9yKFxuXHRcdFx0XHRcdFx0Y2hhbGsucmVkKFxuXHRcdFx0XHRcdFx0XHQnVGhlIHByb3ZpZGVkIHdvcmRzIHNpemUgc2VlbXMgdG8gYmUgaW5jb21wYXRpYmxlLiBJdCBtdXN0IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczogMTIgb3IgMjQuJyxcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdHJldHVybiBwcm9jZXNzLmV4aXQoMSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBtbm0gPSBvcC5tbmVtb25pY1xuXHRcdFx0XHRcdD8gb3AubW5lbW9uaWNcblx0XHRcdFx0XHQ6IG1uZW1vbmljKHtcblx0XHRcdFx0XHRcdFx0bGFuZ3VhZ2U6ICdlbmdsaXNoJyxcblx0XHRcdFx0XHRcdFx0c3RyZW5ndGg6IHdkcyA9PT0gMTIgPyAxMjggOiAyNTYsXG5cdFx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRpZiAobW5tLnNwbGl0KCcgJykubGVuZ3RoICE9PSB3ZHMpIHtcblx0XHRcdFx0XHRjb25zb2xlLmVycm9yKFxuXHRcdFx0XHRcdFx0Y2hhbGsucmVkKFxuXHRcdFx0XHRcdFx0XHQnVGhlIHByb3ZpZGVkIG1uZW1vbmljIHNlZW1zIHRvIGJlIGluY29tcGF0aWJsZS4gQXJlIHlvdSBzdXJlIGl0IGlzIGNvcnJlY3Q/Jyxcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdHJldHVybiBwcm9jZXNzLmV4aXQoMSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBrZXkgPSBhZXMuZ2VuZXJhdGVTZWNyZXQoYXdhaXQgc2VlZChtbm0pLCB7XG5cdFx0XHRcdFx0bGVuZ3RoOiBvcC5sZW5ndGggPT09IC0xID8gdW5kZWZpbmVkIDogTnVtYmVyKG9wPy5sZW5ndGggPz8gMzIpLFxuXHRcdFx0XHRcdHNhbHQ6IG9wLnNhbHQgPyBCdWZmZXIuZnJvbShvcC5zYWx0KSA6IHVuZGVmaW5lZCxcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0Y29uc29sZS5sb2coY2hhbGsueWVsbG93KCdNbmVtb25pYzonKSwgbW5tKTtcblxuXHRcdFx0XHRpZiAob3AuYWJzcGF0aCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coY2hhbGsuZ3JlZW4oJ1NlY3JldCBrZXk6JyksIGtleS50b1N0cmluZygnYmFzZTY0JykpO1xuXHRcdFx0XHRcdHJldHVybiBwcm9jZXNzLmV4aXQoMCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBhYnNwYXRoID0gcGFyc2VBYnNwYXRoKHByb2Nlc3MuY3dkKCksIG9wLnBhdGgpO1xuXG5cdFx0XHRcdGlmIChleGlzdHMoYWJzcGF0aCkgPT09IGZhbHNlKSB7XG5cdFx0XHRcdFx0dGhyb3cgRXJyb3IoXG5cdFx0XHRcdFx0XHRgUGF0aCBcIiR7YWJzcGF0aH1cIiBkb2VzIG5vdCBleGlzdC4gUGxlYXNlIGNyZWF0ZSBpdCBmaXJzdC5gLFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGF3YWl0IGZzLndyaXRlRmlsZShcblx0XHRcdFx0XHRcdHBhdGguam9pbihhYnNwYXRoLCBvcC5maWxlbmFtZSA/PyAnZW5jcnlwdGlvbi5rZXknKSxcblx0XHRcdFx0XHRcdGtleS50b1N0cmluZygnYmFzZTY0JyksXG5cdFx0XHRcdFx0XHR7IGZsYWc6ICd3eCcsIG1vZGU6IDBvNjAwIH0sXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKFxuXHRcdFx0XHRcdFx0Y2hhbGsuZ3JlZW4oYFJvb3Qga2V5IHNhdmVkIHN1Y2Nlc3NmdWxseSBpbiBcIiR7YWJzcGF0aH1cImApLFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0cmV0dXJuIHByb2Nlc3MuZXhpdCgwKTtcblx0XHRcdFx0fSBjYXRjaCAoZXJyOiBhbnkpIHtcblx0XHRcdFx0XHRpZiAoZXJyLmNvZGUgPT09ICdFRVhJU1QnKSB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLndhcm4oXG5cdFx0XHRcdFx0XHRcdGNoYWxrLnllbGxvdyhgVGhlIHJvb3Qga2V5IGFscmVhZHkgZXhpc3RzIGluIFwiJHthYnNwYXRofVwiLmApLFxuXHRcdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdFx0cmV0dXJuIHByb2Nlc3MuZXhpdCgwKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRjb25zb2xlLmVycm9yKFxuXHRcdFx0XHRcdFx0Y2hhbGsucmVkKFxuXHRcdFx0XHRcdFx0XHRgRmFpbGVkIHRvIHNhdmUgdGhlIHJvb3Qga2V5IHRvIFwiJHthYnNwYXRofVwiOiAke2Vyci5tZXNzYWdlfWAsXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDEpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIChlcnJvcjogYW55KSB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoY2hhbGsucmVkKGVycm9yLm1lc3NhZ2UpKTtcblx0XHRcdFx0cmV0dXJuIHByb2Nlc3MuZXhpdCgxKTtcblx0XHRcdH1cblx0XHR9KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFDQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxTQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFHQSxJQUFBRyxNQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBSSxNQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxPQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxHQUFBLEdBQUFDLHVCQUFBLENBQUFQLE9BQUE7QUFDQSxJQUFBUSxRQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxLQUFBLEdBQUFULE9BQUE7QUFBeUMsU0FBQU8sd0JBQUFHLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFMLHVCQUFBLFlBQUFB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
@@ -2,11 +2,11 @@
2
2
  "use strict";
3
3
 
4
4
  var _commander = require("commander");
5
- var _ed = require("./commands/keys/ed25519.js");
6
5
  var _aes = require("./commands/secrets/aes256.js");
6
+ var _ed = require("./commands/keys/ed25519.js");
7
7
  var _mnemonic = require("./commands/mnemonic.js");
8
8
  const program = new _commander.Command();
9
- const commands = [_mnemonic.generateMnemonic, _ed.generateEd25519KeyPairCommand, _ed.recoverEd25519KeyPairCommand, _aes.generateAES256SecretCommand, _aes.recoverAES256SecretCommand];
9
+ const commands = [_mnemonic.generateMnemonic, _ed.generateEd25519KeyPairCommand, _ed.recoverEd25519KeyPairCommand, _aes.generateAES256SecretCommand, _aes.recoverAES256SecretCommand, _aes.generateMnemonicSecretCommand];
10
10
  commands.forEach(c => c(program));
11
11
  program.parse();
12
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29tbWFuZGVyIiwicmVxdWlyZSIsIl9lZCIsIl9hZXMiLCJfbW5lbW9uaWMiLCJwcm9ncmFtIiwiQ29tbWFuZCIsImNvbW1hbmRzIiwiZ2VuZXJhdGVNbmVtb25pYyIsImdlbmVyYXRlRWQyNTUxOUtleVBhaXJDb21tYW5kIiwicmVjb3ZlckVkMjU1MTlLZXlQYWlyQ29tbWFuZCIsImdlbmVyYXRlQUVTMjU2U2VjcmV0Q29tbWFuZCIsInJlY292ZXJBRVMyNTZTZWNyZXRDb21tYW5kIiwiZm9yRWFjaCIsImMiLCJwYXJzZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaW4vaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5cbmltcG9ydCB7XG5cdGdlbmVyYXRlRWQyNTUxOUtleVBhaXJDb21tYW5kLFxuXHRyZWNvdmVyRWQyNTUxOUtleVBhaXJDb21tYW5kLFxufSBmcm9tICdAL2Jpbi9jb21tYW5kcy9rZXlzL2VkMjU1MTkuanMnO1xuaW1wb3J0IHtcblx0Z2VuZXJhdGVBRVMyNTZTZWNyZXRDb21tYW5kLFxuXHRyZWNvdmVyQUVTMjU2U2VjcmV0Q29tbWFuZCxcbn0gZnJvbSAnQC9iaW4vY29tbWFuZHMvc2VjcmV0cy9hZXMyNTYuanMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVNbmVtb25pYyB9IGZyb20gJ0AvYmluL2NvbW1hbmRzL21uZW1vbmljLmpzJztcblxuY29uc3QgcHJvZ3JhbSA9IG5ldyBDb21tYW5kKCk7XG5cbmNvbnN0IGNvbW1hbmRzID0gW1xuXHRnZW5lcmF0ZU1uZW1vbmljLFxuXHRnZW5lcmF0ZUVkMjU1MTlLZXlQYWlyQ29tbWFuZCxcblx0cmVjb3ZlckVkMjU1MTlLZXlQYWlyQ29tbWFuZCxcblx0Z2VuZXJhdGVBRVMyNTZTZWNyZXRDb21tYW5kLFxuXHRyZWNvdmVyQUVTMjU2U2VjcmV0Q29tbWFuZCxcbl07XG5cbmNvbW1hbmRzLmZvckVhY2goYyA9PiBjKHByb2dyYW0pKTtcblxucHJvZ3JhbS5wYXJzZSgpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFtQjs7QUFDbkIsSUFBQUEsVUFBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsR0FBQSxHQUFBRCxPQUFBO0FBSUEsSUFBQUUsSUFBQSxHQUFBRixPQUFBO0FBSUEsSUFBQUcsU0FBQSxHQUFBSCxPQUFBO0FBRUEsTUFBTUksT0FBTyxHQUFHLElBQUlDLGtCQUFPLENBQUMsQ0FBQztBQUU3QixNQUFNQyxRQUFRLEdBQUcsQ0FDaEJDLDBCQUFnQixFQUNoQkMsaUNBQTZCLEVBQzdCQyxnQ0FBNEIsRUFDNUJDLGdDQUEyQixFQUMzQkMsK0JBQTBCLENBQzFCO0FBRURMLFFBQVEsQ0FBQ00sT0FBTyxDQUFDQyxDQUFDLElBQUlBLENBQUMsQ0FBQ1QsT0FBTyxDQUFDLENBQUM7QUFFakNBLE9BQU8sQ0FBQ1UsS0FBSyxDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
12
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29tbWFuZGVyIiwicmVxdWlyZSIsIl9hZXMiLCJfZWQiLCJfbW5lbW9uaWMiLCJwcm9ncmFtIiwiQ29tbWFuZCIsImNvbW1hbmRzIiwiZ2VuZXJhdGVNbmVtb25pYyIsImdlbmVyYXRlRWQyNTUxOUtleVBhaXJDb21tYW5kIiwicmVjb3ZlckVkMjU1MTlLZXlQYWlyQ29tbWFuZCIsImdlbmVyYXRlQUVTMjU2U2VjcmV0Q29tbWFuZCIsInJlY292ZXJBRVMyNTZTZWNyZXRDb21tYW5kIiwiZ2VuZXJhdGVNbmVtb25pY1NlY3JldENvbW1hbmQiLCJmb3JFYWNoIiwiYyIsInBhcnNlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Jpbi9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcblxuaW1wb3J0IHtcblx0Z2VuZXJhdGVNbmVtb25pY1NlY3JldENvbW1hbmQsXG5cdGdlbmVyYXRlQUVTMjU2U2VjcmV0Q29tbWFuZCxcblx0cmVjb3ZlckFFUzI1NlNlY3JldENvbW1hbmQsXG59IGZyb20gJ0AvYmluL2NvbW1hbmRzL3NlY3JldHMvYWVzMjU2LmpzJztcbmltcG9ydCB7XG5cdGdlbmVyYXRlRWQyNTUxOUtleVBhaXJDb21tYW5kLFxuXHRyZWNvdmVyRWQyNTUxOUtleVBhaXJDb21tYW5kLFxufSBmcm9tICdAL2Jpbi9jb21tYW5kcy9rZXlzL2VkMjU1MTkuanMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVNbmVtb25pYyB9IGZyb20gJ0AvYmluL2NvbW1hbmRzL21uZW1vbmljLmpzJztcblxuY29uc3QgcHJvZ3JhbSA9IG5ldyBDb21tYW5kKCk7XG5cbmNvbnN0IGNvbW1hbmRzID0gW1xuXHRnZW5lcmF0ZU1uZW1vbmljLFxuXHRnZW5lcmF0ZUVkMjU1MTlLZXlQYWlyQ29tbWFuZCxcblx0cmVjb3ZlckVkMjU1MTlLZXlQYWlyQ29tbWFuZCxcblx0Z2VuZXJhdGVBRVMyNTZTZWNyZXRDb21tYW5kLFxuXHRyZWNvdmVyQUVTMjU2U2VjcmV0Q29tbWFuZCxcblx0Z2VuZXJhdGVNbmVtb25pY1NlY3JldENvbW1hbmQsXG5dO1xuXG5jb21tYW5kcy5mb3JFYWNoKGMgPT4gYyhwcm9ncmFtKSk7XG5cbnByb2dyYW0ucGFyc2UoKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBbUI7O0FBQ25CLElBQUFBLFVBQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLElBQUEsR0FBQUQsT0FBQTtBQUtBLElBQUFFLEdBQUEsR0FBQUYsT0FBQTtBQUlBLElBQUFHLFNBQUEsR0FBQUgsT0FBQTtBQUVBLE1BQU1JLE9BQU8sR0FBRyxJQUFJQyxrQkFBTyxDQUFDLENBQUM7QUFFN0IsTUFBTUMsUUFBUSxHQUFHLENBQ2hCQywwQkFBZ0IsRUFDaEJDLGlDQUE2QixFQUM3QkMsZ0NBQTRCLEVBQzVCQyxnQ0FBMkIsRUFDM0JDLCtCQUEwQixFQUMxQkMsa0NBQTZCLENBQzdCO0FBRUROLFFBQVEsQ0FBQ08sT0FBTyxDQUFDQyxDQUFDLElBQUlBLENBQUMsQ0FBQ1YsT0FBTyxDQUFDLENBQUM7QUFFakNBLE9BQU8sQ0FBQ1csS0FBSyxDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -1,8 +1,10 @@
1
1
  /* eslint-disable no-console */
2
-
2
+ import { promises as fs } from 'node:fs';
3
+ import path from 'node:path';
3
4
  import chalk from 'chalk';
4
- import { parseFileName, parseAbspath, mnemonic } from "../../../utils/index.js";
5
+ import { parseFileName, parseAbspath, mnemonic, seed } from "../../../utils/index.js";
5
6
  import { generateSecret } from "../../../core/index.js";
7
+ import * as aes from "../../../core/secrets/aes256.js";
6
8
  import { remove } from "../../../utils/indexes.js";
7
9
  import { exists } from "../../../utils/file.js";
8
10
 
@@ -95,4 +97,84 @@ export function recoverAES256SecretCommand(program) {
95
97
  return process.exit(0);
96
98
  });
97
99
  }
98
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjaGFsayIsInBhcnNlRmlsZU5hbWUiLCJwYXJzZUFic3BhdGgiLCJtbmVtb25pYyIsImdlbmVyYXRlU2VjcmV0IiwicmVtb3ZlIiwiZXhpc3RzIiwiZ2VuZXJhdGVBRVMyNTZTZWNyZXRDb21tYW5kIiwicHJvZ3JhbSIsImNvbW1hbmQiLCJkZXNjcmlwdGlvbiIsImFyZ3VtZW50Iiwib3B0aW9uIiwiYWN0aW9uIiwibiIsIm9wIiwidmVyc2lvbiIsInBhcnNlSW50Iiwia2V5X25hbWUiLCJpbmRleF9uYW1lIiwiaW5kZXgiLCJ1bmRlZmluZWQiLCJhYnNwYXRoIiwicHJvY2VzcyIsImN3ZCIsInBhdGgiLCJFcnJvciIsImdlbmVyYXRlZCIsImxhbmd1YWdlIiwic3RyZW5ndGgiLCJzZWVkIiwicGFzc3dvcmQiLCJjb25zb2xlIiwibG9nIiwiZ3JlZW4iLCJmaWxlcyIsImZpbGUiLCJ5ZWxsb3ciLCJlcnJvciIsInJlZCIsIm1lc3NhZ2UiLCJleGl0IiwicmVjb3ZlckFFUzI1NlNlY3JldENvbW1hbmQiLCJ2IiwicmVjb3ZlciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9iaW4vY29tbWFuZHMvc2VjcmV0cy9hZXMyNTYudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuXG5pbXBvcnQgeyBwYXJzZUZpbGVOYW1lLCBwYXJzZUFic3BhdGgsIG1uZW1vbmljIH0gZnJvbSAnQC91dGlscy9pbmRleC5qcyc7XG5pbXBvcnQgeyBnZW5lcmF0ZVNlY3JldCB9IGZyb20gJ0AvY29yZS9pbmRleC5qcyc7XG5pbXBvcnQgeyByZW1vdmUgfSBmcm9tICdAL3V0aWxzL2luZGV4ZXMuanMnO1xuaW1wb3J0IHsgZXhpc3RzIH0gZnJvbSAnQC91dGlscy9maWxlLmpzJztcblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHNlY3JldCBiYXNlZCBvbiBhIG1uZW1vbmljIHBocmFzZS4gSXQgc2hvdWxkIGJlIHVzZWQgd2l0aCBhZXMyNTZcbiAqIGFsZ29yaXRobS5cbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSBwcm9ncmFtIHRvIGFkZCB0aGUgY29tbWFuZCB0by5cbiAqIEByZXR1cm5zIFRoZSBwcm9ncmFtLlxuICogQHNpbmNlIDEuMC4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVBRVMyNTZTZWNyZXRDb21tYW5kKHByb2dyYW06IENvbW1hbmQpIHtcblx0cHJvZ3JhbVxuXHRcdC5jb21tYW5kKCdnZW5lcmF0ZTphZXMyNTYnKVxuXHRcdC5kZXNjcmlwdGlvbihcblx0XHRcdCdHZW5lcmF0ZXMgYSBzZWNyZXQgYmFzZWQgb24gYSBtbmVtb25pYyBwaHJhc2UuIEl0IHNob3VsZCBiZSB1c2VkIHdpdGggYWVzMjU2IGFsZ29yaXRobS4nLFxuXHRcdClcblx0XHQuYXJndW1lbnQoJzxuYW1lPicsICdOYW1lIG9mIHRoZSBrZXkuJylcblx0XHQub3B0aW9uKCctcCwgLS1wYXRoIDxwYXRoPicsICdQYXRoIHRvIHNhdmUgdGhlIGtleS4nKVxuXHRcdC5vcHRpb24oJy13LCAtLXBhc3N3b3JkIDxwYXNzd29yZD4nLCAnUGFzc3dvcmQgZm9yIHNlZWQgZ2VuZXJhdGlvbi4nKVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLWwsIC0tbGFuZ3VhZ2UgPGxhbmd1YWdlPicsXG5cdFx0XHQnTGFuZ3VhZ2Ugb2YgbW5lbW9uaWMuIE9ubHkgZW5nbGlzaCBpcyBhdmFpbGFibGUuJyxcblx0XHRcdCdlbmdsaXNoJyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctcywgLS1zdHJlbmd0aCA8c3RyZW5ndGg+Jyxcblx0XHRcdCdTdHJlbmd0aCBvZiBtbmVtb25pYy4gRGVmYXVsdCBpcyAxMjguJyxcblx0XHRcdCcxMjgnLFxuXHRcdClcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy12LCAtLXZlcnNpb24gPHZlcnNpb24+Jyxcblx0XHRcdCdWZXJzaW9uIG9mIHRoZSBrZXkuIFNob3VsZCBiZSBhbiBpbnRlZ2VyLiBEZWZhdWx0IGlzIDEuJyxcblx0XHRcdCcxJyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCcteCwgLS1pbmRleCA8aW5kZXg+Jyxcblx0XHRcdCdJbmRleCBuYW1lLiBXaWxsIHN0b3JlIHRoZSBrZXkgaW4gYSBKU09OIGluZGV4LiBJZiBub3QgcHJvdmlkZWQsIGluZGV4IHdpbGwgbm90IGJlIGNyZWF0ZWQuJyxcblx0XHQpXG5cdFx0LmFjdGlvbihhc3luYyAobiwgb3ApID0+IHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IHZlcnNpb24gPSBwYXJzZUludChvcC52ZXJzaW9uLCAxMCk7XG5cdFx0XHRcdGNvbnN0IGtleV9uYW1lID0gcGFyc2VGaWxlTmFtZShuKTtcblx0XHRcdFx0Y29uc3QgaW5kZXhfbmFtZSA9IG9wLmluZGV4ID8gcGFyc2VGaWxlTmFtZShvcC5pbmRleCkgOiB1bmRlZmluZWQ7XG5cdFx0XHRcdGNvbnN0IGFic3BhdGggPSBwYXJzZUFic3BhdGgocHJvY2Vzcy5jd2QoKSwgb3AucGF0aCk7XG5cblx0XHRcdFx0aWYgKGV4aXN0cyhhYnNwYXRoKSA9PT0gZmFsc2UpIHtcblx0XHRcdFx0XHR0aHJvdyBFcnJvcihcblx0XHRcdFx0XHRcdGBcIlBhdGggJHthYnNwYXRofSBkb2VzIG5vdCBleGlzdC4gUGxlYXNlIGNyZWF0ZSBpdCBmaXJzdC5cImAsXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IGdlbmVyYXRlZCA9IGF3YWl0IGdlbmVyYXRlU2VjcmV0KFxuXHRcdFx0XHRcdCdhZXMyNTYnLFxuXHRcdFx0XHRcdG1uZW1vbmljKHtcblx0XHRcdFx0XHRcdGxhbmd1YWdlOiBvcC5sYW5ndWFnZSxcblx0XHRcdFx0XHRcdHN0cmVuZ3RoOiBwYXJzZUludChvcC5zdHJlbmd0aCwgMTApLFxuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdGFic3BhdGgsXG5cdFx0XHRcdFx0a2V5X25hbWUsXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0aW5kZXhfbmFtZSxcblx0XHRcdFx0XHRcdHNlZWQ6IHtcblx0XHRcdFx0XHRcdFx0cGFzc3dvcmQ6IG9wLnBhc3N3b3JkLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHZlcnNpb24sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhcblx0XHRcdFx0XHRjaGFsay5ncmVlbignU2VjcmV0IGtleSBnZW5lcmF0ZWQgYXQ6JyksXG5cdFx0XHRcdFx0Z2VuZXJhdGVkLmZpbGVzLmZpbGUsXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0aWYgKGdlbmVyYXRlZC5maWxlcy5pbmRleCkge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKFxuXHRcdFx0XHRcdFx0Y2hhbGsuZ3JlZW4oJ1NlY3JldCBrZXkgaW5kZXhlZCBhdDonKSxcblx0XHRcdFx0XHRcdGdlbmVyYXRlZC5maWxlcy5pbmRleCxcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc29sZS5sb2coY2hhbGsuZ3JlZW4oJ01uZW1vbmljOicpLCBnZW5lcmF0ZWQubW5lbW9uaWMsICdcXG4nKTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhcblx0XHRcdFx0XHRjaGFsay55ZWxsb3coXG5cdFx0XHRcdFx0XHQnS2VlcCB0aGUgbW5lbW9uaWMgc2FmZSEgSXQgY2FuIGJlIHVzZWQgdG8gcmVjb3ZlciB0aGUga2V5IHBhaXIuJyxcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHQpO1xuXHRcdFx0fSBjYXRjaCAoZXJyb3I6IGFueSkge1xuXHRcdFx0XHRjb25zb2xlLmVycm9yKGNoYWxrLnJlZChlcnJvci5tZXNzYWdlKSk7XG5cdFx0XHRcdHJldHVybiBwcm9jZXNzLmV4aXQoMSk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBwcm9jZXNzLmV4aXQoMCk7XG5cdFx0fSk7XG59XG5cbi8qKlxuICogUmVjb3ZlciBhIHNlY3JldCBmcm9tIGEgbW5lbW9uaWMgYW5kIHNhdmUgaXQgdG8gYSBmaWxlLiBJdCB3aWxsIHJlbW92ZSB0aGVcbiAqIHByZXZpb3VzIGtleSBmcm9tIGluZGV4IHdoZW4gaW5kZXggaXMgc2V0LlxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIC0gVGhlIHByb2dyYW0gdG8gYWRkIHRoZSBjb21tYW5kIHRvLlxuICogQHJldHVybnMgVGhlIHByb2dyYW0uXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWNvdmVyQUVTMjU2U2VjcmV0Q29tbWFuZChwcm9ncmFtOiBDb21tYW5kKSB7XG5cdHByb2dyYW1cblx0XHQuY29tbWFuZCgncmVjb3ZlcjphZXMyNTYnKVxuXHRcdC5kZXNjcmlwdGlvbihcblx0XHRcdCdSZWNvdmVycyBhIGtleS1wYWlyIGZyb20gYSBtbmVtb25pYyBhbmQgc2F2ZSBpdCB0byBhIGZpbGUuIEl0IHdpbGwgcmVtb3ZlIHRoZSBwcmV2aW91cyBrZXkgZnJvbSBpbmRleCB3aGVuIGluZGV4IGlzIHNldC4nLFxuXHRcdClcblx0XHQuYXJndW1lbnQoJzxuYW1lPicsICdOYW1lIG9mIHRoZSBrZXkuJylcblx0XHQub3B0aW9uKCctcCwgLS1wYXRoIDxwYXRoPicsICdQYXRoIHRvIHNhdmUgdGhlIGtleS4nKVxuXHRcdC5vcHRpb24oJy1tLCAtLW1uZW1vbmljIDxtbmVtb25pYz4nLCAnTW5lbW9uaWMgdG8gcmVjb3ZlciB0aGUga2V5LicpXG5cdFx0Lm9wdGlvbignLXcsIC0tcGFzc3dvcmQgPHBhc3N3b3JkPicsICdQYXNzd29yZCBmb3Igc2VlZCBnZW5lcmF0aW9uLicpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctdiwgLS12ZXJzaW9uIDx2ZXJzaW9uPicsXG5cdFx0XHQnVmVyc2lvbiBvZiB0aGUga2V5LiBTaG91bGQgYmUgYW4gaW50ZWdlci4gRGVmYXVsdCBpcyAxLicsXG5cdFx0XHQnMScsXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLXgsIC0taW5kZXggPGluZGV4PicsXG5cdFx0XHQnSW5kZXggbmFtZS4gV2lsbCBzdG9yZSB0aGUga2V5IGluIGEgSlNPTiBpbmRleC4gSWYgbm90IHByb3ZpZGVkLCBpbmRleCB3aWxsIG5vdCBiZSBjcmVhdGVkLicsXG5cdFx0KVxuXHRcdC5hY3Rpb24oYXN5bmMgKG4sIHYsIG9wKSA9PiB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCB7IG1uZW1vbmljIH0gPSBvcDtcblxuXHRcdFx0XHRpZiAobW5lbW9uaWMgPT09IHVuZGVmaW5lZCB8fCBtbmVtb25pYyA9PT0gJycpIHtcblx0XHRcdFx0XHR0aHJvdyBFcnJvcignTW5lbW9uaWMgaXMgcmVxdWlyZWQuJyk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCB2ZXJzaW9uID0gcGFyc2VJbnQodiwgMTApO1xuXHRcdFx0XHRjb25zdCBrZXlfbmFtZSA9IHBhcnNlRmlsZU5hbWUobik7XG5cdFx0XHRcdGNvbnN0IGluZGV4X25hbWUgPSBvcC5pbmRleCA/IHBhcnNlRmlsZU5hbWUob3AuaW5kZXgpIDogdW5kZWZpbmVkO1xuXHRcdFx0XHRjb25zdCBhYnNwYXRoID0gcGFyc2VBYnNwYXRoKG9wLnBhdGgpO1xuXG5cdFx0XHRcdGlmIChpbmRleF9uYW1lKSB7XG5cdFx0XHRcdFx0YXdhaXQgcmVtb3ZlKCdzZWNyZXRzJywgYWJzcGF0aCwgaW5kZXhfbmFtZSwgdmVyc2lvbik7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBnZW5lcmF0ZWQgPSBhd2FpdCBnZW5lcmF0ZVNlY3JldChcblx0XHRcdFx0XHQnYWVzMjU2Jyxcblx0XHRcdFx0XHRtbmVtb25pYyxcblx0XHRcdFx0XHRhYnNwYXRoLFxuXHRcdFx0XHRcdGtleV9uYW1lLFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGluZGV4X25hbWUsXG5cdFx0XHRcdFx0XHRyZWNvdmVyOiB0cnVlLFxuXHRcdFx0XHRcdFx0c2VlZDoge1xuXHRcdFx0XHRcdFx0XHRwYXNzd29yZDogb3AucGFzc3dvcmQsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0dmVyc2lvbixcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdGNvbnNvbGUubG9nKFxuXHRcdFx0XHRcdGNoYWxrLmdyZWVuKCdTZWNyZXQga2V5IHJlY292ZXJlZCBhdDonKSxcblx0XHRcdFx0XHRnZW5lcmF0ZWQuZmlsZXMuZmlsZSxcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRpZiAoZ2VuZXJhdGVkLmZpbGVzLmluZGV4KSB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0XHRjaGFsay5ncmVlbignU2VjcmV0IGtleSByZWluZGV4ZWQgYXQ6JyksXG5cdFx0XHRcdFx0XHRnZW5lcmF0ZWQuZmlsZXMuaW5kZXgsXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKCdNbmVtb25pYzonKSwgZ2VuZXJhdGVkLm1uZW1vbmljLCAnXFxuJyk7XG5cblx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0Y2hhbGsueWVsbG93KFxuXHRcdFx0XHRcdFx0J0tlZXAgdGhlIG1uZW1vbmljIHNhZmUhIEl0IGNhbiBiZSB1c2VkIGFnYWluIHRvIHJlY292ZXIgdGhlIGtleSBwYWlyLicsXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0KTtcblx0XHRcdH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcihjaGFsay5yZWQoZXJyb3IubWVzc2FnZSkpO1xuXHRcdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDEpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDApO1xuXHRcdH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFB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Q0FBQ0ssS0FBSyxHQUFHbkIsYUFBYSxDQUFDYyxFQUFFLENBQUNLLEtBQUssQ0FBQyxHQUFHQyxTQUFTO01BQ2pFLE1BQU1DLE9BQU8sR0FBR3BCLFlBQVksQ0FBQ2EsRUFBRSxDQUFDVSxJQUFJLENBQUM7TUFFckMsSUFBSU4sVUFBVSxFQUFFO1FBQ2YsTUFBTWQsTUFBTSxDQUFDLFNBQVMsRUFBRWlCLE9BQU8sRUFBRUgsVUFBVSxFQUFFSCxPQUFPLENBQUM7TUFDdEQ7TUFFQSxNQUFNVyxTQUFTLEdBQUcsTUFBTXZCLGNBQWMsQ0FDckMsUUFBUSxFQUNSRCxRQUFRLEVBQ1JtQixPQUFPLEVBQ1BKLFFBQVEsRUFDUjtRQUNDQyxVQUFVO1FBQ1Z5QixPQUFPLEVBQUUsSUFBSTtRQUNiZCxJQUFJLEVBQUU7VUFDTEMsUUFBUSxFQUFFaEIsRUFBRSxDQUFDZ0I7UUFDZCxDQUFDO1FBQ0RmO01BQ0QsQ0FDRCxDQUFDO01BRURnQixPQUFPLENBQUNDLEdBQUcsQ0FDVmpDLEtBQUssQ0FBQ2tDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxFQUN2Q1AsU0FBUyxDQUFDUSxLQUFLLENBQUNDLElBQ2pCLENBQUM7TUFFRCxJQUFJVCxTQUFTLENBQUNRLEtBQUssQ0FBQ2YsS0FBSyxFQUFFO1FBQzFCWSxPQUFPLENBQUNDLEdBQUcsQ0FDVmpDLEtBQUssQ0FBQ2tDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxFQUN2Q1AsU0FBUyxDQUFDUSxLQUFLLENBQUNmLEtBQ2pCLENBQUM7TUFDRjtNQUVBWSxPQUFPLENBQUNDLEdBQUcsQ0FBQ2pDLEtBQUssQ0FBQ2tDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRVAsU0FBUyxDQUFDeEIsUUFBUSxFQUFFLElBQUksQ0FBQztNQUUvRDZCLE9BQU8sQ0FBQ0MsR0FBRyxDQUNWakMsS0FBSyxDQUFDcUMsTUFBTSxDQUNYLHVFQUNELENBQ0QsQ0FBQztJQUNGLENBQUMsQ0FBQyxPQUFPQyxLQUFVLEVBQUU7TUFDcEJOLE9BQU8sQ0FBQ00sS0FBSyxDQUFDdEMsS0FBSyxDQUFDdUMsR0FBRyxDQUFDRCxLQUFLLENBQUNFLE9BQU8sQ0FBQyxDQUFDO01BQ3ZDLE9BQU9qQixPQUFPLENBQUNrQixJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCO0lBRUEsT0FBT2xCLE9BQU8sQ0FBQ2tCLElBQUksQ0FBQyxDQUFDLENBQUM7RUFDdkIsQ0FBQyxDQUFDO0FBQ0oiLCJpZ25vcmVMaXN0IjpbXX0=
100
+
101
+ /**
102
+ * Generate a secret based on a mnemonic phrase. It should be used with aes256
103
+ * algorithm.
104
+ *
105
+ * @param program - The program to add the command to.
106
+ * @returns The program.
107
+ * @since 1.0.0
108
+ * @author Caique Araujo <caique@piggly.com.br>
109
+ */
110
+ export function generateMnemonicSecretCommand(program) {
111
+ program.command('generate:secret').description('Generates a secret based on a mnemonic phrase.').option('-p, --abspath [path]', 'Absolute path to save the secret. If not provided, it will be displayed in the terminal.').option('-f, --filename [filename]', 'File name to save the secret. If not provided, it will be saved in the "encryption.key" file.', 'encryption.key').option('-s, --salt [salt]', 'Salt to use for the secret. If not provided, it will be generated randomly.').option('-l, --length [length]', 'Length of the secret. Default is 32.', v => {
112
+ if (v === undefined) {
113
+ return 32;
114
+ }
115
+ if (Number.isSafeInteger(parseInt(v, 10)) === false) {
116
+ return -1;
117
+ }
118
+ return Number(v);
119
+ }).option('-m, --mnemonic [mnemonic]', 'Use a specific mnemonic seed to generate the root key. If not provided, a new mnemonic will be generated.', undefined).option('-w, --words [words]', 'Tells the size of works of the mnemonic to be generated. It must be one of the following values: 12 or 24. Default is 12 words.', v => {
120
+ if (v === undefined) {
121
+ return 12;
122
+ }
123
+ if (Number.isSafeInteger(parseInt(v, 10)) === false) {
124
+ return -1;
125
+ }
126
+ const words = Number(v);
127
+ if ([12, 24].includes(words)) {
128
+ return words;
129
+ }
130
+ return -1;
131
+ }).action(async op => {
132
+ try {
133
+ const wds = op.words ?? 12;
134
+ if (wds === -1) {
135
+ console.error(chalk.red('The provided words size seems to be incompatible. It must be one of the following values: 12 or 24.'));
136
+ return process.exit(1);
137
+ }
138
+ const mnm = op.mnemonic ? op.mnemonic : mnemonic({
139
+ language: 'english',
140
+ strength: wds === 12 ? 128 : 256
141
+ });
142
+ if (mnm.split(' ').length !== wds) {
143
+ console.error(chalk.red('The provided mnemonic seems to be incompatible. Are you sure it is correct?'));
144
+ return process.exit(1);
145
+ }
146
+ const key = aes.generateSecret(await seed(mnm), {
147
+ length: op.length === -1 ? undefined : Number(op?.length ?? 32),
148
+ salt: op.salt ? Buffer.from(op.salt) : undefined
149
+ });
150
+ console.log(chalk.yellow('Mnemonic:'), mnm);
151
+ if (op.abspath === undefined) {
152
+ console.log(chalk.green('Secret key:'), key.toString('base64'));
153
+ return process.exit(0);
154
+ }
155
+ const abspath = parseAbspath(process.cwd(), op.path);
156
+ if (exists(abspath) === false) {
157
+ throw Error(`Path "${abspath}" does not exist. Please create it first.`);
158
+ }
159
+ try {
160
+ await fs.writeFile(path.join(abspath, op.filename ?? 'encryption.key'), key.toString('base64'), {
161
+ flag: 'wx',
162
+ mode: 0o600
163
+ });
164
+ console.log(chalk.green(`Root key saved successfully in "${abspath}"`));
165
+ return process.exit(0);
166
+ } catch (err) {
167
+ if (err.code === 'EEXIST') {
168
+ console.warn(chalk.yellow(`The root key already exists in "${abspath}".`));
169
+ return process.exit(0);
170
+ }
171
+ console.error(chalk.red(`Failed to save the root key to "${abspath}": ${err.message}`));
172
+ return process.exit(1);
173
+ }
174
+ } catch (error) {
175
+ console.error(chalk.red(error.message));
176
+ return process.exit(1);
177
+ }
178
+ });
179
+ }
180
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwcm9taXNlcyIsImZzIiwicGF0aCIsImNoYWxrIiwicGFyc2VGaWxlTmFtZSIsInBhcnNlQWJzcGF0aCIsIm1uZW1vbmljIiwic2VlZCIsImdlbmVyYXRlU2VjcmV0IiwiYWVzIiwicmVtb3ZlIiwiZXhpc3RzIiwiZ2VuZXJhdGVBRVMyNTZTZWNyZXRDb21tYW5kIiwicHJvZ3JhbSIsImNvbW1hbmQiLCJkZXNjcmlwdGlvbiIsImFyZ3VtZW50Iiwib3B0aW9uIiwiYWN0aW9uIiwibiIsIm9wIiwidmVyc2lvbiIsInBhcnNlSW50Iiwia2V5X25hbWUiLCJpbmRleF9uYW1lIiwiaW5kZXgiLCJ1bmRlZmluZWQiLCJhYnNwYXRoIiwicHJvY2VzcyIsImN3ZCIsIkVycm9yIiwiZ2VuZXJhdGVkIiwibGFuZ3VhZ2UiLCJzdHJlbmd0aCIsInBhc3N3b3JkIiwiY29uc29sZSIsImxvZyIsImdyZWVuIiwiZmlsZXMiLCJmaWxlIiwieWVsbG93IiwiZXJyb3IiLCJyZWQiLCJtZXNzYWdlIiwiZXhpdCIsInJlY292ZXJBRVMyNTZTZWNyZXRDb21tYW5kIiwidiIsInJlY292ZXIiLCJnZW5lcmF0ZU1uZW1vbmljU2VjcmV0Q29tbWFuZCIsIk51bWJlciIsImlzU2FmZUludGVnZXIiLCJ3b3JkcyIsImluY2x1ZGVzIiwid2RzIiwibW5tIiwic3BsaXQiLCJsZW5ndGgiLCJrZXkiLCJzYWx0IiwiQnVmZmVyIiwiZnJvbSIsInRvU3RyaW5nIiwid3JpdGVGaWxlIiwiam9pbiIsImZpbGVuYW1lIiwiZmxhZyIsIm1vZGUiLCJlcnIiLCJjb2RlIiwid2FybiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9iaW4vY29tbWFuZHMvc2VjcmV0cy9hZXMyNTYudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdub2RlOmZzJztcbmltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5cbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcblxuaW1wb3J0IHsgcGFyc2VGaWxlTmFtZSwgcGFyc2VBYnNwYXRoLCBtbmVtb25pYywgc2VlZCB9IGZyb20gJ0AvdXRpbHMvaW5kZXguanMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVTZWNyZXQgfSBmcm9tICdAL2NvcmUvaW5kZXguanMnO1xuaW1wb3J0ICogYXMgYWVzIGZyb20gJ0AvY29yZS9zZWNyZXRzL2FlczI1Ni5qcyc7XG5pbXBvcnQgeyByZW1vdmUgfSBmcm9tICdAL3V0aWxzL2luZGV4ZXMuanMnO1xuaW1wb3J0IHsgZXhpc3RzIH0gZnJvbSAnQC91dGlscy9maWxlLmpzJztcblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHNlY3JldCBiYXNlZCBvbiBhIG1uZW1vbmljIHBocmFzZS4gSXQgc2hvdWxkIGJlIHVzZWQgd2l0aCBhZXMyNTZcbiAqIGFsZ29yaXRobS5cbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSBwcm9ncmFtIHRvIGFkZCB0aGUgY29tbWFuZCB0by5cbiAqIEByZXR1cm5zIFRoZSBwcm9ncmFtLlxuICogQHNpbmNlIDEuMC4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVBRVMyNTZTZWNyZXRDb21tYW5kKHByb2dyYW06IENvbW1hbmQpIHtcblx0cHJvZ3JhbVxuXHRcdC5jb21tYW5kKCdnZW5lcmF0ZTphZXMyNTYnKVxuXHRcdC5kZXNjcmlwdGlvbihcblx0XHRcdCdHZW5lcmF0ZXMgYSBzZWNyZXQgYmFzZWQgb24gYSBtbmVtb25pYyBwaHJhc2UuIEl0IHNob3VsZCBiZSB1c2VkIHdpdGggYWVzMjU2IGFsZ29yaXRobS4nLFxuXHRcdClcblx0XHQuYXJndW1lbnQoJzxuYW1lPicsICdOYW1lIG9mIHRoZSBrZXkuJylcblx0XHQub3B0aW9uKCctcCwgLS1wYXRoIDxwYXRoPicsICdQYXRoIHRvIHNhdmUgdGhlIGtleS4nKVxuXHRcdC5vcHRpb24oJy13LCAtLXBhc3N3b3JkIDxwYXNzd29yZD4nLCAnUGFzc3dvcmQgZm9yIHNlZWQgZ2VuZXJhdGlvbi4nKVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLWwsIC0tbGFuZ3VhZ2UgPGxhbmd1YWdlPicsXG5cdFx0XHQnTGFuZ3VhZ2Ugb2YgbW5lbW9uaWMuIE9ubHkgZW5nbGlzaCBpcyBhdmFpbGFibGUuJyxcblx0XHRcdCdlbmdsaXNoJyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctcywgLS1zdHJlbmd0aCA8c3RyZW5ndGg+Jyxcblx0XHRcdCdTdHJlbmd0aCBvZiBtbmVtb25pYy4gRGVmYXVsdCBpcyAxMjguJyxcblx0XHRcdCcxMjgnLFxuXHRcdClcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy12LCAtLXZlcnNpb24gPHZlcnNpb24+Jyxcblx0XHRcdCdWZXJzaW9uIG9mIHRoZSBrZXkuIFNob3VsZCBiZSBhbiBpbnRlZ2VyLiBEZWZhdWx0IGlzIDEuJyxcblx0XHRcdCcxJyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCcteCwgLS1pbmRleCA8aW5kZXg+Jyxcblx0XHRcdCdJbmRleCBuYW1lLiBXaWxsIHN0b3JlIHRoZSBrZXkgaW4gYSBKU09OIGluZGV4LiBJZiBub3QgcHJvdmlkZWQsIGluZGV4IHdpbGwgbm90IGJlIGNyZWF0ZWQuJyxcblx0XHQpXG5cdFx0LmFjdGlvbihhc3luYyAobiwgb3ApID0+IHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IHZlcnNpb24gPSBwYXJzZUludChvcC52ZXJzaW9uLCAxMCk7XG5cdFx0XHRcdGNvbnN0IGtleV9uYW1lID0gcGFyc2VGaWxlTmFtZShuKTtcblx0XHRcdFx0Y29uc3QgaW5kZXhfbmFtZSA9IG9wLmluZGV4ID8gcGFyc2VGaWxlTmFtZShvcC5pbmRleCkgOiB1bmRlZmluZWQ7XG5cdFx0XHRcdGNvbnN0IGFic3BhdGggPSBwYXJzZUFic3BhdGgocHJvY2Vzcy5jd2QoKSwgb3AucGF0aCk7XG5cblx0XHRcdFx0aWYgKGV4aXN0cyhhYnNwYXRoKSA9PT0gZmFsc2UpIHtcblx0XHRcdFx0XHR0aHJvdyBFcnJvcihcblx0XHRcdFx0XHRcdGBcIlBhdGggJHthYnNwYXRofSBkb2VzIG5vdCBleGlzdC4gUGxlYXNlIGNyZWF0ZSBpdCBmaXJzdC5cImAsXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IGdlbmVyYXRlZCA9IGF3YWl0IGdlbmVyYXRlU2VjcmV0KFxuXHRcdFx0XHRcdCdhZXMyNTYnLFxuXHRcdFx0XHRcdG1uZW1vbmljKHtcblx0XHRcdFx0XHRcdGxhbmd1YWdlOiBvcC5sYW5ndWFnZSxcblx0XHRcdFx0XHRcdHN0cmVuZ3RoOiBwYXJzZUludChvcC5zdHJlbmd0aCwgMTApLFxuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdGFic3BhdGgsXG5cdFx0XHRcdFx0a2V5X25hbWUsXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0aW5kZXhfbmFtZSxcblx0XHRcdFx0XHRcdHNlZWQ6IHtcblx0XHRcdFx0XHRcdFx0cGFzc3dvcmQ6IG9wLnBhc3N3b3JkLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHZlcnNpb24sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhcblx0XHRcdFx0XHRjaGFsay5ncmVlbignU2VjcmV0IGtleSBnZW5lcmF0ZWQgYXQ6JyksXG5cdFx0XHRcdFx0Z2VuZXJhdGVkLmZpbGVzLmZpbGUsXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0aWYgKGdlbmVyYXRlZC5maWxlcy5pbmRleCkge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKFxuXHRcdFx0XHRcdFx0Y2hhbGsuZ3JlZW4oJ1NlY3JldCBrZXkgaW5kZXhlZCBhdDonKSxcblx0XHRcdFx0XHRcdGdlbmVyYXRlZC5maWxlcy5pbmRleCxcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc29sZS5sb2coY2hhbGsuZ3JlZW4oJ01uZW1vbmljOicpLCBnZW5lcmF0ZWQubW5lbW9uaWMsICdcXG4nKTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhcblx0XHRcdFx0XHRjaGFsay55ZWxsb3coXG5cdFx0XHRcdFx0XHQnS2VlcCB0aGUgbW5lbW9uaWMgc2FmZSEgSXQgY2FuIGJlIHVzZWQgdG8gcmVjb3ZlciB0aGUga2V5IHBhaXIuJyxcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHQpO1xuXHRcdFx0fSBjYXRjaCAoZXJyb3I6IGFueSkge1xuXHRcdFx0XHRjb25zb2xlLmVycm9yKGNoYWxrLnJlZChlcnJvci5tZXNzYWdlKSk7XG5cdFx0XHRcdHJldHVybiBwcm9jZXNzLmV4aXQoMSk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBwcm9jZXNzLmV4aXQoMCk7XG5cdFx0fSk7XG59XG5cbi8qKlxuICogUmVjb3ZlciBhIHNlY3JldCBmcm9tIGEgbW5lbW9uaWMgYW5kIHNhdmUgaXQgdG8gYSBmaWxlLiBJdCB3aWxsIHJlbW92ZSB0aGVcbiAqIHByZXZpb3VzIGtleSBmcm9tIGluZGV4IHdoZW4gaW5kZXggaXMgc2V0LlxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIC0gVGhlIHByb2dyYW0gdG8gYWRkIHRoZSBjb21tYW5kIHRvLlxuICogQHJldHVybnMgVGhlIHByb2dyYW0uXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWNvdmVyQUVTMjU2U2VjcmV0Q29tbWFuZChwcm9ncmFtOiBDb21tYW5kKSB7XG5cdHByb2dyYW1cblx0XHQuY29tbWFuZCgncmVjb3ZlcjphZXMyNTYnKVxuXHRcdC5kZXNjcmlwdGlvbihcblx0XHRcdCdSZWNvdmVycyBhIGtleS1wYWlyIGZyb20gYSBtbmVtb25pYyBhbmQgc2F2ZSBpdCB0byBhIGZpbGUuIEl0IHdpbGwgcmVtb3ZlIHRoZSBwcmV2aW91cyBrZXkgZnJvbSBpbmRleCB3aGVuIGluZGV4IGlzIHNldC4nLFxuXHRcdClcblx0XHQuYXJndW1lbnQoJzxuYW1lPicsICdOYW1lIG9mIHRoZSBrZXkuJylcblx0XHQub3B0aW9uKCctcCwgLS1wYXRoIDxwYXRoPicsICdQYXRoIHRvIHNhdmUgdGhlIGtleS4nKVxuXHRcdC5vcHRpb24oJy1tLCAtLW1uZW1vbmljIDxtbmVtb25pYz4nLCAnTW5lbW9uaWMgdG8gcmVjb3ZlciB0aGUga2V5LicpXG5cdFx0Lm9wdGlvbignLXcsIC0tcGFzc3dvcmQgPHBhc3N3b3JkPicsICdQYXNzd29yZCBmb3Igc2VlZCBnZW5lcmF0aW9uLicpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctdiwgLS12ZXJzaW9uIDx2ZXJzaW9uPicsXG5cdFx0XHQnVmVyc2lvbiBvZiB0aGUga2V5LiBTaG91bGQgYmUgYW4gaW50ZWdlci4gRGVmYXVsdCBpcyAxLicsXG5cdFx0XHQnMScsXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLXgsIC0taW5kZXggPGluZGV4PicsXG5cdFx0XHQnSW5kZXggbmFtZS4gV2lsbCBzdG9yZSB0aGUga2V5IGluIGEgSlNPTiBpbmRleC4gSWYgbm90IHByb3ZpZGVkLCBpbmRleCB3aWxsIG5vdCBiZSBjcmVhdGVkLicsXG5cdFx0KVxuXHRcdC5hY3Rpb24oYXN5bmMgKG4sIHYsIG9wKSA9PiB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCB7IG1uZW1vbmljIH0gPSBvcDtcblxuXHRcdFx0XHRpZiAobW5lbW9uaWMgPT09IHVuZGVmaW5lZCB8fCBtbmVtb25pYyA9PT0gJycpIHtcblx0XHRcdFx0XHR0aHJvdyBFcnJvcignTW5lbW9uaWMgaXMgcmVxdWlyZWQuJyk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCB2ZXJzaW9uID0gcGFyc2VJbnQodiwgMTApO1xuXHRcdFx0XHRjb25zdCBrZXlfbmFtZSA9IHBhcnNlRmlsZU5hbWUobik7XG5cdFx0XHRcdGNvbnN0IGluZGV4X25hbWUgPSBvcC5pbmRleCA/IHBhcnNlRmlsZU5hbWUob3AuaW5kZXgpIDogdW5kZWZpbmVkO1xuXHRcdFx0XHRjb25zdCBhYnNwYXRoID0gcGFyc2VBYnNwYXRoKG9wLnBhdGgpO1xuXG5cdFx0XHRcdGlmIChpbmRleF9uYW1lKSB7XG5cdFx0XHRcdFx0YXdhaXQgcmVtb3ZlKCdzZWNyZXRzJywgYWJzcGF0aCwgaW5kZXhfbmFtZSwgdmVyc2lvbik7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBnZW5lcmF0ZWQgPSBhd2FpdCBnZW5lcmF0ZVNlY3JldChcblx0XHRcdFx0XHQnYWVzMjU2Jyxcblx0XHRcdFx0XHRtbmVtb25pYyxcblx0XHRcdFx0XHRhYnNwYXRoLFxuXHRcdFx0XHRcdGtleV9uYW1lLFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGluZGV4X25hbWUsXG5cdFx0XHRcdFx0XHRyZWNvdmVyOiB0cnVlLFxuXHRcdFx0XHRcdFx0c2VlZDoge1xuXHRcdFx0XHRcdFx0XHRwYXNzd29yZDogb3AucGFzc3dvcmQsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0dmVyc2lvbixcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdGNvbnNvbGUubG9nKFxuXHRcdFx0XHRcdGNoYWxrLmdyZWVuKCdTZWNyZXQga2V5IHJlY292ZXJlZCBhdDonKSxcblx0XHRcdFx0XHRnZW5lcmF0ZWQuZmlsZXMuZmlsZSxcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRpZiAoZ2VuZXJhdGVkLmZpbGVzLmluZGV4KSB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0XHRjaGFsay5ncmVlbignU2VjcmV0IGtleSByZWluZGV4ZWQgYXQ6JyksXG5cdFx0XHRcdFx0XHRnZW5lcmF0ZWQuZmlsZXMuaW5kZXgsXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKCdNbmVtb25pYzonKSwgZ2VuZXJhdGVkLm1uZW1vbmljLCAnXFxuJyk7XG5cblx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0Y2hhbGsueWVsbG93KFxuXHRcdFx0XHRcdFx0J0tlZXAgdGhlIG1uZW1vbmljIHNhZmUhIEl0IGNhbiBiZSB1c2VkIGFnYWluIHRvIHJlY292ZXIgdGhlIGtleSBwYWlyLicsXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0KTtcblx0XHRcdH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcihjaGFsay5yZWQoZXJyb3IubWVzc2FnZSkpO1xuXHRcdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDEpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDApO1xuXHRcdH0pO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgc2VjcmV0IGJhc2VkIG9uIGEgbW5lbW9uaWMgcGhyYXNlLiBJdCBzaG91bGQgYmUgdXNlZCB3aXRoIGFlczI1NlxuICogYWxnb3JpdGhtLlxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIC0gVGhlIHByb2dyYW0gdG8gYWRkIHRoZSBjb21tYW5kIHRvLlxuICogQHJldHVybnMgVGhlIHByb2dyYW0uXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZU1uZW1vbmljU2VjcmV0Q29tbWFuZChwcm9ncmFtOiBDb21tYW5kKSB7XG5cdHByb2dyYW1cblx0XHQuY29tbWFuZCgnZ2VuZXJhdGU6c2VjcmV0Jylcblx0XHQuZGVzY3JpcHRpb24oJ0dlbmVyYXRlcyBhIHNlY3JldCBiYXNlZCBvbiBhIG1uZW1vbmljIHBocmFzZS4nKVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLXAsIC0tYWJzcGF0aCBbcGF0aF0nLFxuXHRcdFx0J0Fic29sdXRlIHBhdGggdG8gc2F2ZSB0aGUgc2VjcmV0LiBJZiBub3QgcHJvdmlkZWQsIGl0IHdpbGwgYmUgZGlzcGxheWVkIGluIHRoZSB0ZXJtaW5hbC4nLFxuXHRcdClcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy1mLCAtLWZpbGVuYW1lIFtmaWxlbmFtZV0nLFxuXHRcdFx0J0ZpbGUgbmFtZSB0byBzYXZlIHRoZSBzZWNyZXQuIElmIG5vdCBwcm92aWRlZCwgaXQgd2lsbCBiZSBzYXZlZCBpbiB0aGUgXCJlbmNyeXB0aW9uLmtleVwiIGZpbGUuJyxcblx0XHRcdCdlbmNyeXB0aW9uLmtleScsXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLXMsIC0tc2FsdCBbc2FsdF0nLFxuXHRcdFx0J1NhbHQgdG8gdXNlIGZvciB0aGUgc2VjcmV0LiBJZiBub3QgcHJvdmlkZWQsIGl0IHdpbGwgYmUgZ2VuZXJhdGVkIHJhbmRvbWx5LicsXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLWwsIC0tbGVuZ3RoIFtsZW5ndGhdJyxcblx0XHRcdCdMZW5ndGggb2YgdGhlIHNlY3JldC4gRGVmYXVsdCBpcyAzMi4nLFxuXHRcdFx0KHY6IHN0cmluZyk6IG51bWJlciA9PiB7XG5cdFx0XHRcdGlmICh2ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRyZXR1cm4gMzI7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoTnVtYmVyLmlzU2FmZUludGVnZXIocGFyc2VJbnQodiwgMTApKSA9PT0gZmFsc2UpIHtcblx0XHRcdFx0XHRyZXR1cm4gLTE7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gTnVtYmVyKHYpO1xuXHRcdFx0fSxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctbSwgLS1tbmVtb25pYyBbbW5lbW9uaWNdJyxcblx0XHRcdCdVc2UgYSBzcGVjaWZpYyBtbmVtb25pYyBzZWVkIHRvIGdlbmVyYXRlIHRoZSByb290IGtleS4gSWYgbm90IHByb3ZpZGVkLCBhIG5ldyBtbmVtb25pYyB3aWxsIGJlIGdlbmVyYXRlZC4nLFxuXHRcdFx0dW5kZWZpbmVkLFxuXHRcdClcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy13LCAtLXdvcmRzIFt3b3Jkc10nLFxuXHRcdFx0J1RlbGxzIHRoZSBzaXplIG9mIHdvcmtzIG9mIHRoZSBtbmVtb25pYyB0byBiZSBnZW5lcmF0ZWQuIEl0IG11c3QgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOiAxMiBvciAyNC4gRGVmYXVsdCBpcyAxMiB3b3Jkcy4nLFxuXHRcdFx0KHY6IHN0cmluZyk6IG51bWJlciA9PiB7XG5cdFx0XHRcdGlmICh2ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRyZXR1cm4gMTI7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoTnVtYmVyLmlzU2FmZUludGVnZXIocGFyc2VJbnQodiwgMTApKSA9PT0gZmFsc2UpIHtcblx0XHRcdFx0XHRyZXR1cm4gLTE7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCB3b3JkcyA9IE51bWJlcih2KTtcblxuXHRcdFx0XHRpZiAoWzEyLCAyNF0uaW5jbHVkZXMod29yZHMpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHdvcmRzO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIC0xO1xuXHRcdFx0fSxcblx0XHQpXG5cdFx0LmFjdGlvbihhc3luYyBvcCA9PiB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCB3ZHMgPSBvcC53b3JkcyA/PyAxMjtcblxuXHRcdFx0XHRpZiAod2RzID09PSAtMSkge1xuXHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoXG5cdFx0XHRcdFx0XHRjaGFsay5yZWQoXG5cdFx0XHRcdFx0XHRcdCdUaGUgcHJvdmlkZWQgd29yZHMgc2l6ZSBzZWVtcyB0byBiZSBpbmNvbXBhdGlibGUuIEl0IG11c3QgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOiAxMiBvciAyNC4nLFxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0cmV0dXJuIHByb2Nlc3MuZXhpdCgxKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IG1ubSA9IG9wLm1uZW1vbmljXG5cdFx0XHRcdFx0PyBvcC5tbmVtb25pY1xuXHRcdFx0XHRcdDogbW5lbW9uaWMoe1xuXHRcdFx0XHRcdFx0XHRsYW5ndWFnZTogJ2VuZ2xpc2gnLFxuXHRcdFx0XHRcdFx0XHRzdHJlbmd0aDogd2RzID09PSAxMiA/IDEyOCA6IDI1Nixcblx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdGlmIChtbm0uc3BsaXQoJyAnKS5sZW5ndGggIT09IHdkcykge1xuXHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoXG5cdFx0XHRcdFx0XHRjaGFsay5yZWQoXG5cdFx0XHRcdFx0XHRcdCdUaGUgcHJvdmlkZWQgbW5lbW9uaWMgc2VlbXMgdG8gYmUgaW5jb21wYXRpYmxlLiBBcmUgeW91IHN1cmUgaXQgaXMgY29ycmVjdD8nLFxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0cmV0dXJuIHByb2Nlc3MuZXhpdCgxKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IGtleSA9IGFlcy5nZW5lcmF0ZVNlY3JldChhd2FpdCBzZWVkKG1ubSksIHtcblx0XHRcdFx0XHRsZW5ndGg6IG9wLmxlbmd0aCA9PT0gLTEgPyB1bmRlZmluZWQgOiBOdW1iZXIob3A/Lmxlbmd0aCA/PyAzMiksXG5cdFx0XHRcdFx0c2FsdDogb3Auc2FsdCA/IEJ1ZmZlci5mcm9tKG9wLnNhbHQpIDogdW5kZWZpbmVkLFxuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhjaGFsay55ZWxsb3coJ01uZW1vbmljOicpLCBtbm0pO1xuXG5cdFx0XHRcdGlmIChvcC5hYnNwYXRoID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhjaGFsay5ncmVlbignU2VjcmV0IGtleTonKSwga2V5LnRvU3RyaW5nKCdiYXNlNjQnKSk7XG5cdFx0XHRcdFx0cmV0dXJuIHByb2Nlc3MuZXhpdCgwKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IGFic3BhdGggPSBwYXJzZUFic3BhdGgocHJvY2Vzcy5jd2QoKSwgb3AucGF0aCk7XG5cblx0XHRcdFx0aWYgKGV4aXN0cyhhYnNwYXRoKSA9PT0gZmFsc2UpIHtcblx0XHRcdFx0XHR0aHJvdyBFcnJvcihcblx0XHRcdFx0XHRcdGBQYXRoIFwiJHthYnNwYXRofVwiIGRvZXMgbm90IGV4aXN0LiBQbGVhc2UgY3JlYXRlIGl0IGZpcnN0LmAsXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0YXdhaXQgZnMud3JpdGVGaWxlKFxuXHRcdFx0XHRcdFx0cGF0aC5qb2luKGFic3BhdGgsIG9wLmZpbGVuYW1lID8/ICdlbmNyeXB0aW9uLmtleScpLFxuXHRcdFx0XHRcdFx0a2V5LnRvU3RyaW5nKCdiYXNlNjQnKSxcblx0XHRcdFx0XHRcdHsgZmxhZzogJ3d4JywgbW9kZTogMG82MDAgfSxcblx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0XHRjaGFsay5ncmVlbihgUm9vdCBrZXkgc2F2ZWQgc3VjY2Vzc2Z1bGx5IGluIFwiJHthYnNwYXRofVwiYCksXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDApO1xuXHRcdFx0XHR9IGNhdGNoIChlcnI6IGFueSkge1xuXHRcdFx0XHRcdGlmIChlcnIuY29kZSA9PT0gJ0VFWElTVCcpIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUud2Fybihcblx0XHRcdFx0XHRcdFx0Y2hhbGsueWVsbG93KGBUaGUgcm9vdCBrZXkgYWxyZWFkeSBleGlzdHMgaW4gXCIke2Fic3BhdGh9XCIuYCksXG5cdFx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDApO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoXG5cdFx0XHRcdFx0XHRjaGFsay5yZWQoXG5cdFx0XHRcdFx0XHRcdGBGYWlsZWQgdG8gc2F2ZSB0aGUgcm9vdCBrZXkgdG8gXCIke2Fic3BhdGh9XCI6ICR7ZXJyLm1lc3NhZ2V9YCxcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdHJldHVybiBwcm9jZXNzLmV4aXQoMSk7XG5cdFx0XHRcdH1cblx0XHRcdH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcihjaGFsay5yZWQoZXJyb3IubWVzc2FnZSkpO1xuXHRcdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDEpO1xuXHRcdFx0fVxuXHRcdH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLFNBQVNBLFFBQVEsSUFBSUMsRUFBRSxRQUFRLFNBQVM7QUFDeEMsT0FBT0MsSUFBSSxNQUFNLFdBQVc7QUFHNUIsT0FBT0MsS0FBSyxNQUFNLE9BQU87QUFFekIsU0FBU0MsYUFBYSxFQUFFQyxZQUFZLEVBQUVDLFFBQVEsRUFBRUMsSUFBSTtBQUNwRCxTQUFTQyxjQUFjO0FBQ3ZCLE9BQU8sS0FBS0MsR0FBRztBQUNmLFNBQVNDLE1BQU07QUFDZixTQUFTQyxNQUFNOztBQUVmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sU0FBU0MsMkJBQTJCQSxDQUFDQyxPQUFnQixFQUFFO0VBQzdEQSxPQUFPLENBQ0xDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUMxQkMsV0FBVyxDQUNYLHlGQUNELENBQUMsQ0FDQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxDQUN0Q0MsTUFBTSxDQUFDLG1CQUFtQixFQUFFLHVCQUF1QixDQUFDLENBQ3BEQSxNQUFNLENBQUMsMkJBQTJCLEVBQUUsK0JBQStCLENBQUMsQ0FDcEVBLE1BQU0sQ0FDTiwyQkFBMkIsRUFDM0Isa0RBQWtELEVBQ2xELFNBQ0QsQ0FBQyxDQUNBQSxNQUFNLENBQ04sMkJBQTJCLEVBQzNCLHVDQUF1QyxFQUN2QyxLQUNELENBQUMsQ0FDQUEsTUFBTSxDQUNOLHlCQUF5QixFQUN6Qix5REFBeUQsRUFDekQsR0FDRCxDQUFDLENB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QU8sR0FBR3RCLFlBQVksQ0FBQ3VCLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLENBQUMsRUFBRVQsRUFBRSxDQUFDbEIsSUFBSSxDQUFDO01BRXBELElBQUlTLE1BQU0sQ0FBQ2dCLE9BQU8sQ0FBQyxLQUFLLEtBQUssRUFBRTtRQUM5QixNQUFNRyxLQUFLLENBQ1YsU0FBU0gsT0FBTywyQ0FDakIsQ0FBQztNQUNGO01BRUEsSUFBSTtRQUNILE1BQU0xQixFQUFFLENBQUM2RCxTQUFTLENBQ2pCNUQsSUFBSSxDQUFDNkQsSUFBSSxDQUFDcEMsT0FBTyxFQUFFUCxFQUFFLENBQUM0QyxRQUFRLElBQUksZ0JBQWdCLENBQUMsRUFDbkRQLEdBQUcsQ0FBQ0ksUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUN0QjtVQUFFSSxJQUFJLEVBQUUsSUFBSTtVQUFFQyxJQUFJLEVBQUU7UUFBTSxDQUMzQixDQUFDO1FBRUQvQixPQUFPLENBQUNDLEdBQUcsQ0FDVmpDLEtBQUssQ0FBQ2tDLEtBQUssQ0FBQyxtQ0FBbUNWLE9BQU8sR0FBRyxDQUMxRCxDQUFDO1FBQ0QsT0FBT0MsT0FBTyxDQUFDZ0IsSUFBSSxDQUFDLENBQUMsQ0FBQztNQUN2QixDQUFDLENBQUMsT0FBT3VCLEdBQVEsRUFBRTtRQUNsQixJQUFJQSxHQUFHLENBQUNDLElBQUksS0FBSyxRQUFRLEVBQUU7VUFDMUJqQyxPQUFPLENBQUNrQyxJQUFJLENBQ1hsRSxLQUFLLENBQUNxQyxNQUFNLENBQUMsbUNBQW1DYixPQUFPLElBQUksQ0FDNUQsQ0FBQztVQUVELE9BQU9DLE9BQU8sQ0FBQ2dCLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdkI7UUFFQVQsT0FBTyxDQUFDTSxLQUFLLENBQ1p0QyxLQUFLLENBQUN1QyxHQUFHLENBQ1IsbUNBQW1DZixPQUFPLE1BQU13QyxHQUFHLENBQUN4QixPQUFPLEVBQzVELENBQ0QsQ0FBQztRQUVELE9BQU9mLE9BQU8sQ0FBQ2dCLElBQUksQ0FBQyxDQUFDLENBQUM7TUFDdkI7SUFDRCxDQUFDLENBQUMsT0FBT0gsS0FBVSxFQUFFO01BQ3BCTixPQUFPLENBQUNNLEtBQUssQ0FBQ3RDLEtBQUssQ0FBQ3VDLEdBQUcsQ0FBQ0QsS0FBSyxDQUFDRSxPQUFPLENBQUMsQ0FBQztNQUN2QyxPQUFPZixPQUFPLENBQUNnQixJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCO0VBQ0QsQ0FBQyxDQUFDO0FBQ0oiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import { Command } from 'commander';
3
+ import { generateMnemonicSecretCommand, generateAES256SecretCommand, recoverAES256SecretCommand } from "./commands/secrets/aes256.js";
3
4
  import { generateEd25519KeyPairCommand, recoverEd25519KeyPairCommand } from "./commands/keys/ed25519.js";
4
- import { generateAES256SecretCommand, recoverAES256SecretCommand } from "./commands/secrets/aes256.js";
5
5
  import { generateMnemonic } from "./commands/mnemonic.js";
6
6
  const program = new Command();
7
- const commands = [generateMnemonic, generateEd25519KeyPairCommand, recoverEd25519KeyPairCommand, generateAES256SecretCommand, recoverAES256SecretCommand];
7
+ const commands = [generateMnemonic, generateEd25519KeyPairCommand, recoverEd25519KeyPairCommand, generateAES256SecretCommand, recoverAES256SecretCommand, generateMnemonicSecretCommand];
8
8
  commands.forEach(c => c(program));
9
9
  program.parse();
10
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb21tYW5kIiwiZ2VuZXJhdGVFZDI1NTE5S2V5UGFpckNvbW1hbmQiLCJyZWNvdmVyRWQyNTUxOUtleVBhaXJDb21tYW5kIiwiZ2VuZXJhdGVBRVMyNTZTZWNyZXRDb21tYW5kIiwicmVjb3ZlckFFUzI1NlNlY3JldENvbW1hbmQiLCJnZW5lcmF0ZU1uZW1vbmljIiwicHJvZ3JhbSIsImNvbW1hbmRzIiwiZm9yRWFjaCIsImMiLCJwYXJzZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaW4vaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5cbmltcG9ydCB7XG5cdGdlbmVyYXRlRWQyNTUxOUtleVBhaXJDb21tYW5kLFxuXHRyZWNvdmVyRWQyNTUxOUtleVBhaXJDb21tYW5kLFxufSBmcm9tICdAL2Jpbi9jb21tYW5kcy9rZXlzL2VkMjU1MTkuanMnO1xuaW1wb3J0IHtcblx0Z2VuZXJhdGVBRVMyNTZTZWNyZXRDb21tYW5kLFxuXHRyZWNvdmVyQUVTMjU2U2VjcmV0Q29tbWFuZCxcbn0gZnJvbSAnQC9iaW4vY29tbWFuZHMvc2VjcmV0cy9hZXMyNTYuanMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVNbmVtb25pYyB9IGZyb20gJ0AvYmluL2NvbW1hbmRzL21uZW1vbmljLmpzJztcblxuY29uc3QgcHJvZ3JhbSA9IG5ldyBDb21tYW5kKCk7XG5cbmNvbnN0IGNvbW1hbmRzID0gW1xuXHRnZW5lcmF0ZU1uZW1vbmljLFxuXHRnZW5lcmF0ZUVkMjU1MTlLZXlQYWlyQ29tbWFuZCxcblx0cmVjb3ZlckVkMjU1MTlLZXlQYWlyQ29tbWFuZCxcblx0Z2VuZXJhdGVBRVMyNTZTZWNyZXRDb21tYW5kLFxuXHRyZWNvdmVyQUVTMjU2U2VjcmV0Q29tbWFuZCxcbl07XG5cbmNvbW1hbmRzLmZvckVhY2goYyA9PiBjKHByb2dyYW0pKTtcblxucHJvZ3JhbS5wYXJzZSgpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLFNBQVNBLE9BQU8sUUFBUSxXQUFXO0FBRW5DLFNBQ0NDLDZCQUE2QixFQUM3QkMsNEJBQTRCO0FBRTdCLFNBQ0NDLDJCQUEyQixFQUMzQkMsMEJBQTBCO0FBRTNCLFNBQVNDLGdCQUFnQjtBQUV6QixNQUFNQyxPQUFPLEdBQUcsSUFBSU4sT0FBTyxDQUFDLENBQUM7QUFFN0IsTUFBTU8sUUFBUSxHQUFHLENBQ2hCRixnQkFBZ0IsRUFDaEJKLDZCQUE2QixFQUM3QkMsNEJBQTRCLEVBQzVCQywyQkFBMkIsRUFDM0JDLDBCQUEwQixDQUMxQjtBQUVERyxRQUFRLENBQUNDLE9BQU8sQ0FBQ0MsQ0FBQyxJQUFJQSxDQUFDLENBQUNILE9BQU8sQ0FBQyxDQUFDO0FBRWpDQSxPQUFPLENBQUNJLEtBQUssQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119
10
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb21tYW5kIiwiZ2VuZXJhdGVNbmVtb25pY1NlY3JldENvbW1hbmQiLCJnZW5lcmF0ZUFFUzI1NlNlY3JldENvbW1hbmQiLCJyZWNvdmVyQUVTMjU2U2VjcmV0Q29tbWFuZCIsImdlbmVyYXRlRWQyNTUxOUtleVBhaXJDb21tYW5kIiwicmVjb3ZlckVkMjU1MTlLZXlQYWlyQ29tbWFuZCIsImdlbmVyYXRlTW5lbW9uaWMiLCJwcm9ncmFtIiwiY29tbWFuZHMiLCJmb3JFYWNoIiwiYyIsInBhcnNlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Jpbi9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcblxuaW1wb3J0IHtcblx0Z2VuZXJhdGVNbmVtb25pY1NlY3JldENvbW1hbmQsXG5cdGdlbmVyYXRlQUVTMjU2U2VjcmV0Q29tbWFuZCxcblx0cmVjb3ZlckFFUzI1NlNlY3JldENvbW1hbmQsXG59IGZyb20gJ0AvYmluL2NvbW1hbmRzL3NlY3JldHMvYWVzMjU2LmpzJztcbmltcG9ydCB7XG5cdGdlbmVyYXRlRWQyNTUxOUtleVBhaXJDb21tYW5kLFxuXHRyZWNvdmVyRWQyNTUxOUtleVBhaXJDb21tYW5kLFxufSBmcm9tICdAL2Jpbi9jb21tYW5kcy9rZXlzL2VkMjU1MTkuanMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVNbmVtb25pYyB9IGZyb20gJ0AvYmluL2NvbW1hbmRzL21uZW1vbmljLmpzJztcblxuY29uc3QgcHJvZ3JhbSA9IG5ldyBDb21tYW5kKCk7XG5cbmNvbnN0IGNvbW1hbmRzID0gW1xuXHRnZW5lcmF0ZU1uZW1vbmljLFxuXHRnZW5lcmF0ZUVkMjU1MTlLZXlQYWlyQ29tbWFuZCxcblx0cmVjb3ZlckVkMjU1MTlLZXlQYWlyQ29tbWFuZCxcblx0Z2VuZXJhdGVBRVMyNTZTZWNyZXRDb21tYW5kLFxuXHRyZWNvdmVyQUVTMjU2U2VjcmV0Q29tbWFuZCxcblx0Z2VuZXJhdGVNbmVtb25pY1NlY3JldENvbW1hbmQsXG5dO1xuXG5jb21tYW5kcy5mb3JFYWNoKGMgPT4gYyhwcm9ncmFtKSk7XG5cbnByb2dyYW0ucGFyc2UoKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxTQUFTQSxPQUFPLFFBQVEsV0FBVztBQUVuQyxTQUNDQyw2QkFBNkIsRUFDN0JDLDJCQUEyQixFQUMzQkMsMEJBQTBCO0FBRTNCLFNBQ0NDLDZCQUE2QixFQUM3QkMsNEJBQTRCO0FBRTdCLFNBQVNDLGdCQUFnQjtBQUV6QixNQUFNQyxPQUFPLEdBQUcsSUFBSVAsT0FBTyxDQUFDLENBQUM7QUFFN0IsTUFBTVEsUUFBUSxHQUFHLENBQ2hCRixnQkFBZ0IsRUFDaEJGLDZCQUE2QixFQUM3QkMsNEJBQTRCLEVBQzVCSCwyQkFBMkIsRUFDM0JDLDBCQUEwQixFQUMxQkYsNkJBQTZCLENBQzdCO0FBRURPLFFBQVEsQ0FBQ0MsT0FBTyxDQUFDQyxDQUFDLElBQUlBLENBQUMsQ0FBQ0gsT0FBTyxDQUFDLENBQUM7QUFFakNBLE9BQU8sQ0FBQ0ksS0FBSyxDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -19,3 +19,13 @@ export declare function generateAES256SecretCommand(program: Command): void;
19
19
  * @author Caique Araujo <caique@piggly.com.br>
20
20
  */
21
21
  export declare function recoverAES256SecretCommand(program: Command): void;
22
+ /**
23
+ * Generate a secret based on a mnemonic phrase. It should be used with aes256
24
+ * algorithm.
25
+ *
26
+ * @param program - The program to add the command to.
27
+ * @returns The program.
28
+ * @since 1.0.0
29
+ * @author Caique Araujo <caique@piggly.com.br>
30
+ */
31
+ export declare function generateMnemonicSecretCommand(program: Command): void;
@@ -19,3 +19,13 @@ export declare function generateAES256SecretCommand(program: Command): void;
19
19
  * @author Caique Araujo <caique@piggly.com.br>
20
20
  */
21
21
  export declare function recoverAES256SecretCommand(program: Command): void;
22
+ /**
23
+ * Generate a secret based on a mnemonic phrase. It should be used with aes256
24
+ * algorithm.
25
+ *
26
+ * @param program - The program to add the command to.
27
+ * @returns The program.
28
+ * @since 1.0.0
29
+ * @author Caique Araujo <caique@piggly.com.br>
30
+ */
31
+ export declare function generateMnemonicSecretCommand(program: Command): void;
@@ -19,3 +19,13 @@ export declare function generateAES256SecretCommand(program: Command): void;
19
19
  * @author Caique Araujo <caique@piggly.com.br>
20
20
  */
21
21
  export declare function recoverAES256SecretCommand(program: Command): void;
22
+ /**
23
+ * Generate a secret based on a mnemonic phrase. It should be used with aes256
24
+ * algorithm.
25
+ *
26
+ * @param program - The program to add the command to.
27
+ * @returns The program.
28
+ * @since 1.0.0
29
+ * @author Caique Araujo <caique@piggly.com.br>
30
+ */
31
+ export declare function generateMnemonicSecretCommand(program: Command): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@piggly/secrets",
3
- "version": "0.8.0",
3
+ "version": "0.8.1",
4
4
  "description": "An ESM/CommonJS library to better manage local secrets.",
5
5
  "type": "module",
6
6
  "scripts": {