1
0
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:
Даниїл Григор'єв 2024-07-26 18:01:38 +03:00
parent bbde68df23
commit 67f7babd09
No known key found for this signature in database
GPG Key ID: B890DF16341D8C1D
5 changed files with 6 additions and 31 deletions

View File

@ -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": {

View File

@ -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

View File

@ -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, "-");

View File

@ -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

View File

@ -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"