diff --git a/src/js/core/read_write_proxy.js b/src/js/core/read_write_proxy.js index 9ad7a5df..fdbe01d1 100644 --- a/src/js/core/read_write_proxy.js +++ b/src/js/core/read_write_proxy.js @@ -2,21 +2,20 @@ import { Application } from "../application"; /* typehints:end */ -import { sha1, CRC_PREFIX, computeCrc } from "./sensitive_utils.encrypt"; -import { createLogger } from "./logging"; import { FILE_NOT_FOUND } from "../platform/storage"; -import { accessNestedPropertyReverse } from "./utils"; +import { compressObject, decompressObject } from "../savegame/savegame_compressor"; +import { asyncCompressor, compressionPrefix } from "./async_compression"; import { IS_DEBUG, globalConfig } from "./config"; import { ExplainedResult } from "./explained_result"; -import { decompressX64, compressX64 } from "./lzstring"; -import { asyncCompressor, compressionPrefix } from "./async_compression"; -import { compressObject, decompressObject } from "../savegame/savegame_compressor"; +import { createLogger } from "./logging"; +import { compressX64, decompressX64 } from "./lzstring"; +import { CRC_PREFIX, computeCrc, sha1 } from "./sensitive_utils.encrypt"; import debounce from "debounce-promise"; const logger = createLogger("read_write_proxy"); -const salt = accessNestedPropertyReverse(globalConfig, ["file", "info"]); +const salt = globalConfig.info.file; // Helper which only writes / reads if verify() works. Also performs migration export class ReadWriteProxy { diff --git a/src/js/core/utils.js b/src/js/core/utils.js index 673c021f..291b5a42 100644 --- a/src/js/core/utils.js +++ b/src/js/core/utils.js @@ -40,19 +40,6 @@ export function randomInt(start, end) { return Math.floor(Math.random() * (end - start + 1) + start); } -/** - * Access an object in a very annoying way, used for obsfuscation. - * @param {any} obj - * @param {Array} keys - */ -export function accessNestedPropertyReverse(obj, keys) { - let result = obj; - for (let i = keys.length - 1; i >= 0; --i) { - result = result[keys[i]]; - } - return result; -} - /** * Chooses a random entry of an array * @template T @@ -406,7 +393,7 @@ export function makeButton(parent, classes = [], innerHTML = "") { */ export function removeAllChildren(elem) { if (elem) { - var range = document.createRange(); + const range = document.createRange(); range.selectNodeContents(elem); range.deleteContents(); } @@ -618,7 +605,7 @@ export function fillInLinkIntoTranslation(translation, link) { * @param {string} text */ export function generateFileDownload(filename, text) { - var element = document.createElement("a"); + const element = document.createElement("a"); element.setAttribute("href", "data:text/plain;charset=utf-8," + encodeURIComponent(text)); element.setAttribute("download", filename); @@ -634,7 +621,7 @@ export function generateFileDownload(filename, text) { * @param {string} acceptedType */ export function startFileChoose(acceptedType = ".bin") { - var input = document.createElement("input"); + const input = document.createElement("input"); input.type = "file"; input.accept = acceptedType; diff --git a/src/js/webworkers/compression.worker.js b/src/js/webworkers/compression.worker.js index 1e567c05..e0414d7c 100644 --- a/src/js/webworkers/compression.worker.js +++ b/src/js/webworkers/compression.worker.js @@ -3,16 +3,6 @@ import { compressX64 } from "../core/lzstring"; import { computeCrc } from "../core/sensitive_utils.encrypt"; import { compressObject } from "../savegame/savegame_compressor"; -function accessNestedPropertyReverse(obj, keys) { - let result = obj; - for (let i = keys.length - 1; i >= 0; --i) { - result = result[keys[i]]; - } - return result; -} - -const salt = accessNestedPropertyReverse(globalConfig, ["file", "info"]); - self.addEventListener("message", event => { // @ts-ignore const { jobId, job, data } = event.data; @@ -32,7 +22,7 @@ function performJob(job, data) { const optimized = compressObject(data.obj); const stringified = JSON.stringify(optimized); - const checksum = computeCrc(stringified + salt); + const checksum = computeCrc(stringified + globalConfig.info.file); return data.compressionPrefix + compressX64(checksum + stringified); } default: