44 lines
1.6 KiB
JavaScript
44 lines
1.6 KiB
JavaScript
#! /usr/bin/env runjs
|
|
|
|
var UnixArgsUtil = Packages.me.hatter.tools.commons.args.UnixArgsUtil;
|
|
|
|
var main = () => {
|
|
UnixArgsUtil.parseGlobalArgs($ARGS);
|
|
|
|
if (UnixArgsUtil.ARGS.flags().containsAny('h', 'help')) {
|
|
println('Make password from secure random, usage:');
|
|
println(' makepassword.js');
|
|
println(' h|help Help');
|
|
println(' l|len|length Password length in bytes (default 10)');
|
|
println(' c|cnt|count Password count (default 1)');
|
|
println(' e|ecn|encode Password encoding(base32, base58, base64, hex) (default base58)');
|
|
return;
|
|
}
|
|
|
|
var len = UnixArgsUtil.ARGS.kvalueAny('l', 'len', 'length') || 10;
|
|
var cnt = UnixArgsUtil.ARGS.kvalueAny('c', 'cnt', 'count') || 1;
|
|
var enc = $STR(UnixArgsUtil.ARGS.kvalueAny('e', 'enc', 'encode') || 'base58').toLowerCase();
|
|
|
|
var isNotSupportedEnc = false;
|
|
var random = $$.secureRandom();
|
|
(parseInt(cnt)).times(() => {
|
|
var passwdBs = random.nextBytes(len);
|
|
if (['32', 'b32', 'base32'].contains(enc)) {
|
|
println($$.io().bytes(passwdBs).asBase32());
|
|
} else if (['58', 'b58', 'base58'].contains(enc)) {
|
|
println($$.io().bytes(passwdBs).asBase58());
|
|
} else if (['64', 'b64', 'base64'].contains(enc)) {
|
|
println($$.io().bytes(passwdBs).asBase64());
|
|
} else if (['hex'].contains(enc)) {
|
|
println($$.io().bytes(passwdBs).asHex());
|
|
} else {
|
|
isNotSupportedEnc = true;
|
|
}
|
|
});
|
|
if (isNotSupportedEnc) {
|
|
println('Not supported encode: ' + enc);
|
|
}
|
|
};
|
|
|
|
main();
|