22 * TODO: tests for compatibility with other rsa libraries
33 */
44
5- var assert = require ( 'chai' ) . assert ;
6- var _ = require ( 'lodash' ) ;
7- var NodeRSA = require ( '../src/NodeRSA' ) ;
5+ var assert = require ( "chai" ) . assert ;
6+ var _ = require ( "lodash" ) ;
7+ var NodeRSA = require ( "../src/NodeRSA" ) ;
8+
9+ describe ( "NodeRSA" , function ( ) {
10+ var keySizes = [
11+ { b : 512 , e : 3 } ,
12+ { b : 512 , e : 5 } ,
13+ { b : 512 , e : 257 } ,
14+ { b : 512 , e : 65537 } ,
15+ { b : 768 } , // 'e' should be 65537
16+ { b : 1024 } // 'e' should be 65537
17+ ] ;
818
9- describe ( 'NodeRSA' , function ( ) {
10- var nodeRSA = null ;
19+ var dataBundle = {
20+ "string" : {
21+ data : "ascii + юникод スラ ⑨" ,
22+ encoding : "utf8"
23+ } ,
24+ "empty string" : {
25+ data : "" ,
26+ encoding : [ "utf8" , "ascii" , "hex" , "base64" ]
27+ } ,
28+ "long string" : {
29+ data : "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." ,
30+ encoding : [ "utf8" , "ascii" ]
31+ } ,
32+ "buffer" : {
33+ data : new Buffer ( "ascii + юникод スラ ⑨" ) ,
34+ encoding : "buffer"
35+ } ,
36+ "json object" : {
37+ data : { str : "string" , arr : [ "a" , "r" , "r" , "a" , "y" , true , "⑨" ] , int : 42 , nested : { key : { key : 1 } } } ,
38+ encoding : "json"
39+ } ,
40+ "json array" : {
41+ data : [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , [ 10 , 11 , 12 , [ 13 ] , 14 , 15 , [ 16 , 17 , [ 18 ] ] ] ] ,
42+ encoding : "json"
43+ }
44+ } ;
45+
46+ var generatedKeys = [ ] ;
1147 var privateNodeRSA = null ;
1248 var publicNodeRSA = null ;
1349
14- var dataBundle = {
15- "string" : "ascii + юникод スラ ⑨" ,
16- "empty string" : "" ,
17- "long string" : "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." ,
18- "buffer" : new Buffer ( "ascii + юникод スラ ⑨" ) ,
19- "json object" : { str : "string" , arr : [ "a" , "r" , "r" , "a" , "y" , true , '⑨' ] , int : 42 , nested : { key : { key : 1 } } } ,
20- "json array" : [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , [ 10 , 11 , 12 , [ 13 ] , 14 , 15 , [ 16 , 17 , [ 18 ] ] ] ]
21- } ;
50+ describe ( "Work with keys" , function ( ) {
2251
23- describe ( 'Work with keys' , function ( ) {
24- it ( '.generateKeyPair() should make key pair' , function ( ) {
25- nodeRSA = new NodeRSA ( { b : 512 } ) ;
26- assert . instanceOf ( nodeRSA . keyPair , Object ) ;
52+ describe ( "Generating keys" , function ( ) {
53+ for ( var i in keySizes ) {
54+ it ( "should make key pair " + keySizes [ i ] . b + "-bit length and public exponent is " + ( keySizes [ i ] . e || 65537 ) , function ( ) {
55+ generatedKeys . push ( new NodeRSA ( { b : keySizes [ i ] . b , e : keySizes [ i ] . e } ) ) ;
56+ assert . instanceOf ( generatedKeys [ generatedKeys . length - 1 ] . keyPair , Object ) ;
57+ } ) ;
58+ }
2759 } ) ;
2860
29- describe ( ' PEM' , function ( ) {
30- var privateKeyPEM = ' -----BEGIN RSA PRIVATE KEY-----\n' +
31- ' MIIFwgIBAAKCAUEAsE1edyfToZRv6cFOkB0tAJ5qJor4YF5CccJAL0fS/o1Yk10V\n' +
32- ' SXH4Xx4peSJgYQKkO0HqO1hAz6k9dFQB4U1CnWtRjtNEcIfycqrZrhu6you5syb6\n' +
33- ' ScV3Zu/9bm7/DyaLlx/gJhUPR1OxOzaqsEvlu7hbDhNLIYo1zKFb/aUBbD6+UcaG\n' +
34- ' xH2BfFNdzVAtVSVpc/s2Y3sboMN7rByUj7937iQlaMINvVjyasynYuzHNw6ZRP9J\n' +
35- ' P9fwxrCyaxnTPWxVl0qvVaQO2+TtFMtDXH2OVZtWWeLHAL8cildw0G+u2qVqTqIG\n' +
36- ' EwNyJlsAHykaPFAMW0xLueumrSlB+JUJPrRvvw4nBCd4GOrNSlPCE/xlk1Cb8JaI\n' +
37- ' CTLvDUcYc3ZqL3jqAueBhkpw2uCz8xVJeOA1KY4kQIIx8JEBsAYzgyP2iy0CAwEA\n' +
38- ' AQKCAUAjBcudShkdgRpWSmNr94/IDrAxpeu/YRo79QXBHriIftW4uIYRCAX6B0jf\n' +
39- ' 2ndg7iBn8Skxzs9ZMVqW8FVLR4jTMs2J3Og8npUIOG5zyuhpciZas4SHASY+GbCz\n' +
40- ' rnMWtGaIh/mENyzI05RimfKAgSNLDk1wV17Wc9lKJEfc9Fl7Al/WaOS+xdviMcFx\n' +
41- ' ltrajksLkjz0uDD917eKskbE45lULfGqeI0kYDadWp88pw6ikXJln2p3Y1PNQF3e\n' +
42- ' y2cN+Snzd0jx/c5fD9B1zxKYv5bUo+UnTzBxV81e9xCJfkdXv+6D5qDn1gGLdZZa\n' +
43- ' 5FxtZbRgVh/ZlqP9xYr72as/WFmIA20wRgHPgWvLyHsh0XThqZf2/O3R8KmFv8aT\n' +
44- ' +kmc5is6sVItIIi7ltorVapTkJai3zz/VSMBBaL+ytFN9jVl4QKBoQDfL8TMeZXu\n' +
45- ' gBTN7yq6zZWN8+60MUaxz0/lKdzmo35z32rpVKdsYd922pmcsNYaoj/H9L3j/NP4\n' +
46- ' 9z+SHfYpWvTa7AvJfNlXYc3BRXIarpfnXsm65IzKzHaF9i2xdXxkfTEYIvOQDMLF\n' +
47- ' SiiObWJMV+QqUxb3luu3/CR3IcbgeTOpdiC/T/Zl/YYl17JqZTHmLFZPq7xewttg\n' +
48- ' zQorDRWIFDtlAoGhAMo4+uM9f4BpOHSmayhLhHArIGs4386BkXSeOLeQitaQJ/2c\n' +
49- ' zb459O87XoCAonZbq+dI7XRnBU3toQvEsZgrtGkOFXCZJMWAQxD5BQ5vEYT6c86h\n' +
50- ' uGpX6h3ODlJ6UGi+5CWyMQ1cFlBkfffFAarjSYTVlyj736sOeDuJWX133z5VQBQ8\n' +
51- ' 1xSH23kNF95vxB4I1fXG8WL11YZU7VEwSLC4aCkCgaAKRj+wDhTZ4umSRWVZLiep\n' +
52- ' XkZp4y7W9q095nx13abvnKRmU3BVq/fGl++kZ/ujRD7dbKXlPflgJ7m0d06ivr4w\n' +
53- ' 6dbtEqNKw4TeVd0X31u82f89bFIS7/Cw4BFgbwEn+x9sdgdyZTP+MxjE3cI9s3oc\n' +
54- ' fLC8+ySk1qWzGkn2gX3gWkDNrdexAEfRrClZfokaiIX8qvJEBoJk5WuHadXI6u2F\n' +
55- ' AoGgByidOQ4kRVd0OCzr/jEuLwpXy3Pn+Fd93rL7LwRe5dmUkNXMMr+6e/2OCt6C\n' +
56- ' 4c28+CMMxOIgvfF7kf8Uil6BtHZbK/E/6/3uYdtu4mPsKtjy4I25CYqzLvrsZt8N\n' +
57- ' maeoS+1S7zYjVBU6oFrJBFOndpxZDYpdEKEigHkMQfTMYliCPDUrJ/7nNhHQln8+\n' +
58- ' YhHOATVZtjcdp/O5svYSnK7qgQKBoDd3lFWrPatgxpF1JXMEFFbaIRdNxHkKA4YY\n' +
59- ' gMTM4MPgViunYX/yJ7SaX8jWnC231A9uVn4+kb+DvKjc+ZuTQvnIUK2u6LvIinVF\n' +
60- ' snDEA+BbXwehAtwdHDMDtqYFdx4hvCWQwBNn4p3J0OO2tbYVMtvM5aOEfRSYagfm\n' +
61- ' RywhDUAjW8U0RBnzlmXhQQ6B9bjqooS2MsRrJrS5CU682fb3hBo=\n' +
62- ' -----END RSA PRIVATE KEY-----' ;
63-
64- var publicKeyPEM = ' -----BEGIN PUBLIC KEY-----\n' +
65- ' MIIBYjANBgkqhkiG9w0BAQEFAAOCAU8AMIIBSgKCAUEAsE1edyfToZRv6cFOkB0t\n' +
66- ' AJ5qJor4YF5CccJAL0fS/o1Yk10VSXH4Xx4peSJgYQKkO0HqO1hAz6k9dFQB4U1C\n' +
67- ' nWtRjtNEcIfycqrZrhu6you5syb6ScV3Zu/9bm7/DyaLlx/gJhUPR1OxOzaqsEvl\n' +
68- ' u7hbDhNLIYo1zKFb/aUBbD6+UcaGxH2BfFNdzVAtVSVpc/s2Y3sboMN7rByUj793\n' +
69- ' 7iQlaMINvVjyasynYuzHNw6ZRP9JP9fwxrCyaxnTPWxVl0qvVaQO2+TtFMtDXH2O\n' +
70- ' VZtWWeLHAL8cildw0G+u2qVqTqIGEwNyJlsAHykaPFAMW0xLueumrSlB+JUJPrRv\n' +
71- ' vw4nBCd4GOrNSlPCE/xlk1Cb8JaICTLvDUcYc3ZqL3jqAueBhkpw2uCz8xVJeOA1\n' +
72- ' KY4kQIIx8JEBsAYzgyP2iy0CAwEAAQ==\n' +
73- ' -----END PUBLIC KEY-----' ;
74-
75- it ( ' .loadFromPrivatePEM() should load private key from PEM string' , function ( ) {
61+ describe ( " PEM" , function ( ) {
62+ var privateKeyPEM = " -----BEGIN RSA PRIVATE KEY-----\n" +
63+ " MIIFwgIBAAKCAUEAsE1edyfToZRv6cFOkB0tAJ5qJor4YF5CccJAL0fS/o1Yk10V\n" +
64+ " SXH4Xx4peSJgYQKkO0HqO1hAz6k9dFQB4U1CnWtRjtNEcIfycqrZrhu6you5syb6\n" +
65+ " ScV3Zu/9bm7/DyaLlx/gJhUPR1OxOzaqsEvlu7hbDhNLIYo1zKFb/aUBbD6+UcaG\n" +
66+ " xH2BfFNdzVAtVSVpc/s2Y3sboMN7rByUj7937iQlaMINvVjyasynYuzHNw6ZRP9J\n" +
67+ " P9fwxrCyaxnTPWxVl0qvVaQO2+TtFMtDXH2OVZtWWeLHAL8cildw0G+u2qVqTqIG\n" +
68+ " EwNyJlsAHykaPFAMW0xLueumrSlB+JUJPrRvvw4nBCd4GOrNSlPCE/xlk1Cb8JaI\n" +
69+ " CTLvDUcYc3ZqL3jqAueBhkpw2uCz8xVJeOA1KY4kQIIx8JEBsAYzgyP2iy0CAwEA\n" +
70+ " AQKCAUAjBcudShkdgRpWSmNr94/IDrAxpeu/YRo79QXBHriIftW4uIYRCAX6B0jf\n" +
71+ " 2ndg7iBn8Skxzs9ZMVqW8FVLR4jTMs2J3Og8npUIOG5zyuhpciZas4SHASY+GbCz\n" +
72+ " rnMWtGaIh/mENyzI05RimfKAgSNLDk1wV17Wc9lKJEfc9Fl7Al/WaOS+xdviMcFx\n" +
73+ " ltrajksLkjz0uDD917eKskbE45lULfGqeI0kYDadWp88pw6ikXJln2p3Y1PNQF3e\n" +
74+ " y2cN+Snzd0jx/c5fD9B1zxKYv5bUo+UnTzBxV81e9xCJfkdXv+6D5qDn1gGLdZZa\n" +
75+ " 5FxtZbRgVh/ZlqP9xYr72as/WFmIA20wRgHPgWvLyHsh0XThqZf2/O3R8KmFv8aT\n" +
76+ " +kmc5is6sVItIIi7ltorVapTkJai3zz/VSMBBaL+ytFN9jVl4QKBoQDfL8TMeZXu\n" +
77+ " gBTN7yq6zZWN8+60MUaxz0/lKdzmo35z32rpVKdsYd922pmcsNYaoj/H9L3j/NP4\n" +
78+ " 9z+SHfYpWvTa7AvJfNlXYc3BRXIarpfnXsm65IzKzHaF9i2xdXxkfTEYIvOQDMLF\n" +
79+ " SiiObWJMV+QqUxb3luu3/CR3IcbgeTOpdiC/T/Zl/YYl17JqZTHmLFZPq7xewttg\n" +
80+ " zQorDRWIFDtlAoGhAMo4+uM9f4BpOHSmayhLhHArIGs4386BkXSeOLeQitaQJ/2c\n" +
81+ " zb459O87XoCAonZbq+dI7XRnBU3toQvEsZgrtGkOFXCZJMWAQxD5BQ5vEYT6c86h\n" +
82+ " uGpX6h3ODlJ6UGi+5CWyMQ1cFlBkfffFAarjSYTVlyj736sOeDuJWX133z5VQBQ8\n" +
83+ " 1xSH23kNF95vxB4I1fXG8WL11YZU7VEwSLC4aCkCgaAKRj+wDhTZ4umSRWVZLiep\n" +
84+ " XkZp4y7W9q095nx13abvnKRmU3BVq/fGl++kZ/ujRD7dbKXlPflgJ7m0d06ivr4w\n" +
85+ " 6dbtEqNKw4TeVd0X31u82f89bFIS7/Cw4BFgbwEn+x9sdgdyZTP+MxjE3cI9s3oc\n" +
86+ " fLC8+ySk1qWzGkn2gX3gWkDNrdexAEfRrClZfokaiIX8qvJEBoJk5WuHadXI6u2F\n" +
87+ " AoGgByidOQ4kRVd0OCzr/jEuLwpXy3Pn+Fd93rL7LwRe5dmUkNXMMr+6e/2OCt6C\n" +
88+ " 4c28+CMMxOIgvfF7kf8Uil6BtHZbK/E/6/3uYdtu4mPsKtjy4I25CYqzLvrsZt8N\n" +
89+ " maeoS+1S7zYjVBU6oFrJBFOndpxZDYpdEKEigHkMQfTMYliCPDUrJ/7nNhHQln8+\n" +
90+ " YhHOATVZtjcdp/O5svYSnK7qgQKBoDd3lFWrPatgxpF1JXMEFFbaIRdNxHkKA4YY\n" +
91+ " gMTM4MPgViunYX/yJ7SaX8jWnC231A9uVn4+kb+DvKjc+ZuTQvnIUK2u6LvIinVF\n" +
92+ " snDEA+BbXwehAtwdHDMDtqYFdx4hvCWQwBNn4p3J0OO2tbYVMtvM5aOEfRSYagfm\n" +
93+ " RywhDUAjW8U0RBnzlmXhQQ6B9bjqooS2MsRrJrS5CU682fb3hBo=\n" +
94+ " -----END RSA PRIVATE KEY-----" ;
95+
96+ var publicKeyPEM = " -----BEGIN PUBLIC KEY-----\n" +
97+ " MIIBYjANBgkqhkiG9w0BAQEFAAOCAU8AMIIBSgKCAUEAsE1edyfToZRv6cFOkB0t\n" +
98+ " AJ5qJor4YF5CccJAL0fS/o1Yk10VSXH4Xx4peSJgYQKkO0HqO1hAz6k9dFQB4U1C\n" +
99+ " nWtRjtNEcIfycqrZrhu6you5syb6ScV3Zu/9bm7/DyaLlx/gJhUPR1OxOzaqsEvl\n" +
100+ " u7hbDhNLIYo1zKFb/aUBbD6+UcaGxH2BfFNdzVAtVSVpc/s2Y3sboMN7rByUj793\n" +
101+ " 7iQlaMINvVjyasynYuzHNw6ZRP9JP9fwxrCyaxnTPWxVl0qvVaQO2+TtFMtDXH2O\n" +
102+ " VZtWWeLHAL8cildw0G+u2qVqTqIGEwNyJlsAHykaPFAMW0xLueumrSlB+JUJPrRv\n" +
103+ " vw4nBCd4GOrNSlPCE/xlk1Cb8JaICTLvDUcYc3ZqL3jqAueBhkpw2uCz8xVJeOA1\n" +
104+ " KY4kQIIx8JEBsAYzgyP2iy0CAwEAAQ==\n" +
105+ " -----END PUBLIC KEY-----" ;
106+
107+ it ( " .loadFromPrivatePEM() should load private key from PEM string" , function ( ) {
76108 privateNodeRSA = new NodeRSA ( privateKeyPEM ) ;
77109 assert . instanceOf ( privateNodeRSA . keyPair , Object ) ;
78110 assert ( privateNodeRSA . isPrivate ( ) ) ;
79111 assert ( privateNodeRSA . isPublic ( ) ) ;
80112 assert ( ! privateNodeRSA . isPublic ( true ) ) ;
81113 } ) ;
82114
83- it ( ' .loadFromPublicPEM() should load public key from PEM string' , function ( ) {
115+ it ( " .loadFromPublicPEM() should load public key from PEM string" , function ( ) {
84116 publicNodeRSA = new NodeRSA ( publicKeyPEM ) ;
85117 assert . instanceOf ( privateNodeRSA . keyPair , Object ) ;
86118 assert ( publicNodeRSA . isPublic ( ) ) ;
87119 assert ( publicNodeRSA . isPublic ( true ) ) ;
88120 assert ( ! publicNodeRSA . isPrivate ( ) ) ;
89121 } ) ;
90122
91- it ( ' .toPrivatePEM() should return private PEM string' , function ( ) {
123+ it ( " .toPrivatePEM() should return private PEM string" , function ( ) {
92124 assert . equal ( privateNodeRSA . getPrivatePEM ( ) , privateKeyPEM ) ;
93125 } ) ;
94126
95- it ( ' .toPublicPEM() from public key should return public PEM string' , function ( ) {
127+ it ( " .toPublicPEM() from public key should return public PEM string" , function ( ) {
96128 assert . equal ( publicNodeRSA . getPublicPEM ( ) , publicKeyPEM ) ;
97129 } ) ;
98130
99- it ( ' .toPublicPEM() from private key should return public PEM string' , function ( ) {
131+ it ( " .toPublicPEM() from private key should return public PEM string" , function ( ) {
100132 assert . equal ( privateNodeRSA . getPublicPEM ( ) , publicKeyPEM ) ;
101133 } ) ;
102134 } ) ;
103135 } ) ;
104136
137+ describe ( "Encrypting & decrypting" , function ( ) {
138+ var encrypted = { } ;
139+ var decrypted = { } ;
105140
106- var dataForEncrypt = "ascii + юникод スラ ⑨" ;
107- var longDataForEncrypt = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." ;
108- var JSONForEncrypt = { str : "string" , arr : [ "a" , "r" , "r" , "a" , "y" , true , '⑨' ] , int : 42 , nested : { key : { key : 1 } } }
109-
110- var encrypted = null ;
111- var encryptedLong = null ;
112- var encryptedBuffer = null ;
113- var encryptedJSON = null ;
114-
115- var decrypted = null ;
116- var decryptedLong = null ;
117- var decryptedJSON = null ;
118-
119- describe ( 'Encrypting' , function ( ) {
120- it ( '.encrypt() should return Buffer object' , function ( ) {
121- encryptedBuffer = nodeRSA . encrypt ( dataForEncrypt , 'buffer' ) ;
122- assert ( Buffer . isBuffer ( encryptedBuffer ) ) ;
123- } ) ;
124-
125- it ( '.encrypt() should return base64 encrypted string' , function ( ) {
126- encrypted = nodeRSA . encrypt ( dataForEncrypt , 'base64' ) ;
127- assert . isString ( encrypted ) ;
128- assert . match ( encrypted , / ^ ( [ A - Z a - z 0 - 9 + / ] { 4 } ) * ( [ A - Z a - z 0 - 9 + / ] { 4 } | [ A - Z a - z 0 - 9 + / ] { 3 } = | [ A - Z a - z 0 - 9 + / ] { 2 } = = ) $ / ) ;
129- } ) ;
130-
131- it ( '.encrypt() should return encrypted Buffer for long message' , function ( ) {
132- encryptedLong = nodeRSA . encrypt ( longDataForEncrypt , 'buffer' ) ;
133- assert ( Buffer . isBuffer ( encryptedLong ) ) ;
134- } ) ;
135-
136- it ( '.encrypt() for js object. Should return Buffer object' , function ( ) {
137- encryptedJSON = nodeRSA . encrypt ( JSONForEncrypt , 'buffer' ) ;
138- assert ( Buffer . isBuffer ( encryptedJSON ) ) ;
139- } ) ;
140- } ) ;
141-
142- describe ( 'Decrypting' , function ( ) {
143- it ( '.decrypt() should return decrypted Buffer' , function ( ) {
144- decrypted = nodeRSA . decrypt ( encryptedBuffer ) ;
145- assert ( Buffer . isBuffer ( decrypted ) ) ;
146- } ) ;
147-
148- it ( '.decrypt() should return decrypted string' , function ( ) {
149- decrypted = nodeRSA . decrypt ( new Buffer ( encrypted , 'base64' ) , 'utf8' ) ;
150- assert . isString ( decrypted ) ;
151- } ) ;
152-
153- it ( '.decrypt() should return decrypted string for long message' , function ( ) {
154- decryptedLong = nodeRSA . decrypt ( encryptedLong , 'utf8' ) ;
155- assert . isString ( decryptedLong ) ;
156- } ) ;
157-
158- it ( '.decrypt() for js object. Should return decrypted js object' , function ( ) {
159- decryptedJSON = nodeRSA . decrypt ( encryptedJSON , 'json' ) ;
160- assert . isObject ( decryptedJSON ) ;
161- } ) ;
162-
163- it ( 'source and decrypted should be the same' , function ( ) {
164- assert . equal ( decrypted , dataForEncrypt ) ;
165- } ) ;
141+ for ( var i in dataBundle ) {
142+ var suit = dataBundle [ i ] ;
166143
167- it ( 'long source and decrypted should be the same' , function ( ) {
168- assert . equal ( decryptedLong , longDataForEncrypt ) ;
169- } ) ;
144+ it ( "should encrypt " + i , function ( ) {
145+ encrypted [ i ] = generatedKeys [ 0 ] . encrypt ( suit . data ) ;
146+ assert ( Buffer . isBuffer ( encrypted [ i ] ) ) ;
147+ assert ( encrypted [ i ] . length > 0 ) ;
148+ } ) ;
170149
171- it ( 'source JSON and decrypted JSON should be the same' , function ( ) {
172- assert ( _ . isEqual ( decryptedJSON , JSONForEncrypt ) ) ;
173- } ) ;
150+ it ( "should decrypt " + i , function ( ) {
151+ decrypted [ i ] = generatedKeys [ 0 ] . decrypt ( encrypted [ i ] , _ . isArray ( suit . encoding ) ? suit . encoding [ 0 ] : suit . encoding ) ;
152+ assert ( _ . isEqual ( suit . data , decrypted [ i ] ) ) ;
153+ } ) ;
154+ }
174155 } ) ;
175156
176- describe ( 'Signing & verifying' , function ( ) {
177-
178-
157+ describe ( "Signing & verifying" , function ( ) {
179158 var signed = { } ;
180159
181160 for ( var i in dataBundle ) {
182- var sign = dataBundle [ i ] ;
183- var signature = null ;
184-
185- it ( 'should sign ' + i , function ( ) {
186- signature = nodeRSA . sign ( sign , 'hex' ) ;
187- console . log ( signature )
161+ var suit = dataBundle [ i ] ;
162+ it ( "should sign " + i , function ( ) {
163+ signed [ i ] = generatedKeys [ 0 ] . sign ( suit . data ) ;
164+ assert ( Buffer . isBuffer ( signed [ i ] ) ) ;
165+ assert ( signed [ i ] . length > 0 ) ;
188166 } ) ;
189167
168+ it ( "should verify " + i , function ( ) {
169+ assert ( generatedKeys [ 0 ] . verify ( suit . data , signed [ i ] ) ) ;
170+ } ) ;
190171 }
191172 } ) ;
192173} ) ;
0 commit comments