Comparing version 0.1.53 to 0.1.54
@@ -0,0 +0,0 @@ module.exports = function(grunt) { |
{ | ||
"name": "node-rsa", | ||
"version": "0.1.53", | ||
"version": "0.1.54", | ||
"description": "Node.js RSA library", | ||
@@ -5,0 +5,0 @@ "main": "src/NodeRSA.js", |
@@ -84,3 +84,3 @@ # Node-RSA | ||
key.generateKeyPair([bits], [exp]); | ||
key.loadFromPEM(pem_string); | ||
key.loadFromPEM(pem_string|buffer_contains_pem); | ||
``` | ||
@@ -105,2 +105,7 @@ **bits** - key size in bits. 2048 by default. | ||
```javascript | ||
key.isEmpty(); | ||
``` | ||
Return `true` if key pair doesn't have any data. | ||
#### Key info | ||
@@ -155,2 +160,9 @@ ```javascript | ||
### 0.1.54 | ||
* Added support for loading PEM key from Buffer (fs.readFileSync output) | ||
* Added `isEmpty()` method | ||
### 0.1.52 | ||
* Improve work with not properly trimming PEM strings | ||
### 0.1.50 | ||
@@ -157,0 +169,0 @@ * Implemented native js signing and verifying for browsers |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -20,6 +20,10 @@ /*! | ||
/** | ||
* @param key {string|object} Key in PEM format, or data for generate key {b: bits, e: exponent} | ||
* @param key {string|buffer|object} Key in PEM format, or data for generate key {b: bits, e: exponent} | ||
* @constructor | ||
*/ | ||
function NodeRSA(key, options) { | ||
if (! this instanceof NodeRSA) { | ||
return new NodeRSA(key, options); | ||
} | ||
this.keyPair = new rsa.Key(); | ||
@@ -33,6 +37,6 @@ this.$cache = {}; | ||
if (_.isObject(key)) { | ||
if (Buffer.isBuffer(key) || _.isString(key)) { | ||
this.loadFromPEM(key); | ||
} else if (_.isObject(key)) { | ||
this.generateKeyPair(key.b, key.e); | ||
} else if (_.isString(key)) { | ||
this.loadFromPEM(key); | ||
} | ||
@@ -66,5 +70,9 @@ } | ||
NodeRSA.prototype.loadFromPEM = function(pem) { | ||
if (/^\s*-----BEGIN RSA PRIVATE KEY-----\s([A-Za-z0-9+/=]+\s)+-----END RSA PRIVATE KEY-----\s*$/g.test(pem)) { | ||
if (Buffer.isBuffer(pem)) { | ||
pem = pem.toString('utf8'); | ||
} | ||
if (/^\s*-----BEGIN RSA PRIVATE KEY-----\s*([A-Za-z0-9+/=]+\s*)+-----END RSA PRIVATE KEY-----\s*$/g.test(pem)) { | ||
this.$loadFromPrivatePEM(pem, 'base64'); | ||
} else if (/^\s*-----BEGIN PUBLIC KEY-----\s([A-Za-z0-9+/=]+\s)+-----END PUBLIC KEY-----\s*$/g.test(pem)) { | ||
} else if (/^\s*-----BEGIN PUBLIC KEY-----\s*([A-Za-z0-9+/=]+\s*)+-----END PUBLIC KEY-----\s*$/g.test(pem)) { | ||
this.$loadFromPublicPEM(pem, 'base64'); | ||
@@ -132,3 +140,3 @@ } else | ||
/** | ||
* Check if keypair contains private key | ||
* Check if key pair contains private key | ||
*/ | ||
@@ -140,3 +148,3 @@ NodeRSA.prototype.isPrivate = function() { | ||
/** | ||
* Check if keypair contains public key | ||
* Check if key pair contains public key | ||
* @param strict {boolean} - public key only, return false if have private exponent | ||
@@ -149,2 +157,9 @@ */ | ||
/** | ||
* Check if key pair doesn't contains any data | ||
*/ | ||
NodeRSA.prototype.isEmpty = function(strict) { | ||
return !(this.keyPair.n || this.keyPair.e || this.keyPair.d); | ||
}; | ||
/** | ||
* Encrypting data method | ||
@@ -151,0 +166,0 @@ * |
@@ -0,0 +0,0 @@ /* |
@@ -5,2 +5,3 @@ /** | ||
var fs = require('fs'); | ||
var assert = require("chai").assert; | ||
@@ -10,2 +11,3 @@ var _ = require("lodash"); | ||
describe("NodeRSA", function(){ | ||
@@ -65,5 +67,6 @@ var keySizes = [ | ||
(function(size){ | ||
it("should make key pair " + size.b + "-bit length and public exponent is " + (size.e ? size.e : size.e + ' and should be 65537'), function () { | ||
it("should make key pair " + size.b + "-bit length and public exponent is " + (size.e ? size.e : size.e + " and should be 65537"), function () { | ||
generatedKeys.push(new NodeRSA({b: size.b, e: size.e})); | ||
assert.instanceOf(generatedKeys[generatedKeys.length - 1].keyPair, Object); | ||
assert.equal(generatedKeys[generatedKeys.length - 1].isEmpty(), false); | ||
assert.equal(generatedKeys[generatedKeys.length - 1].getKeySize(), size.b); | ||
@@ -75,2 +78,13 @@ assert.equal(generatedKeys[generatedKeys.length - 1].getMaxMessageSize(), (size.b / 8 - 11)); | ||
} | ||
it("should make empty key pair", function () { | ||
var key = new NodeRSA(null); | ||
assert.equal(key.isEmpty(), true); | ||
}); | ||
it("should make empty key pair with md5 signing option", function () { | ||
var key = new NodeRSA(null, {signingAlgorithm: 'md5'}); | ||
assert.equal(key.isEmpty(), true); | ||
assert.equal(key.options.signingAlgorithm, 'md5'); | ||
}); | ||
}); | ||
@@ -127,2 +141,19 @@ | ||
var fileKey = __dirname + "/private.key"; | ||
var fileKeyPEM = "-----BEGIN RSA PRIVATE KEY-----\n"+ | ||
"MIICXAIBAAKBgQCCdY+EpDC/vPa335l751SBM8d5Lf4z4QZX4bc+DqTY9zVY/rmP\n"+ | ||
"GbTkCueKnIKApuOGMXJOaCwNH9wUftNt7T0foEwjl16uIC8m4hwSjjNL5TKqMVey\n"+ | ||
"Syv04oBuidv76u5yNiLC4J85lbmW3WAyYkTCbm/VJZAXNJuqCm7AVWmQMQIDAQAB\n"+ | ||
"AoGAEYR3oPfrE9PrzQTZNyn4zuCFCGCEobK1h1dno42T1Q5cu3Z4tB5fi79rF9Gs\n"+ | ||
"NFo0cvBwyNZ0E88TXi0pdrlEW6mdPgQFd3CFxrOgKt9AGpOtI1zzVOb1Uddywq/m\n"+ | ||
"WBPyETwEKzq7lC2nAcMUr0rlFrrDmUT2dafHeuWnFMZ/1YECQQDCtftsH9/prbgu\n"+ | ||
"Q4F2lOWsLz96aix/jnI8FhBmukKmfLMXjCZYYv+Dsr8TIl/iriGqcSgGkBHHoGe1\n"+ | ||
"nmLUZ4EHAkEAq4YcB8T9DLIYUeaS+JRWwLOejU6/rYdgxBIaGn2m0Ldp/z7lLM7g\n"+ | ||
"b0H5Al+7POajkAdnDclBDhyxqInHO4VvBwJBAJ25jNEpgNhqQKg5RsYoF2RDYchn\n"+ | ||
"+WPan+7McLzGZPc4TFrmzKkMiK7GPMHjNokJRXwr7aBjVAPBjEEy7BvjPEECQFOJ\n"+ | ||
"4rcKAzEewGeLREObg9Eg6nTqSMLMb52vL1V9ozR+UDrHuDilnXuyhwPX+kqEDl+E\n"+ | ||
"q3V0cqHb6c8rI4TizRsCQANIyhoJ33ughNzbCIknkMPKtgvLOUARnbya/bkfRexL\n"+ | ||
"icyYzXPNuqZDY8JZQHlshN8cCcZcYjGPYYscd2LKB6o=\n"+ | ||
"-----END RSA PRIVATE KEY-----"; | ||
describe("Good cases", function () { | ||
@@ -156,2 +187,15 @@ it(".loadFromPrivatePEM() should load private key from (not trimmed) PEM string", function(){ | ||
}); | ||
it("should create key from buffer/fs.readFileSync output", function(){ | ||
var key = new NodeRSA(fs.readFileSync(fileKey)); | ||
assert.equal(key.getPrivatePEM(), fileKeyPEM); | ||
}); | ||
it("should load PEM from buffer/fs.readFileSync output", function(){ | ||
var key = new NodeRSA(); | ||
assert.equal(key.isEmpty(), true); | ||
key.loadFromPEM(fs.readFileSync(fileKey)); | ||
assert.equal(key.isEmpty(), false); | ||
assert.equal(key.getPrivatePEM(), fileKeyPEM); | ||
}); | ||
}); | ||
@@ -158,0 +202,0 @@ |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
98841
10
2461
214
1