{"_id":"rsa-key","_rev":"5-2d8feaeffcee9f0de59246b75a478fc9","name":"rsa-key","description":"Converts between RSA key formats, detecting input format (PEM, DER, PKCS1, PKCS8). No OpenSSL needed.","dist-tags":{"latest":"0.0.6"},"versions":{"0.0.1":{"name":"rsa-key","version":"0.0.1","description":"Converts between RSA key formats, detecting input format (PEM, DER, PKCS1, PKCS8). No OpenSSL needed.","main":"src/index.js","scripts":{"test":"npm run makedist && eslint . && nyc --all mocha","coverage":"nyc report --reporter=text-lcov | coveralls","prepack":"npm run build","devtest":"nodemon -L --watch . --exec 'npm test'","makedist":"mkdir -p dist && echo \"*\" > dist/.gitignore && touch dist/.npmignore && echo \"module.exports = require('../src');\" > dist/index.js","es5test":"npm run build && DIST=../../../dist/es5 mocha test/es5/test","testall":"npm test && npm run build && cd test && docker-compose build && echo \"Node:latest\" && docker-compose run node_latest && echo \"Node:9\" && docker-compose run node_9 && echo \"Node:8\" && docker-compose run node_8 && echo \"Node:6\" && docker-compose run node_6 && echo \"Node:4\" && docker-compose run node_4; npm run testclean","testclean":"cd test && docker-compose down --rmi 'all'","build":"npm run makedist && webpack && babel --presets=es2015 test/index.js -d test/es5"},"repository":{"type":"git","url":"git+https://github.com/racbart/rsa-key.git"},"keywords":["node","rsa","convert","detect","format","formats","PEM","DER","PKCS1","PKCS8","keys","key","private","public","crypto"],"author":{"name":"Bartosz Raciborski"},"license":"MIT","bugs":{"url":"https://github.com/racbart/rsa-key/issues"},"homepage":"https://github.com/racbart/rsa-key#readme","devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-loader":"^7.1.2","babel-plugin-array-includes":"^2.0.3","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-es2015":"^6.24.1","chai":"^4.1.2","coveralls":"^3.0.0","eslint":"^4.14.0","istanbul":"^0.4.5","mocha":"^4.1.0","node-rsa":"^0.4.2","nodemon":"^1.14.7","nyc":"^11.4.1","webpack":"^3.10.0"},"dependencies":{"asn1":"^0.2.3"},"gitHead":"488eff0ebc7ddb6ca523e4eb4dd1c896458fd3ff","_id":"rsa-key@0.0.1","_npmVersion":"5.6.0","_nodeVersion":"9.3.0","_npmUser":{"name":"racbart","email":"npm@info.raciborski.net"},"dist":{"integrity":"sha512-tJKq83BWGJEjd78TabHiWA0yTwgDD/oQURXBg95FnVd3uM5J8W+QbshAYJwvW2y9VuYme/3RJwv8JSK61vyCtg==","shasum":"d8520eceb31154ca4a6d82263ef588e0e204fb2d","tarball":"https://registry.npmjs.org/rsa-key/-/rsa-key-0.0.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCKXlm5ydcvDX7bCBGe3uPDCaFMnG5VEF91/bbOZYr9FwIgNWtobe0nvAz5492Zlq8C4qXbyB2f/+bo+XUNwStLsao="}]},"maintainers":[{"name":"racbart","email":"npm@info.raciborski.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rsa-key-0.0.1.tgz_1515095300385_0.4335796181112528"}},"0.0.2":{"name":"rsa-key","version":"0.0.2","description":"Converts between RSA key formats, detecting input format (PEM, DER, PKCS1, PKCS8). No OpenSSL needed.","main":"dist","scripts":{"test":"npm run makedist && eslint . && nyc --all mocha","coverage":"nyc report --reporter=text-lcov | coveralls","prepack":"npm run build","devtest":"nodemon -L --watch . --exec 'npm test'","makedist":"mkdir -p dist && echo \"*\" > dist/.gitignore && touch dist/.npmignore && echo \"module.exports = require('../src');\" > dist/index.js","es5test":"npm run build && DIST=../../../dist/es5 mocha test/es5/test","testall":"npm test && npm run build && cd test && docker-compose build && echo \"Node:latest\" && docker-compose run node_latest && echo \"Node:9\" && docker-compose run node_9 && echo \"Node:8\" && docker-compose run node_8 && echo \"Node:6\" && docker-compose run node_6 && echo \"Node:4\" && docker-compose run node_4; npm run testclean","testclean":"cd test && docker-compose down --rmi 'all'","build":"npm run makedist && webpack && babel --presets=es2015 test/index.js -d test/es5"},"repository":{"type":"git","url":"git+https://github.com/racbart/rsa-key.git"},"keywords":["node","rsa","convert","detect","format","formats","PEM","DER","PKCS1","PKCS8","keys","key","private","public","crypto"],"author":{"name":"Bartosz Raciborski"},"license":"MIT","bugs":{"url":"https://github.com/racbart/rsa-key/issues"},"homepage":"https://github.com/racbart/rsa-key#readme","devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-loader":"^7.1.2","babel-plugin-array-includes":"^2.0.3","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-es2015":"^6.24.1","chai":"^4.1.2","coveralls":"^3.0.0","eslint":"^4.14.0","istanbul":"^0.4.5","mocha":"^4.1.0","node-rsa":"^0.4.2","nodemon":"^1.14.7","nyc":"^11.4.1","webpack":"^3.10.0"},"dependencies":{"asn1":"^0.2.3"},"gitHead":"64071f0959c369ff5765419fac14b92644ed94c9","_id":"rsa-key@0.0.2","_npmVersion":"5.6.0","_nodeVersion":"9.3.0","_npmUser":{"name":"racbart","email":"npm@info.raciborski.net"},"dist":{"integrity":"sha512-rg6Eq/t9o0cUWpOj9RR8G9RTgZddhg4bmOVGRKEMO03S+b+A6tB6F+XUM7aY/oZ1KtlCLNZWHC/oGW6i6i9vCw==","shasum":"6d6cfb9b5ce1367a20b5e78e80fc1220df2ad289","tarball":"https://registry.npmjs.org/rsa-key/-/rsa-key-0.0.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCmm+WB3bDbEnQnEhIWqPM8Jm9jQPsxdnsDl3MpTRpPWAIgUpx60UxwlEf0HjE0KURIx6YiWQc2GvkJ/mqdWi8RKN8="}]},"maintainers":[{"name":"racbart","email":"npm@info.raciborski.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rsa-key-0.0.2.tgz_1515095769564_0.16383408498950303"}},"0.0.3":{"name":"rsa-key","version":"0.0.3","description":"Converts between RSA key formats, detecting input format (PEM, DER, PKCS1, PKCS8). No OpenSSL needed.","main":"src/index.js","scripts":{"test":"npm run makedist && eslint . && nyc --all mocha","coverage":"nyc report --reporter=text-lcov | coveralls","prepack":"npm test && npm run build","devtest":"nodemon -L --watch . --exec 'npm test'","makedist":"mkdir -p es5 && echo \"*\" > es5/.gitignore && touch es5/.npmignore","es5test":"npm run build && DIST=../../../es5 mocha test/es5/test","testall":"npm test && npm run build && cd test && docker-compose build && echo \"Node:latest\" && docker-compose run node_latest && echo \"Node:9\" && docker-compose run node_9 && echo \"Node:8\" && docker-compose run node_8 && echo \"Node:6\" && docker-compose run node_6 && echo \"Node:4\" && docker-compose run node_4; npm run testclean","testclean":"cd test && docker-compose down --rmi 'all'","build":"npm run makedist && webpack && babel --presets=es2015 test/index.js -d test/es5"},"repository":{"type":"git","url":"git+https://github.com/racbart/rsa-key.git"},"keywords":["node","rsa","convert","detect","format","formats","PEM","DER","PKCS1","PKCS8","keys","key","private","public","crypto"],"author":{"name":"Bartosz Raciborski"},"license":"MIT","bugs":{"url":"https://github.com/racbart/rsa-key/issues"},"homepage":"https://github.com/racbart/rsa-key#readme","devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-loader":"^7.1.2","babel-plugin-array-includes":"^2.0.3","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-es2015":"^6.24.1","chai":"^4.1.2","coveralls":"^3.0.0","eslint":"^4.14.0","istanbul":"^0.4.5","mocha":"^4.1.0","node-rsa":"^0.4.2","nodemon":"^1.14.7","nyc":"^11.4.1","webpack":"^3.10.0"},"dependencies":{"asn1":"^0.2.3"},"gitHead":"250176dcc91c724bc568b5b3fc9c4e87c64ad48b","_id":"rsa-key@0.0.3","_npmVersion":"5.6.0","_nodeVersion":"9.3.0","_npmUser":{"name":"racbart","email":"npm@info.raciborski.net"},"dist":{"integrity":"sha512-wJWxcr135fYdwf7d1hQNGyUePhVB2U+I1w34GW7SwZ5/rmbGRqw6gRUtXUkQEJHiD1Hx+FfQONI1T9T4dFWDXg==","shasum":"35a2a3e612e2c12718f9a4494c3042cead032c9d","tarball":"https://registry.npmjs.org/rsa-key/-/rsa-key-0.0.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+kYisEPjqwezmYkzXSVph+/UVgOZtzUx3wrWtgCmcBwIgaQrU+yW0hBPDahkqUWoEmeT+9xhElq+U5POXW8/mY/E="}]},"maintainers":[{"name":"racbart","email":"npm@info.raciborski.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rsa-key-0.0.3.tgz_1515096933995_0.6363995133433491"}},"0.0.4":{"name":"rsa-key","version":"0.0.4","description":"Converts between RSA key formats, detecting input format (PEM, DER, PKCS1, PKCS8). No OpenSSL needed.","main":"src/index.js","scripts":{"test":"npm run makedist && eslint . && nyc --all mocha","coverage":"nyc report --reporter=text-lcov | coveralls","prepack":"npm test && npm run build","devtest":"nodemon -L --watch . --exec 'npm test'","makedist":"mkdir -p es5 && echo \"*\" > es5/.gitignore && touch es5/.npmignore","es5test":"npm run build && DIST=../../../es5 mocha test/es5/test","testall":"npm test && npm run build && cd test && docker-compose build && echo \"Node:latest\" && docker-compose run node_latest && echo \"Node:9\" && docker-compose run node_9 && echo \"Node:8\" && docker-compose run node_8 && echo \"Node:6\" && docker-compose run node_6 && echo \"Node:4\" && docker-compose run node_4; npm run testclean","testclean":"cd test && docker-compose down --rmi 'all'","build":"npm run makedist && webpack && babel --presets=es2015 test/index.js -d test/es5"},"repository":{"type":"git","url":"git+https://github.com/racbart/rsa-key.git"},"keywords":["node","rsa","convert","detect","format","formats","PEM","DER","PKCS1","PKCS8","keys","key","private","public","crypto"],"author":{"name":"Bartosz Raciborski"},"license":"MIT","bugs":{"url":"https://github.com/racbart/rsa-key/issues"},"homepage":"https://github.com/racbart/rsa-key#readme","devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-loader":"^7.1.2","babel-plugin-array-includes":"^2.0.3","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-es2015":"^6.24.1","chai":"^4.1.2","coveralls":"^3.0.0","eslint":"^4.14.0","istanbul":"^0.4.5","mocha":"^4.1.0","node-rsa":"^0.4.2","nodemon":"^1.14.7","nyc":"^11.4.1","webpack":"^3.10.0"},"dependencies":{"asn1":"^0.2.3"},"gitHead":"5eca053cb8a908ad2ea0b9cd092f6809e2ea4361","_id":"rsa-key@0.0.4","_npmVersion":"5.6.0","_nodeVersion":"9.3.0","_npmUser":{"name":"racbart","email":"npm@info.raciborski.net"},"dist":{"integrity":"sha512-tMKI7ajgqwHQiZ47cxXw8vULr/aS5u5bhT56zZTV0zCWGfXkt2VyAzpn/dDZ9gStMwnxETNfymRIQiFfpCMu8Q==","shasum":"059d1eb69f82fce3125633077645e47ea8756b90","tarball":"https://registry.npmjs.org/rsa-key/-/rsa-key-0.0.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAL87SV1LFNjoZqdLVm5XzExdLpBt1bHEl5h8Lp5/iLGAiEAvpcPkr8Zyv/WRlEI1wGeitAuli4CzCK7+xAyvfOc6uc="}]},"maintainers":[{"name":"racbart","email":"npm@info.raciborski.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rsa-key-0.0.4.tgz_1515261128737_0.5095202876254916"}},"0.0.6":{"name":"rsa-key","version":"0.0.6","description":"Converts between RSA key formats, detecting input format (PEM, DER, PKCS1, PKCS8). No OpenSSL needed.","main":"src/index.js","scripts":{"test":"eslint . && nyc --all mocha","coverage":"nyc report --reporter=text-lcov | coveralls","prepack":"npm test","devtest":"nodemon -L --watch . --exec 'npm test'"},"repository":{"type":"git","url":"git+https://github.com/racbart/rsa-key.git"},"keywords":["node","rsa","convert","detect","format","formats","PEM","DER","PKCS1","PKCS8","keys","key","private","public","crypto"],"author":{"name":"racbart.com"},"license":"MIT","bugs":{"url":"https://github.com/racbart/rsa-key/issues"},"homepage":"https://github.com/racbart/rsa-key#readme","devDependencies":{"chai":"^4.1.2","coveralls":"^3.0.0","eslint":"^4.14.0","istanbul":"^0.4.5","mocha":"^4.1.0","node-rsa":"^0.4.2","nodemon":"^1.14.7","nyc":"^11.4.1"},"dependencies":{"asn1":"0.2.3"},"gitHead":"0c846d2a7c46173965c608228f7660dcaa4e22ab","_id":"rsa-key@0.0.6","_npmVersion":"5.5.1","_nodeVersion":"9.3.0","_npmUser":{"name":"racbart","email":"npm@info.raciborski.net"},"dist":{"integrity":"sha512-dsBHKoQcQS/YijRzYI/idOm/UyNCCn9SPDUIo3nb4otiygImgdMSk29Ii2Gx7x0yaUaIhh6bFid7JgJkTOlXyA==","shasum":"ab8fca7850e1c9958c2b612ebaf4d647a80d3d0e","tarball":"https://registry.npmjs.org/rsa-key/-/rsa-key-0.0.6.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDHFZYaL+24Oaj3cuW9NXlw93fgQim1FDu260wQgB2rpAIhAODQ97PM8p+p4HUdTsw5ojF0j91N6RwGPBJFw2pt6Oa+"}]},"maintainers":[{"name":"racbart","email":"npm@info.raciborski.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rsa-key-0.0.6.tgz_1515353941260_0.901821521576494"}}},"readme":"# rsa-key\n\n[![Build Status](https://travis-ci.org/racbart/rsa-key.svg?branch=master)](https://travis-ci.org/racbart/rsa-key)\n[![Known Vulnerabilities](https://snyk.io/test/github/racbart/rsa-key/badge.svg)](https://snyk.io/test/github/racbart/rsa-key)\n[![Coverage Status](https://coveralls.io/repos/github/racbart/rsa-key/badge.svg?branch=master)](https://coveralls.io/github/racbart/rsa-key?branch=master)\n\nNode.js library to convert between RSA key formats and get information about the key. No OpenSSL needed. Detecting input format type, so you don't need to specify or even know the format in which your RSA key is stored.\n\n## Quickstart\n\nInstallation:\n\n```bash\nnpm install rsa-key\n```\n\nUsage examples:\n\n```javascript\nvar RSAKey = require('rsa-key');\nvar keyInAnyFormat = /* your RSA key in any supported format, in string or buffer */;\n\n/* Import the key */\nvar key = new RSAKey(keyInAnyFormat);\n\n/* Export key in default format (PEM PKCS8) */\nvar output = key.exportKey();\n\n/* Export key in a specified format; see details in usage docs */\nvar output = key.exportKey('public', 'pem', 'pkcs1');\nvar output = key.exportKey('der');\n\n/* Get key fingerprint */\nvar fingerprint = key.getFingerprint();\n```\n\n### Usage in old versions of Node (4 and 6)\nYou should use ES5 version of the library which is in a separate NPM package:\n\n```javascript\nvar RSAKey = require('rsa-key-es5');\n```\n\n## Supported formats\n\nCurrently supported formats are PEM, DER. Supported syntaxes are PKCS1 and PKCS8. I might add JWK at some time in the future.\n\n## Usage\n\n### Creating instance\n\n```javacript\nvar RSAKey = require('rsa-key');\nvar emptyKey = new RSAKey();\n```\n\nYou can provide key in any supported format as constructor argument (same as in `importKey` below).\n\n```javacript\nvar RSAKey = require('rsa-key');\nvar key = new RSAKey(keyData);\n```\n\n### Importing and exporting keys\n\n#### `key.importKey(keyData)`\n\nImports key into the object. It's equivalent to creating the object providing `keyData` in constructor argument.\n\n`keyData` can be in any of the supported formats. It can be a string or a buffer or another RSAKey object. If buffer is provided, it's converted to a string with `utf8` encoding when testing for PEM key and `base64` encoding when testing for DER key.\n\n```javacript\nkey.importKey(keyData);\n```\n\nYou can call `importKey` multiple times to reuse the object. Each call wipes the object and replaces with new key data.\n\n#### `key.exportKey([param, ..., param])`\n\nExports key into the format specified by params provided as arguments. Arguments are strings specifying key format, syntax and key type (private or public). Valid values are:\n\n* `pem`, `der` to specify output key format, default: `pem`\n* `pkcs1`, `pkcs8` to specify output syntax for PEM and DER keys, default: `pkcs8`\n* `private`, `public` to specify key type to export (default: actual stored key type)\n\nParams can be specified in any order:\n\n```javascript\n// These are equivalent\nvar output = key.exportKey('der', 'pkcs1', 'public');\nvar output = key.exportKey('pkcs1', 'public', 'der');\n```\n\nIf conflicting params are provided, the latter overwrites the earlier:\n\n```javascript\nvar output = key.exportKey('private', 'pem', 'pkcs8', 'der'); // exports in DER format (PEM is overwritten)\n```\n\nYou can skip any params to use defaults:\n\n```javascript\nvar output = key.exportKey('der');  // 'pkcs8' is applied as default\nvar output = key.exportKey();       // 'pem' and 'pkcs8' are applied as defaults\n```\n\nIf key object stores a private key, the private key will be exported if no key type params were specified (`public` or `private`). If key object stores a public key, the public key will be exported. If you specify `private` param for an object storing only the public key, an error will be thrown.\n\n```javascript\nvar privKey = new RSAKey(privateKeyData);   // importing private key\nvar output = privKey.exportKey();           // private key is exported\nvar output = privKey.exportKey('public');   // public key is exported\n\nvar pubKey = new RSAKey(publicKeyData);     // importing public key\nvar output = pubKey.exportKey();            // public key is exported\nvar output = pubKey.exportKey('private');   // error is thrown\n```\nIf you know you want to export a public key, it's recommended to always specify `public` param, to avoid mistakes (when you think the object has only public key stored, but it mistakenly has the private key). Calling without key type params is useful if you want to convert the key to desired format regardless of key type.\n\nReturned value type is:\n\n* *string* for PEM export\n* *Buffer* object for DER export\n\n### Getting key information\n\n#### `key.getFingerprint()`\n\nReturns string with key fingerprint. It's always the same for the same key, regardless of input format which you used when importing the key (fingerprint is made on the public key in DER format using PKCS8 syntax, just as OpenSSL's standard fingerprint).\n\n```javascript\nvar fingerprint = key.getFingerprint();\n```\n\n#### `key.hasKey()` and `key.isEmpty()`\n\nChecks if key is loaded into the object. Returns boolean value.\n\n```javascript\nvar key = new RSAKey();         // no key imported\nvar isEmpty = key.isEmpty();    // true\nvar hasKey = key.hasKey();      // false\n```\n\n#### `key.getType()`\n\nReturns string `private` or `public`, depending on which key was imported. For empty key returns *null*.\n\n#### `key.isPrivate()`\n\nChecks if key object has private key stored. Returns boolean value. For empty key returns *false*.\n\n#### `key.isPublic([strict = false])`\n\nChecks if key has public key stored. Returns boolean value. For empty key returns *false*. For private key returns *true* (because it can be converted to public key), unless optional argument is set to *true*.\n\n```javascript\nvar key = new RSAKey(privateKey);           // importing private key\nvar hasPublicKey = key.isPublic();          // true\nvar isExactlyPublic = key.isPublic(true);   // false\n```\n\n#### `key.getKeySize()`\n\nReturns key size in bits. For empty key, returns *0*.\n\n## License\n\nMIT License","maintainers":[{"name":"racbart","email":"npm@info.raciborski.net"}],"time":{"modified":"2022-05-16T06:32:32.792Z","created":"2018-01-04T19:48:20.588Z","0.0.1":"2018-01-04T19:48:20.588Z","0.0.2":"2018-01-04T19:56:10.929Z","0.0.3":"2018-01-04T20:15:35.365Z","0.0.4":"2018-01-06T17:52:10.182Z","0.0.6":"2018-01-07T19:39:01.406Z"},"homepage":"https://github.com/racbart/rsa-key#readme","keywords":["node","rsa","convert","detect","format","formats","PEM","DER","PKCS1","PKCS8","keys","key","private","public","crypto"],"repository":{"type":"git","url":"git+https://github.com/racbart/rsa-key.git"},"author":{"name":"racbart.com"},"bugs":{"url":"https://github.com/racbart/rsa-key/issues"},"license":"MIT","readmeFilename":"README.md"}