'use strict'; var Rasha = require('rasha'); module.exports = function (bitlen, exp) { var ursa; try { ursa = require('ursa'); } catch(e) { ursa = require('ursa-optional'); } var keypair = ursa.generatePrivateKey(bitlen, exp); var result = { publicKeyPem: keypair.toPublicPem().toString('ascii').trim() , privateKeyPem: keypair.toPrivatePem().toString('ascii').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); }