|
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