import { promisify } from 'util' ; import { generateKeyPair } from 'crypto' ; import sshpk from 'sshpk' ; export interface SshKeypair { publicKey : string ; privateKey : string ; } const generateKeyPairAsync = promisify ( generateKeyPair ) ; export function genKeypair ( ) { return generateKeyPairAsync ( 'rsa' , { modulusLength : 4096 , publicKeyEncoding : { type : 'spki' , format : 'pem' , } , privateKeyEncoding : { type : 'pkcs8' , format : 'pem' , } , } ) . then ( value => { const pemKey = sshpk . parseKey ( value . publicKey , 'pem' ) ; const sshRsa = pemKey . toString ( 'ssh' ) ; return { publicKey : sshRsa , privateKey : value . privateKey , } ; } ) ; }