UNPKG

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