#! /usr/bin/env runjs var KeyPairGenerator = java.security.KeyPairGenerator; var Bytes = Packages.me.hatter.tools.commons.bytes.Bytes; var UnixArgsUtil = Packages.me.hatter.tools.commons.args.UnixArgsUtil; var SSHKeyGen = Packages.me.hatter.tools.commons.security.ssh.SSHKeyGen; var main = () => { UnixArgsUtil.parseGlobalArgs($ARGS); var args = UnixArgsUtil.ARGS.args(); if (UnixArgsUtil.ARGS.flags().containsAny('h', 'help')) { println('sshkeygen.js - Generate SSH keypair.') println(); println('sshkeygen.js [--h[elp]] [-keyLength 4096] [-serverName server_name]'); return; } var kpg = KeyPairGenerator.getInstance("RSA"); var keyLen = $$.asInt(UnixArgsUtil.ARGS.kvalue('keyLength') || '2048'); if (keyLen < 1024) { println('Key length is less than 1024 bit: ' + keyLen); return; } kpg.initialize(keyLen); var kp = kpg.generateKeyPair(); println(SSHKeyGen.encodePublicKey(kp.getPublic(), UnixArgsUtil.ARGS.kvalue('serverName') || 'test@example.com')); println(Bytes.from(kp.getPrivate().getEncoded()).asPem('PRIVATE KEY')); }; main();