1 | var xor = require('../xor');
|
2 | exports.encrypt = function (self, data, decrypt) {
|
3 | var out = new Buffer('');
|
4 | var len;
|
5 | while (data.length) {
|
6 | if (self._cache.length === 0) {
|
7 | self._cache = self._cipher.encryptBlock(self._prev);
|
8 | self._prev = new Buffer('');
|
9 | }
|
10 | if (self._cache.length <= data.length) {
|
11 | len = self._cache.length;
|
12 | out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)]);
|
13 | data = data.slice(len);
|
14 | } else {
|
15 | out = Buffer.concat([out, encryptStart(self, data, decrypt)]);
|
16 | break;
|
17 | }
|
18 | }
|
19 | return out;
|
20 | };
|
21 | function encryptStart(self, data, decrypt) {
|
22 | var len = data.length;
|
23 | var out = xor(data, self._cache);
|
24 | self._cache = self._cache.slice(len);
|
25 | self._prev = Buffer.concat([self._prev, decrypt?data:out]);
|
26 | return out;
|
27 | } |
\ | No newline at end of file |