|
2 | 2 | * TODO: tests for compatibility with other rsa libraries
|
3 | 3 | */
|
4 | 4 |
|
| 5 | +var fs = require('fs'); |
5 | 6 | var assert = require("chai").assert;
|
6 | 7 | var _ = require("lodash");
|
7 | 8 | var NodeRSA = require("../src/NodeRSA");
|
8 | 9 |
|
| 10 | + |
9 | 11 | describe("NodeRSA", function(){
|
10 | 12 | var keySizes = [
|
11 | 13 | {b: 512, e: 3},
|
@@ -60,15 +62,27 @@ describe("NodeRSA", function(){
|
60 | 62 | describe("Generating keys", function() {
|
61 | 63 | for (var size in keySizes) {
|
62 | 64 | (function(size){
|
63 |
| - it("should make key pair " + size.b + "-bit length and public exponent is " + (size.e ? size.e : size.e + ' and should be 65537'), function () { |
| 65 | + it("should make key pair " + size.b + "-bit length and public exponent is " + (size.e ? size.e : size.e + " and should be 65537"), function () { |
64 | 66 | generatedKeys.push(new NodeRSA({b: size.b, e: size.e}));
|
65 | 67 | assert.instanceOf(generatedKeys[generatedKeys.length - 1].keyPair, Object);
|
| 68 | + assert.equal(generatedKeys[generatedKeys.length - 1].isEmpty(), false); |
66 | 69 | assert.equal(generatedKeys[generatedKeys.length - 1].getKeySize(), size.b);
|
67 | 70 | assert.equal(generatedKeys[generatedKeys.length - 1].getMaxMessageSize(), (size.b / 8 - 11));
|
68 | 71 | assert.equal(generatedKeys[generatedKeys.length - 1].keyPair.e, size.e || 65537);
|
69 | 72 | });
|
70 | 73 | })(keySizes[size]);
|
71 | 74 | }
|
| 75 | + |
| 76 | + it("should make empty key pair", function () { |
| 77 | + var key = new NodeRSA(null); |
| 78 | + assert.equal(key.isEmpty(), true); |
| 79 | + }); |
| 80 | + |
| 81 | + it("should make empty key pair with md5 signing option", function () { |
| 82 | + var key = new NodeRSA(null, {signingAlgorithm: 'md5'}); |
| 83 | + assert.equal(key.isEmpty(), true); |
| 84 | + assert.equal(key.options.signingAlgorithm, 'md5'); |
| 85 | + }); |
72 | 86 | });
|
73 | 87 |
|
74 | 88 | describe("PEM", function(){
|
@@ -120,6 +134,23 @@ describe("NodeRSA", function(){
|
120 | 134 | var privateKeyPEMNotTrimmed = ' \n\n \n\n ' + privateKeyPEM + '\n \n \n\n ';
|
121 | 135 | var publicKeyPEMNotTrimmed = '\n\n\n\n ' + publicKeyPEM + '\n \n\n\n ';
|
122 | 136 |
|
| 137 | + var fileKey = __dirname + "/private.key"; |
| 138 | + var fileKeyPEM = "-----BEGIN RSA PRIVATE KEY-----\n"+ |
| 139 | + "MIICXAIBAAKBgQCCdY+EpDC/vPa335l751SBM8d5Lf4z4QZX4bc+DqTY9zVY/rmP\n"+ |
| 140 | + "GbTkCueKnIKApuOGMXJOaCwNH9wUftNt7T0foEwjl16uIC8m4hwSjjNL5TKqMVey\n"+ |
| 141 | + "Syv04oBuidv76u5yNiLC4J85lbmW3WAyYkTCbm/VJZAXNJuqCm7AVWmQMQIDAQAB\n"+ |
| 142 | + "AoGAEYR3oPfrE9PrzQTZNyn4zuCFCGCEobK1h1dno42T1Q5cu3Z4tB5fi79rF9Gs\n"+ |
| 143 | + "NFo0cvBwyNZ0E88TXi0pdrlEW6mdPgQFd3CFxrOgKt9AGpOtI1zzVOb1Uddywq/m\n"+ |
| 144 | + "WBPyETwEKzq7lC2nAcMUr0rlFrrDmUT2dafHeuWnFMZ/1YECQQDCtftsH9/prbgu\n"+ |
| 145 | + "Q4F2lOWsLz96aix/jnI8FhBmukKmfLMXjCZYYv+Dsr8TIl/iriGqcSgGkBHHoGe1\n"+ |
| 146 | + "nmLUZ4EHAkEAq4YcB8T9DLIYUeaS+JRWwLOejU6/rYdgxBIaGn2m0Ldp/z7lLM7g\n"+ |
| 147 | + "b0H5Al+7POajkAdnDclBDhyxqInHO4VvBwJBAJ25jNEpgNhqQKg5RsYoF2RDYchn\n"+ |
| 148 | + "+WPan+7McLzGZPc4TFrmzKkMiK7GPMHjNokJRXwr7aBjVAPBjEEy7BvjPEECQFOJ\n"+ |
| 149 | + "4rcKAzEewGeLREObg9Eg6nTqSMLMb52vL1V9ozR+UDrHuDilnXuyhwPX+kqEDl+E\n"+ |
| 150 | + "q3V0cqHb6c8rI4TizRsCQANIyhoJ33ughNzbCIknkMPKtgvLOUARnbya/bkfRexL\n"+ |
| 151 | + "icyYzXPNuqZDY8JZQHlshN8cCcZcYjGPYYscd2LKB6o=\n"+ |
| 152 | + "-----END RSA PRIVATE KEY-----"; |
| 153 | + |
123 | 154 | describe("Good cases", function () {
|
124 | 155 | it(".loadFromPrivatePEM() should load private key from (not trimmed) PEM string", function(){
|
125 | 156 | privateNodeRSA = new NodeRSA(privateKeyPEMNotTrimmed);
|
@@ -148,6 +179,19 @@ describe("NodeRSA", function(){
|
148 | 179 | it(".getPublicPEM() from private key should return public PEM string", function(){
|
149 | 180 | assert.equal(privateNodeRSA.getPublicPEM(), publicKeyPEM);
|
150 | 181 | });
|
| 182 | + |
| 183 | + it("should create key from buffer/fs.readFileSync output", function(){ |
| 184 | + var key = new NodeRSA(fs.readFileSync(fileKey)); |
| 185 | + assert.equal(key.getPrivatePEM(), fileKeyPEM); |
| 186 | + }); |
| 187 | + |
| 188 | + it("should load PEM from buffer/fs.readFileSync output", function(){ |
| 189 | + var key = new NodeRSA(); |
| 190 | + assert.equal(key.isEmpty(), true); |
| 191 | + key.loadFromPEM(fs.readFileSync(fileKey)); |
| 192 | + assert.equal(key.isEmpty(), false); |
| 193 | + assert.equal(key.getPrivatePEM(), fileKeyPEM); |
| 194 | + }); |
151 | 195 | });
|
152 | 196 |
|
153 | 197 | describe("Bad cases", function () {
|
|
0 commit comments