| var xor = require('buffer-xor') | 
| var Buffer = require('safe-buffer').Buffer | 
| var incr32 = require('../incr32') | 
|   | 
| function getBlock (self) { | 
|   var out = self._cipher.encryptBlockRaw(self._prev) | 
|   incr32(self._prev) | 
|   return out | 
| } | 
|   | 
| var blockSize = 16 | 
| exports.encrypt = function (self, chunk) { | 
|   var chunkNum = Math.ceil(chunk.length / blockSize) | 
|   var start = self._cache.length | 
|   self._cache = Buffer.concat([ | 
|     self._cache, | 
|     Buffer.allocUnsafe(chunkNum * blockSize) | 
|   ]) | 
|   for (var i = 0; i < chunkNum; i++) { | 
|     var out = getBlock(self) | 
|     var offset = start + i * blockSize | 
|     self._cache.writeUInt32BE(out[0], offset + 0) | 
|     self._cache.writeUInt32BE(out[1], offset + 4) | 
|     self._cache.writeUInt32BE(out[2], offset + 8) | 
|     self._cache.writeUInt32BE(out[3], offset + 12) | 
|   } | 
|   var pad = self._cache.slice(0, chunk.length) | 
|   self._cache = self._cache.slice(chunk.length) | 
|   return xor(chunk, pad) | 
| } |