aboutsummaryrefslogtreecommitdiff
path: root/node_modules/browserify-aes/modes
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/browserify-aes/modes')
-rw-r--r--node_modules/browserify-aes/modes/cbc.js17
-rw-r--r--node_modules/browserify-aes/modes/cfb.js31
-rw-r--r--node_modules/browserify-aes/modes/cfb1.js34
-rw-r--r--node_modules/browserify-aes/modes/cfb8.js15
-rw-r--r--node_modules/browserify-aes/modes/ctr.js31
-rw-r--r--node_modules/browserify-aes/modes/ecb.js6
-rw-r--r--node_modules/browserify-aes/modes/ofb.js16
7 files changed, 150 insertions, 0 deletions
diff --git a/node_modules/browserify-aes/modes/cbc.js b/node_modules/browserify-aes/modes/cbc.js
new file mode 100644
index 000000000..b133e4069
--- /dev/null
+++ b/node_modules/browserify-aes/modes/cbc.js
@@ -0,0 +1,17 @@
+var xor = require('buffer-xor')
+
+exports.encrypt = function (self, block) {
+ var data = xor(block, self._prev)
+
+ self._prev = self._cipher.encryptBlock(data)
+ return self._prev
+}
+
+exports.decrypt = function (self, block) {
+ var pad = self._prev
+
+ self._prev = block
+ var out = self._cipher.decryptBlock(block)
+
+ return xor(out, pad)
+}
diff --git a/node_modules/browserify-aes/modes/cfb.js b/node_modules/browserify-aes/modes/cfb.js
new file mode 100644
index 000000000..0bfe4fab8
--- /dev/null
+++ b/node_modules/browserify-aes/modes/cfb.js
@@ -0,0 +1,31 @@
+var xor = require('buffer-xor')
+
+exports.encrypt = function (self, data, decrypt) {
+ var out = new Buffer('')
+ var len
+
+ while (data.length) {
+ if (self._cache.length === 0) {
+ self._cache = self._cipher.encryptBlock(self._prev)
+ self._prev = new Buffer('')
+ }
+
+ if (self._cache.length <= data.length) {
+ len = self._cache.length
+ out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])
+ data = data.slice(len)
+ } else {
+ out = Buffer.concat([out, encryptStart(self, data, decrypt)])
+ break
+ }
+ }
+
+ return out
+}
+function encryptStart (self, data, decrypt) {
+ var len = data.length
+ var out = xor(data, self._cache)
+ self._cache = self._cache.slice(len)
+ self._prev = Buffer.concat([self._prev, decrypt ? data : out])
+ return out
+}
diff --git a/node_modules/browserify-aes/modes/cfb1.js b/node_modules/browserify-aes/modes/cfb1.js
new file mode 100644
index 000000000..335542e20
--- /dev/null
+++ b/node_modules/browserify-aes/modes/cfb1.js
@@ -0,0 +1,34 @@
+function encryptByte (self, byteParam, decrypt) {
+ var pad
+ var i = -1
+ var len = 8
+ var out = 0
+ var bit, value
+ while (++i < len) {
+ pad = self._cipher.encryptBlock(self._prev)
+ bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0
+ value = pad[0] ^ bit
+ out += ((value & 0x80) >> (i % 8))
+ self._prev = shiftIn(self._prev, decrypt ? bit : value)
+ }
+ return out
+}
+exports.encrypt = function (self, chunk, decrypt) {
+ var len = chunk.length
+ var out = new Buffer(len)
+ var i = -1
+ while (++i < len) {
+ out[i] = encryptByte(self, chunk[i], decrypt)
+ }
+ return out
+}
+function shiftIn (buffer, value) {
+ var len = buffer.length
+ var i = -1
+ var out = new Buffer(buffer.length)
+ buffer = Buffer.concat([buffer, new Buffer([value])])
+ while (++i < len) {
+ out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)
+ }
+ return out
+}
diff --git a/node_modules/browserify-aes/modes/cfb8.js b/node_modules/browserify-aes/modes/cfb8.js
new file mode 100644
index 000000000..c967a959f
--- /dev/null
+++ b/node_modules/browserify-aes/modes/cfb8.js
@@ -0,0 +1,15 @@
+function encryptByte (self, byteParam, decrypt) {
+ var pad = self._cipher.encryptBlock(self._prev)
+ var out = pad[0] ^ byteParam
+ self._prev = Buffer.concat([self._prev.slice(1), new Buffer([decrypt ? byteParam : out])])
+ return out
+}
+exports.encrypt = function (self, chunk, decrypt) {
+ var len = chunk.length
+ var out = new Buffer(len)
+ var i = -1
+ while (++i < len) {
+ out[i] = encryptByte(self, chunk[i], decrypt)
+ }
+ return out
+}
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)
+}
diff --git a/node_modules/browserify-aes/modes/ecb.js b/node_modules/browserify-aes/modes/ecb.js
new file mode 100644
index 000000000..4dd97e7df
--- /dev/null
+++ b/node_modules/browserify-aes/modes/ecb.js
@@ -0,0 +1,6 @@
+exports.encrypt = function (self, block) {
+ return self._cipher.encryptBlock(block)
+}
+exports.decrypt = function (self, block) {
+ return self._cipher.decryptBlock(block)
+}
diff --git a/node_modules/browserify-aes/modes/ofb.js b/node_modules/browserify-aes/modes/ofb.js
new file mode 100644
index 000000000..bd875589f
--- /dev/null
+++ b/node_modules/browserify-aes/modes/ofb.js
@@ -0,0 +1,16 @@
+var xor = require('buffer-xor')
+
+function getBlock (self) {
+ self._prev = self._cipher.encryptBlock(self._prev)
+ return self._prev
+}
+
+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)
+}