Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
80552 views
1
var xor = require('../xor')
2
exports.encrypt = function (self, data, decrypt) {
3
var out = new Buffer('')
4
var len
5
while (data.length) {
6
if (self._cache.length === 0) {
7
self._cache = self._cipher.encryptBlock(self._prev)
8
self._prev = new Buffer('')
9
}
10
if (self._cache.length <= data.length) {
11
len = self._cache.length
12
out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])
13
data = data.slice(len)
14
} else {
15
out = Buffer.concat([out, encryptStart(self, data, decrypt)])
16
break
17
}
18
}
19
return out
20
}
21
function encryptStart (self, data, decrypt) {
22
var len = data.length
23
var out = xor(data, self._cache)
24
self._cache = self._cache.slice(len)
25
self._prev = Buffer.concat([self._prev, decrypt ? data : out])
26
return out
27
}
28
29