{"_id":"keypair","_rev":"4576422","name":"keypair","description":"Generate a RSA PEM key pair from pure JS","dist-tags":{"latest":"1.0.4"},"maintainers":[{"name":"juliangruber","email":"julian@juliangruber.com"}],"time":{"modified":"2026-04-10T15:44:08.000Z","created":"2013-05-14T07:05:29.006Z","1.0.4":"2021-10-11T17:03:05.587Z","1.0.3":"2021-04-12T07:24:10.398Z","1.0.2":"2021-01-30T13:41:08.001Z","1.0.1":"2017-01-04T10:54:57.190Z","1.0.0":"2013-07-11T17:11:30.975Z","0.0.6":"2013-06-16T10:14:12.735Z","0.0.5":"2013-05-14T09:34:10.650Z","0.0.4":"2013-05-14T09:32:28.589Z","0.0.3":"2013-05-14T07:09:57.219Z","0.0.1":"2013-05-14T07:05:29.006Z"},"users":{},"author":{"name":"Julian Gruber","email":"mail@juliangruber.com","url":"http://juliangruber.com"},"repository":{"type":"git","url":"git://github.com/juliangruber/keypair.git"},"versions":{"1.0.4":{"name":"keypair","description":"Generate a RSA PEM key pair from pure JS","version":"1.0.4","repository":{"type":"git","url":"git://github.com/juliangruber/keypair.git"},"homepage":"https://github.com/juliangruber/keypair","main":"index.js","scripts":{"test":"tape test.js"},"devDependencies":{"tape":"~1.0.2"},"keywords":["rsa","keypair","keys","encryption","public","private","key","ssh"],"author":{"name":"Julian Gruber","email":"mail@juliangruber.com","url":"http://juliangruber.com"},"testling":{"files":"test.js","browsers":["ie/6..latest","firefox/10","chrome/20..latest","safari/5.0.5..latest","opera/11.0..latest","iphone/6.0","ipad/6.0","android-browser/4.2"]},"license":"BSD / GPL","gitHead":"65f9f24c561c73e37b408310d6c07ee50af0f575","bugs":{"url":"https://github.com/juliangruber/keypair/issues"},"_id":"keypair@1.0.4","_nodeVersion":"15.14.0","_npmVersion":"7.7.6","dist":{"shasum":"a749a45f388593f3950f18b3757d32a93bd8ce83","size":44777,"noattachment":false,"key":"/keypair/-/keypair-1.0.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypair/download/keypair-1.0.4.tgz"},"_npmUser":{"name":"juliangruber","email":"julian@juliangruber.com"},"directories":{},"maintainers":[{"name":"juliangruber","email":"julian@juliangruber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/keypair_1.0.4_1633971785395_0.0039001335738957366"},"_hasShrinkwrap":false,"publish_time":1633971785587,"_cnpm_publish_time":1633971785587,"_cnpmcore_publish_time":"2021-12-16T21:10:36.259Z"},"1.0.3":{"name":"keypair","description":"Generate a RSA PEM key pair from pure JS","version":"1.0.3","repository":{"type":"git","url":"git://github.com/juliangruber/keypair.git"},"homepage":"https://github.com/juliangruber/keypair","main":"index.js","scripts":{"test":"tape test.js"},"devDependencies":{"tape":"~1.0.2"},"keywords":["rsa","keypair","keys","encryption","public","private","key","ssh"],"author":{"name":"Julian Gruber","email":"mail@juliangruber.com","url":"http://juliangruber.com"},"testling":{"files":"test.js","browsers":["ie/6..latest","firefox/10","chrome/20..latest","safari/5.0.5..latest","opera/11.0..latest","iphone/6.0","ipad/6.0","android-browser/4.2"]},"license":"BSD / GPL","gitHead":"87c62f255baa12c1ec4f98a91600f82af80be6db","bugs":{"url":"https://github.com/juliangruber/keypair/issues"},"_id":"keypair@1.0.3","_nodeVersion":"15.9.0","_npmVersion":"7.7.6","dist":{"shasum":"4314109d94052a0acfd6b885695026ad29529c80","size":44752,"noattachment":false,"key":"/keypair/-/keypair-1.0.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypair/download/keypair-1.0.3.tgz"},"_npmUser":{"name":"juliangruber","email":"julian@juliangruber.com"},"directories":{},"maintainers":[{"name":"juliangruber","email":"julian@juliangruber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/keypair_1.0.3_1618212250239_0.1568067296416451"},"_hasShrinkwrap":false,"publish_time":1618212250398,"_cnpm_publish_time":1618212250398,"_cnpmcore_publish_time":"2021-12-16T21:10:36.557Z"},"1.0.2":{"name":"keypair","description":"Generate a RSA PEM key pair from pure JS","version":"1.0.2","repository":{"type":"git","url":"git://github.com/juliangruber/keypair.git"},"homepage":"https://github.com/juliangruber/keypair","main":"index.js","scripts":{"test":"tape test.js"},"dependencies":{},"devDependencies":{"tape":"~1.0.2"},"keywords":["rsa","keypair","keys","encryption","public","private","key","ssh"],"author":{"name":"Julian Gruber","email":"mail@juliangruber.com","url":"http://juliangruber.com"},"testling":{"files":"test.js","browsers":["ie/6..latest","firefox/10","chrome/20..latest","safari/5.0.5..latest","opera/11.0..latest","iphone/6.0","ipad/6.0","android-browser/4.2"]},"license":"BSD / GPL","gitHead":"ab31a2551f2f344f7aee518c53db19f0311ab675","bugs":{"url":"https://github.com/juliangruber/keypair/issues"},"_id":"keypair@1.0.2","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"shasum":"9aab2dea3355d22364e0156ef6a4282487c8fdee","size":45221,"noattachment":false,"key":"/keypair/-/keypair-1.0.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypair/download/keypair-1.0.2.tgz"},"_npmUser":{"name":"juliangruber","email":"julian@juliangruber.com"},"directories":{},"maintainers":[{"name":"juliangruber","email":"julian@juliangruber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/keypair_1.0.2_1612014067821_0.8903604324280787"},"_hasShrinkwrap":false,"publish_time":1612014068001,"_cnpm_publish_time":1612014068001,"_cnpmcore_publish_time":"2021-12-16T21:10:36.858Z"},"1.0.1":{"name":"keypair","description":"Generate a RSA PEM key pair from pure JS","version":"1.0.1","repository":{"type":"git","url":"git://github.com/juliangruber/keypair.git"},"homepage":"https://github.com/juliangruber/keypair","main":"index.js","scripts":{"test":"tape test.js"},"dependencies":{},"devDependencies":{"tape":"~1.0.2"},"keywords":["rsa","keypair","keys","encryption","public","private","key","ssh"],"author":{"name":"Julian Gruber","email":"mail@juliangruber.com","url":"http://juliangruber.com"},"testling":{"files":"test.js","browsers":["ie/6..latest","firefox/10","chrome/20..latest","safari/5.0.5..latest","opera/11.0..latest","iphone/6.0","ipad/6.0","android-browser/4.2"]},"license":"BSD / GPL","gitHead":"1adc003abaa6766db854b34bdc5d53235b4aa05d","bugs":{"url":"https://github.com/juliangruber/keypair/issues"},"_id":"keypair@1.0.1","_shasum":"7603719270afb6564ed38a22087a06fc9aa4ea1b","_from":".","_npmVersion":"2.15.9","_nodeVersion":"4.6.0","_npmUser":{"name":"juliangruber","email":"julian@juliangruber.com"},"dist":{"shasum":"7603719270afb6564ed38a22087a06fc9aa4ea1b","size":44721,"noattachment":false,"key":"/keypair/-/keypair-1.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypair/download/keypair-1.0.1.tgz"},"maintainers":[{"name":"juliangruber","email":"julian@juliangruber.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/keypair-1.0.1.tgz_1483527294884_0.4004794207867235"},"directories":{},"publish_time":1483527297190,"_hasShrinkwrap":false,"_cnpm_publish_time":1483527297190,"_cnpmcore_publish_time":"2021-12-16T21:10:37.152Z"},"1.0.0":{"name":"keypair","description":"Generate a RSA PEM key pair from pure JS","version":"1.0.0","repository":{"type":"git","url":"git://github.com/juliangruber/keypair.git"},"homepage":"https://github.com/juliangruber/keypair","main":"index.js","scripts":{"test":"tape test.js"},"dependencies":{},"devDependencies":{"tape":"~1.0.2"},"keywords":["rsa","keypair","keys","encryption","public","private","key","ssh"],"author":{"name":"Julian Gruber","email":"mail@juliangruber.com","url":"http://juliangruber.com"},"testling":{"files":"test.js","browsers":["ie/6..latest","firefox/10","chrome/20..latest","safari/5.0.5..latest","opera/11.0..latest","iphone/6.0","ipad/6.0","android-browser/4.2"]},"license":"MIT","readmeFilename":"README.md","bugs":{"url":"https://github.com/juliangruber/keypair/issues"},"_id":"keypair@1.0.0","dist":{"shasum":"503dd930490d298d9aa0da090ae41fdf7da5a680","size":44408,"noattachment":false,"key":"/keypair/-/keypair-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypair/download/keypair-1.0.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"juliangruber","email":"julian@juliangruber.com"},"maintainers":[{"name":"juliangruber","email":"julian@juliangruber.com"}],"directories":{},"publish_time":1373562690975,"_hasShrinkwrap":false,"_cnpm_publish_time":1373562690975,"_cnpmcore_publish_time":"2021-12-16T21:10:37.404Z"},"0.0.6":{"name":"keypair","description":"Generate a RSA PEM key pair from pure JS","version":"0.0.6","repository":{"type":"git","url":"git://github.com/juliangruber/keypair.git"},"homepage":"https://github.com/juliangruber/keypare","main":"index.js","scripts":{"test":"tape test.js"},"dependencies":{},"devDependencies":{"tape":"~1.0.2"},"keywords":["rsa","keypair","keys","encryption","public","private","key","ssh"],"author":{"name":"Julian Gruber","email":"mail@juliangruber.com","url":"http://juliangruber.com"},"testling":{"files":"test.js","browsers":["ie/6..latest","firefox/10","chrome/20..latest","safari/5.0.5..latest","opera/11.0..latest","iphone/6.0","ipad/6.0","android-browser/4.2"]},"license":"MIT","readmeFilename":"README.md","_id":"keypair@0.0.6","dist":{"shasum":"2b66badec32ceca6abbaee4d4d949750ac96e695","size":44347,"noattachment":false,"key":"/keypair/-/keypair-0.0.6.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypair/download/keypair-0.0.6.tgz"},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"juliangruber","email":"julian@juliangruber.com"},"maintainers":[{"name":"juliangruber","email":"julian@juliangruber.com"}],"directories":{},"publish_time":1371377652735,"_hasShrinkwrap":false,"_cnpm_publish_time":1371377652735,"_cnpmcore_publish_time":"2021-12-16T21:10:37.664Z"},"0.0.5":{"name":"keypair","description":"Generate a RSA PEM key pair from pure JS","version":"0.0.5","repository":{"type":"git","url":"git://github.com/juliangruber/keypair.git"},"homepage":"https://github.com/juliangruber/keypare","main":"index.js","scripts":{"test":"tape test.js"},"dependencies":{},"devDependencies":{"tape":"~1.0.2"},"keywords":["rsa","keypair","keys","encryption","public","private","key","ssh"],"author":{"name":"Julian Gruber","email":"mail@juliangruber.com","url":"http://juliangruber.com"},"testling":{"files":"test.js","browsers":["ie/6..latest","firefox/10","chrome/20..latest","safari/5.0.5..latest","opera/11.0..latest","iphone/6.0","ipad/6.0","android-browser/4.2"]},"license":"BSD","readmeFilename":"README.md","_id":"keypair@0.0.5","dist":{"shasum":"24b4e139362a879bea4869adeab3c6cac46f25f3","size":44353,"noattachment":false,"key":"/keypair/-/keypair-0.0.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypair/download/keypair-0.0.5.tgz"},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"juliangruber","email":"julian@juliangruber.com"},"maintainers":[{"name":"juliangruber","email":"julian@juliangruber.com"}],"directories":{},"publish_time":1368524050650,"_hasShrinkwrap":false,"_cnpm_publish_time":1368524050650,"_cnpmcore_publish_time":"2021-12-16T21:10:37.917Z"},"0.0.4":{"name":"keypair","description":"Generate a RSA PEM key pair from pure JS","version":"0.0.4","repository":{"type":"git","url":"git://github.com/juliangruber/keypair.git"},"homepage":"https://github.com/juliangruber/keypare","main":"index.js","scripts":{"test":"tape test.js"},"dependencies":{},"devDependencies":{"tape":"~1.0.2"},"keywords":["rsa","keypair","keys","encryption","public","private","key","ssh"],"author":{"name":"Julian Gruber","email":"mail@juliangruber.com","url":"http://juliangruber.com"},"testling":{"files":"test.js","browsers":["ie/6..latest","firefox/10","chrome/20..latest","safari/5.0.5..latest","opera/11.0..latest","iphone/6.0","ipad/6.0","android-browser/4.2"]},"license":"BSD","readmeFilename":"README.md","_id":"keypair@0.0.4","dist":{"shasum":"4bf010677d67c6c1b2a40a1df45c7e4dac55ce35","size":44354,"noattachment":false,"key":"/keypair/-/keypair-0.0.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypair/download/keypair-0.0.4.tgz"},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"juliangruber","email":"julian@juliangruber.com"},"maintainers":[{"name":"juliangruber","email":"julian@juliangruber.com"}],"directories":{},"publish_time":1368523948589,"_hasShrinkwrap":false,"_cnpm_publish_time":1368523948589,"_cnpmcore_publish_time":"2021-12-16T21:10:38.187Z"},"0.0.3":{"name":"keypair","description":"Get a RSA PEM key pair from pure JS","version":"0.0.3","repository":{"type":"git","url":"git://github.com/juliangruber/keypair.git"},"homepage":"https://github.com/juliangruber/keypare","main":"index.js","scripts":{"test":"tape test.js"},"dependencies":{},"devDependencies":{"tape":"~1.0.2"},"keywords":["rsa","keypair","keys","encryption","public","private","key","ssh"],"author":{"name":"Julian Gruber","email":"mail@juliangruber.com","url":"http://juliangruber.com"},"license":"BSD","readmeFilename":"README.md","_id":"keypair@0.0.3","dist":{"shasum":"820535d8db5b355a1b29ea2719567761727b30a3","size":44054,"noattachment":false,"key":"/keypair/-/keypair-0.0.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypair/download/keypair-0.0.3.tgz"},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"juliangruber","email":"julian@juliangruber.com"},"maintainers":[{"name":"juliangruber","email":"julian@juliangruber.com"}],"directories":{},"publish_time":1368515397219,"_hasShrinkwrap":false,"_cnpm_publish_time":1368515397219,"_cnpmcore_publish_time":"2021-12-16T21:10:38.477Z"},"0.0.1":{"name":"keypair","description":"Get a RSA PEM key pair from pure JS","version":"0.0.1","repository":{"type":"git","url":"git://github.com/juliangruber/keypair.git"},"homepage":"https://github.com/juliangruber/keypare","main":"index.js","scripts":{"test":"tape test.js"},"dependencies":{},"devDependencies":{"tape":"~1.0.2"},"keywords":["rsa","keypair","keys","encryption","public","private","key","ssh"],"author":{"name":"Julian Gruber","email":"mail@juliangruber.com","url":"http://juliangruber.com"},"license":"BSD","readmeFilename":"README.md","_id":"keypair@0.0.1","dist":{"shasum":"15a148883bcb1b003f3c0336270c6c0ed2023d50","size":43982,"noattachment":false,"key":"/keypair/-/keypair-0.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/keypair/download/keypair-0.0.1.tgz"},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"juliangruber","email":"julian@juliangruber.com"},"maintainers":[{"name":"juliangruber","email":"julian@juliangruber.com"}],"directories":{},"publish_time":1368515129006,"_hasShrinkwrap":false,"_cnpm_publish_time":1368515129006,"_cnpmcore_publish_time":"2021-12-16T21:10:38.740Z"}},"readme":"# keypair\n\nGenerate a RSA PEM key pair from pure JS\n\n[![Build Status](https://travis-ci.org/juliangruber/keypair.svg?branch=master)](https://travis-ci.org/juliangruber/keypair)\n[![downloads](https://img.shields.io/npm/dm/keypair.svg)](https://www.npmjs.org/package/keypair)\n\n[![browser support](https://ci.testling.com/juliangruber/keypair.png)](https://ci.testling.com/juliangruber/keypair)\n\n## Usage\n\n```js\nvar keypair = require('keypair');\n\nvar pair = keypair();\nconsole.log(pair);\n```\n\noutputs\n\n```\n$ node example.js\n{ public: '-----BEGIN RSA PUBLIC KEY-----\\r\\nMIGJAoGBAM3CosR73CBNcJsLv5E90NsFt6qN1uziQ484gbOoule8leXHFbyIzPQRozgEpSpi\\r\\nwhr6d2/c0CfZHEJ3m5tV0klxfjfM7oqjRMURnH/rmBjcETQ7qzIISZQ/iptJ3p7Gi78X5ZMh\\r\\nLNtDkUFU9WaGdiEb+SnC39wjErmJSfmGb7i1AgMBAAE=\\r\\n-----END RSA PUBLIC KEY-----\\n',\n  private: '-----BEGIN RSA PRIVATE KEY-----\\r\\nMIICXAIBAAKBgQDNwqLEe9wgTXCbC7+RPdDbBbeqjdbs4kOPOIGzqLpXvJXlxxW8iMz0EaM4\\r\\nBKUqYsIa+ndv3NAn2RxCd5ubVdJJcX43zO6Ko0TFEZx/65gY3BE0O6syCEmUP4qbSd6exou/\\r\\nF+WTISzbQ5FBVPVmhnYhG/kpwt/cIxK5iUn5hm+4tQIDAQABAoGBAI+8xiPoOrA+KMnG/T4j\\r\\nJsG6TsHQcDHvJi7o1IKC/hnIXha0atTX5AUkRRce95qSfvKFweXdJXSQ0JMGJyfuXgU6dI0T\\r\\ncseFRfewXAa/ssxAC+iUVR6KUMh1PE2wXLitfeI6JLvVtrBYswm2I7CtY0q8n5AGimHWVXJP\\r\\nLfGV7m0BAkEA+fqFt2LXbLtyg6wZyxMA/cnmt5Nt3U2dAu77MzFJvibANUNHE4HPLZxjGNXN\\r\\n+a6m0K6TD4kDdh5HfUYLWWRBYQJBANK3carmulBwqzcDBjsJ0YrIONBpCAsXxk8idXb8jL9a\\r\\nNIg15Wumm2enqqObahDHB5jnGOLmbasizvSVqypfM9UCQCQl8xIqy+YgURXzXCN+kwUgHinr\\r\\nutZms87Jyi+D8Br8NY0+Nlf+zHvXAomD2W5CsEK7C+8SLBr3k/TsnRWHJuECQHFE9RA2OP8W\\r\\noaLPuGCyFXaxzICThSRZYluVnWkZtxsBhW2W8z1b8PvWUE7kMy7TnkzeJS2LSnaNHoyxi7Ia\\r\\nPQUCQCwWU4U+v4lD7uYBw00Ga/xt+7+UqFPlPVdz1yyr4q24Zxaw0LgmuEvgU5dycq8N7Jxj\\r\\nTubX0MIRR+G9fmDBBl8=\\r\\n-----END RSA PRIVATE KEY-----\\n' }\n```\n\n## Performance\n\nPerformance greatly depends on the bit size of the generated private key. With 1024 bits you get a key in 0.5s-2s, with 2048 bits it takes 8s-20s, on the same machine. As this will block the event loop while generating the key,\nmake sure that's ok or to spawn a child process or run it inside a webworker.\n\n## Pro Tip: authorized_keys\n\n@maxogden found out how to use this module to create entries for the `authorized_keys` file:\n\n```js\nvar keypair = require('keypair');\nvar forge = require('node-forge');\n\nvar pair = keypair();\nvar publicKey = forge.pki.publicKeyFromPem(pair.public);\nvar ssh = forge.ssh.publicKeyToOpenSSH(publicKey, 'user@domain.tld');\nconsole.log(ssh);\n```\n\n## API\n\n### keypair([opts])\n\nGet an RSA PEM key pair.\n\n`opts` can be\n\n* `bits`: the size for the private key in bits. Default: **2048**.\n* `e`: the public exponent to use. Default: **65537**.\n\n## Installation\n\nWith [npm](http://npmjs.org) do\n\n```bash\n$ npm install keypair\n```\n\n## Kudos\n\nTo [digitalbazaar](https://github.com/digitalbazaar) for their\n[forge](https://github.com/digitalbazaar/forge) project, this library is merely a\nwrapper around some of forge's functions.\n\n## License\n\nBSD / GPL\n","_attachments":{},"homepage":"https://github.com/juliangruber/keypair","bugs":{"url":"https://github.com/juliangruber/keypair/issues"},"license":"BSD / GPL"}