Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

node-rsa

Package Overview
Dependencies
Maintainers
1
Versions
46
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

node-rsa - npm Package Compare versions

Comparing version 0.1.53 to 0.1.54

test/private.key

0

gruntfile.js

@@ -0,0 +0,0 @@ module.exports = function(grunt) {

2

package.json
{
"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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc