1 | 'use strict';
|
2 |
|
3 | var bitcore = require('bitcore');
|
4 | var $ = bitcore.util.preconditions;
|
5 | var aes = require('aes');
|
6 |
|
7 | var AES = function AES() {};
|
8 |
|
9 | AES.encrypt = function(messagebuf, keybuf) {
|
10 | var key = AES.buf2words(keybuf);
|
11 | var message = AES.buf2words(messagebuf);
|
12 | var a = new aes(key);
|
13 | var enc = a.encrypt(message);
|
14 | var encbuf = AES.words2buf(enc);
|
15 | return encbuf;
|
16 | };
|
17 |
|
18 | AES.decrypt = function(encbuf, keybuf) {
|
19 | var enc = AES.buf2words(encbuf);
|
20 | var key = AES.buf2words(keybuf);
|
21 | var a = new aes(key);
|
22 | var message = a.decrypt(enc);
|
23 | var messagebuf = AES.words2buf(message);
|
24 | return messagebuf;
|
25 | };
|
26 |
|
27 | AES.buf2words = function(buf) {
|
28 | $.checkArgument(buf);
|
29 | $.checkArgument(buf.length % 4 === 0, 'buf length must be a multiple of 4');
|
30 |
|
31 | var words = [];
|
32 |
|
33 | for (var i = 0; i < buf.length / 4; i++) {
|
34 | words.push(buf.readUInt32BE(i * 4));
|
35 | }
|
36 |
|
37 | return words;
|
38 | };
|
39 |
|
40 | AES.words2buf = function(words) {
|
41 | var buf = new Buffer(words.length * 4);
|
42 |
|
43 | for (var i = 0; i < words.length; i++) {
|
44 | buf.writeUInt32BE(words[i], i * 4);
|
45 | }
|
46 |
|
47 | return buf;
|
48 | };
|
49 |
|
50 | module.exports = AES;
|