From 28b0809e609b45cba1f954f5be43c5a30fb1d057 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Tue, 27 Apr 2021 13:31:13 +0200 Subject: [PATCH] Move the `DecryptStream` from `src/core/stream.js` and into its own file --- src/core/crypto.js | 2 +- src/core/decrypt_stream.js | 66 ++++++++++++++++++++++++++++++++++++++ src/core/stream.js | 48 --------------------------- 3 files changed, 67 insertions(+), 49 deletions(-) create mode 100644 src/core/decrypt_stream.js diff --git a/src/core/crypto.js b/src/core/crypto.js index 752e5e79d..dab3a1e52 100644 --- a/src/core/crypto.js +++ b/src/core/crypto.js @@ -26,7 +26,7 @@ import { warn, } from "../shared/util.js"; import { isDict, isName, Name } from "./primitives.js"; -import { DecryptStream } from "./stream.js"; +import { DecryptStream } from "./decrypt_stream.js"; class ARCFourCipher { constructor(key) { diff --git a/src/core/decrypt_stream.js b/src/core/decrypt_stream.js new file mode 100644 index 000000000..68be79d2b --- /dev/null +++ b/src/core/decrypt_stream.js @@ -0,0 +1,66 @@ +/* Copyright 2012 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* eslint-disable no-var */ + +import { DecodeStream } from "./stream.js"; + +var DecryptStream = (function DecryptStreamClosure() { + // eslint-disable-next-line no-shadow + function DecryptStream(str, maybeLength, decrypt) { + this.str = str; + this.dict = str.dict; + this.decrypt = decrypt; + this.nextChunk = null; + this.initialized = false; + + DecodeStream.call(this, maybeLength); + } + + var chunkSize = 512; + + DecryptStream.prototype = Object.create(DecodeStream.prototype); + + DecryptStream.prototype.readBlock = function DecryptStream_readBlock() { + var chunk; + if (this.initialized) { + chunk = this.nextChunk; + } else { + chunk = this.str.getBytes(chunkSize); + this.initialized = true; + } + if (!chunk || chunk.length === 0) { + this.eof = true; + return; + } + this.nextChunk = this.str.getBytes(chunkSize); + var hasMoreData = this.nextChunk && this.nextChunk.length > 0; + + var decrypt = this.decrypt; + chunk = decrypt(chunk, !hasMoreData); + + var bufferLength = this.bufferLength; + var i, + n = chunk.length; + var buffer = this.ensureBuffer(bufferLength + n); + for (i = 0; i < n; i++) { + buffer[bufferLength++] = chunk[i]; + } + this.bufferLength = bufferLength; + }; + + return DecryptStream; +})(); + +export { DecryptStream }; diff --git a/src/core/stream.js b/src/core/stream.js index 9005d02bf..425da861e 100644 --- a/src/core/stream.js +++ b/src/core/stream.js @@ -948,53 +948,6 @@ var PredictorStream = (function PredictorStreamClosure() { return PredictorStream; })(); -var DecryptStream = (function DecryptStreamClosure() { - // eslint-disable-next-line no-shadow - function DecryptStream(str, maybeLength, decrypt) { - this.str = str; - this.dict = str.dict; - this.decrypt = decrypt; - this.nextChunk = null; - this.initialized = false; - - DecodeStream.call(this, maybeLength); - } - - var chunkSize = 512; - - DecryptStream.prototype = Object.create(DecodeStream.prototype); - - DecryptStream.prototype.readBlock = function DecryptStream_readBlock() { - var chunk; - if (this.initialized) { - chunk = this.nextChunk; - } else { - chunk = this.str.getBytes(chunkSize); - this.initialized = true; - } - if (!chunk || chunk.length === 0) { - this.eof = true; - return; - } - this.nextChunk = this.str.getBytes(chunkSize); - var hasMoreData = this.nextChunk && this.nextChunk.length > 0; - - var decrypt = this.decrypt; - chunk = decrypt(chunk, !hasMoreData); - - var bufferLength = this.bufferLength; - var i, - n = chunk.length; - var buffer = this.ensureBuffer(bufferLength + n); - for (i = 0; i < n; i++) { - buffer[bufferLength++] = chunk[i]; - } - this.bufferLength = bufferLength; - }; - - return DecryptStream; -})(); - var NullStream = (function NullStreamClosure() { // eslint-disable-next-line no-shadow function NullStream() { @@ -1008,7 +961,6 @@ var NullStream = (function NullStreamClosure() { export { DecodeStream, - DecryptStream, FlateStream, NullStream, PredictorStream,