UNPKG

1.08 kBJavaScriptView Raw
1'use strict';
2
3var bitcore = require('bitcore');
4var $ = bitcore.util.preconditions;
5var aes = require('aes');
6
7var AES = function AES() {};
8
9AES.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
18AES.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
27AES.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
40AES.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
50module.exports = AES;