Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
_initializeStreams() {
this._resizerStream = new ResizerStream(this._maxClearChunkSize);
this._encryptorStream = new Transform({
// buffering input bytes until clear chunk size is reached
writableHighWaterMark: this._maxClearChunkSize,
writableObjectMode: false,
// buffering output bytes until encrypted chunk size is reached
readableHighWaterMark: this._maxEncryptedChunkSize,
readableObjectMode: false,
transform: (clearData, encoding, done) => {
try {
const encryptedChunk = this._encryptChunk(clearData);
this._encryptorStream.push(encryptedChunk);
} catch (err) {
return done(err);
}
done();
},
let resourceId;
try {
({ encryptedChunkSize, resourceId } = encryptionV4.unserialize(headOfEncryptedData));
} catch (e) {
throw new InvalidArgument('encryptedData', e, headOfEncryptedData);
}
const key = await this._mapper.findKey(resourceId);
this._state.maxEncryptedChunkSize = encryptedChunkSize;
this._resizerStream = new ResizerStream(encryptedChunkSize);
const b64ResourceId = utils.toBase64(resourceId);
this._decryptionStream = new Transform({
// buffering input bytes until encrypted chunk size is reached
writableHighWaterMark: encryptedChunkSize,
writableObjectMode: false,
// buffering output bytes until clear chunk size is reached
readableHighWaterMark: encryptedChunkSize - encryptionV4.overhead,
readableObjectMode: false,
transform: (encryptedChunk, encoding, done) => {
try {
const clearData = encryptionV4.decrypt(key, this._state.index, encryptionV4.unserialize(encryptedChunk));
this._decryptionStream.push(clearData);
} catch (error) {
return done(new DecryptionFailed({ error, b64ResourceId }));
}
this._state.lastEncryptedChunkSize = encryptedChunk.length;
this._state.index += 1; // safe as long as index < 2^53