diff options
Diffstat (limited to 'node_modules/browserify-aes/modes/ctr.js')
-rw-r--r-- | node_modules/browserify-aes/modes/ctr.js | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/node_modules/browserify-aes/modes/ctr.js b/node_modules/browserify-aes/modes/ctr.js new file mode 100644 index 000000000..0ef2278bf --- /dev/null +++ b/node_modules/browserify-aes/modes/ctr.js @@ -0,0 +1,31 @@ +var xor = require('buffer-xor') + +function incr32 (iv) { + var len = iv.length + var item + while (len--) { + item = iv.readUInt8(len) + if (item === 255) { + iv.writeUInt8(0, len) + } else { + item++ + iv.writeUInt8(item, len) + break + } + } +} + +function getBlock (self) { + var out = self._cipher.encryptBlock(self._prev) + incr32(self._prev) + return out +} + +exports.encrypt = function (self, chunk) { + while (self._cache.length < chunk.length) { + self._cache = Buffer.concat([self._cache, getBlock(self)]) + } + var pad = self._cache.slice(0, chunk.length) + self._cache = self._cache.slice(chunk.length) + return xor(chunk, pad) +} |