'use strict'; var Rasha = require('rasha'); module.exports = function (bitlen, exp) { var keypair = require('crypto').generateKeyPairSync( 'rsa' , { modulusLength: bitlen , publicExponent: exp , privateKeyEncoding: { type: 'pkcs8' , format: 'pem' } , publicKeyEncoding: { type: 'spki' , format: 'pem' } } ); var result = { publicKeyPem: keypair.publicKey.trim() , privateKeyPem: keypair.privateKey.trim() }; result.publicKeyJwk = Rasha.importSync({ pem: result.publicKeyPem, public: true }); result.privateKeyJwk = Rasha.importSync({ pem: result.privateKeyPem }); return result; }; if (require.main === module) { var keypair = module.exports(2048, 0x10001); console.info(keypair.privateKeyPem); console.warn(keypair.publicKeyPem); //console.info(keypair.privateKeyJwk); //console.warn(keypair.publicKeyJwk); }