UNPKG

668 BJavaScriptView Raw
1var xor = require('../xor');
2function getBlock(self) {
3 var out = self._cipher.encryptBlock(self._prev);
4 incr32(self._prev);
5 return out;
6}
7exports.encrypt = function (self, chunk) {
8 while (self._cache.length < chunk.length) {
9 self._cache = Buffer.concat([self._cache, getBlock(self)]);
10 }
11 var pad = self._cache.slice(0, chunk.length);
12 self._cache = self._cache.slice(chunk.length);
13 return xor(chunk, pad);
14};
15function incr32(iv) {
16 var len = iv.length;
17 var item;
18 while (len--) {
19 item = iv.readUInt8(len);
20 if (item === 255) {
21 iv.writeUInt8(0, len);
22 } else {
23 item++;
24 iv.writeUInt8(item, len);
25 break;
26 }
27 }
28}
\No newline at end of file