mirror of
https://github.com/tobspr/shapez.io.git
synced 2025-12-14 10:41:52 +00:00
Drop support for SHA1 checksums
Also remove an unused function and switch to crypto.randomUUID() for savegame ID generation.
This commit is contained in:
parent
bbde68df23
commit
67f7babd09
@ -28,7 +28,6 @@
|
|||||||
"debounce-promise": "^3.1.2",
|
"debounce-promise": "^3.1.2",
|
||||||
"howler": "^2.1.2",
|
"howler": "^2.1.2",
|
||||||
"lz-string": "^1.4.4",
|
"lz-string": "^1.4.4",
|
||||||
"rusha": "^0.8.13",
|
|
||||||
"semver": "^7.3.5"
|
"semver": "^7.3.5"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|||||||
@ -9,7 +9,7 @@ import { IS_DEBUG, globalConfig } from "./config";
|
|||||||
import { ExplainedResult } from "./explained_result";
|
import { ExplainedResult } from "./explained_result";
|
||||||
import { createLogger } from "./logging";
|
import { createLogger } from "./logging";
|
||||||
import { compressX64, decompressX64 } from "./lzstring";
|
import { compressX64, decompressX64 } from "./lzstring";
|
||||||
import { CRC_PREFIX, computeCrc, sha1 } from "./sensitive_utils.encrypt";
|
import { computeCrc } from "./sensitive_utils.encrypt";
|
||||||
|
|
||||||
import debounce from "debounce-promise";
|
import debounce from "debounce-promise";
|
||||||
|
|
||||||
@ -109,9 +109,7 @@ export class ReadWriteProxy {
|
|||||||
const checksum = decompressed.substring(0, 40);
|
const checksum = decompressed.substring(0, 40);
|
||||||
const jsonString = decompressed.substr(40);
|
const jsonString = decompressed.substr(40);
|
||||||
|
|
||||||
const desiredChecksum = checksum.startsWith(CRC_PREFIX)
|
const desiredChecksum = computeCrc(jsonString + salt);
|
||||||
? computeCrc(jsonString + salt)
|
|
||||||
: sha1(jsonString + salt);
|
|
||||||
|
|
||||||
if (desiredChecksum !== checksum) {
|
if (desiredChecksum !== checksum) {
|
||||||
// Checksum mismatch
|
// Checksum mismatch
|
||||||
@ -198,11 +196,9 @@ export class ReadWriteProxy {
|
|||||||
|
|
||||||
// Compare stored checksum with actual checksum
|
// Compare stored checksum with actual checksum
|
||||||
const checksum = decompressed.substring(0, 40);
|
const checksum = decompressed.substring(0, 40);
|
||||||
const jsonString = decompressed.substr(40);
|
const jsonString = decompressed.slice(40);
|
||||||
|
|
||||||
const desiredChecksum = checksum.startsWith(CRC_PREFIX)
|
const desiredChecksum = computeCrc(jsonString + salt);
|
||||||
? computeCrc(jsonString + salt)
|
|
||||||
: sha1(jsonString + salt);
|
|
||||||
|
|
||||||
if (desiredChecksum !== checksum) {
|
if (desiredChecksum !== checksum) {
|
||||||
// Checksum mismatch
|
// Checksum mismatch
|
||||||
|
|||||||
@ -1,15 +1,4 @@
|
|||||||
import { createHash } from "rusha";
|
|
||||||
import crc32 from "crc/crc32";
|
import crc32 from "crc/crc32";
|
||||||
import { decompressX64 } from "./lzstring";
|
|
||||||
|
|
||||||
export function sha1(str) {
|
|
||||||
return createHash().update(str).digest("hex");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Window.location.host
|
|
||||||
export function getNameOfProvider() {
|
|
||||||
return window[decompressX64("DYewxghgLgliB2Q")][decompressX64("BYewzgLgdghgtgUyA")];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Distinguish legacy crc prefixes
|
// Distinguish legacy crc prefixes
|
||||||
export const CRC_PREFIX = "crc32".padEnd(32, "-");
|
export const CRC_PREFIX = "crc32".padEnd(32, "-");
|
||||||
|
|||||||
@ -1,12 +1,10 @@
|
|||||||
|
import { globalConfig } from "../core/config";
|
||||||
import { ExplainedResult } from "../core/explained_result";
|
import { ExplainedResult } from "../core/explained_result";
|
||||||
import { createLogger } from "../core/logging";
|
import { createLogger } from "../core/logging";
|
||||||
import { ReadWriteProxy } from "../core/read_write_proxy";
|
import { ReadWriteProxy } from "../core/read_write_proxy";
|
||||||
import { globalConfig } from "../core/config";
|
|
||||||
import { Savegame } from "./savegame";
|
import { Savegame } from "./savegame";
|
||||||
const logger = createLogger("savegame_manager");
|
const logger = createLogger("savegame_manager");
|
||||||
|
|
||||||
import Rusha from "rusha";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {import("./savegame_typedefs").SavegamesData} SavegamesData
|
* @typedef {import("./savegame_typedefs").SavegamesData} SavegamesData
|
||||||
* @typedef {import("./savegame_typedefs").SavegameMetadata} SavegameMetadata
|
* @typedef {import("./savegame_typedefs").SavegameMetadata} SavegameMetadata
|
||||||
@ -217,9 +215,7 @@ export class SavegameManager extends ReadWriteProxy {
|
|||||||
* Helper method to generate a new internal savegame id
|
* Helper method to generate a new internal savegame id
|
||||||
*/
|
*/
|
||||||
generateInternalId() {
|
generateInternalId() {
|
||||||
return Rusha.createHash()
|
return self.crypto.randomUUID();
|
||||||
.update(Date.now() + "/" + Math.random())
|
|
||||||
.digest("hex");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// End
|
// End
|
||||||
|
|||||||
@ -8580,11 +8580,6 @@ run-parallel@^1.1.9:
|
|||||||
dependencies:
|
dependencies:
|
||||||
queue-microtask "^1.2.2"
|
queue-microtask "^1.2.2"
|
||||||
|
|
||||||
rusha@^0.8.13:
|
|
||||||
version "0.8.14"
|
|
||||||
resolved "https://registry.yarnpkg.com/rusha/-/rusha-0.8.14.tgz#a977d0de9428406138b7bb90d3de5dcd024e2f68"
|
|
||||||
integrity sha512-cLgakCUf6PedEu15t8kbsjnwIFFR2D4RfL+W3iWFJ4iac7z4B0ZI8fxy4R3J956kAI68HclCFGL8MPoUVC3qVA==
|
|
||||||
|
|
||||||
rx-lite@^3.1.2:
|
rx-lite@^3.1.2:
|
||||||
version "3.1.2"
|
version "3.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102"
|
resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user