1
0
mirror of https://github.com/tobspr/shapez.io.git synced 2025-12-11 09:11:50 +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",
"howler": "^2.1.2",
"lz-string": "^1.4.4",
"rusha": "^0.8.13",
"semver": "^7.3.5"
},
"devDependencies": {

View File

@ -9,7 +9,7 @@ import { IS_DEBUG, globalConfig } from "./config";
import { ExplainedResult } from "./explained_result";
import { createLogger } from "./logging";
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";
@ -109,9 +109,7 @@ export class ReadWriteProxy {
const checksum = decompressed.substring(0, 40);
const jsonString = decompressed.substr(40);
const desiredChecksum = checksum.startsWith(CRC_PREFIX)
? computeCrc(jsonString + salt)
: sha1(jsonString + salt);
const desiredChecksum = computeCrc(jsonString + salt);
if (desiredChecksum !== checksum) {
// Checksum mismatch
@ -198,11 +196,9 @@ export class ReadWriteProxy {
// Compare stored checksum with actual checksum
const checksum = decompressed.substring(0, 40);
const jsonString = decompressed.substr(40);
const jsonString = decompressed.slice(40);
const desiredChecksum = checksum.startsWith(CRC_PREFIX)
? computeCrc(jsonString + salt)
: sha1(jsonString + salt);
const desiredChecksum = computeCrc(jsonString + salt);
if (desiredChecksum !== checksum) {
// Checksum mismatch

View File

@ -1,15 +1,4 @@
import { createHash } from "rusha";
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
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 { createLogger } from "../core/logging";
import { ReadWriteProxy } from "../core/read_write_proxy";
import { globalConfig } from "../core/config";
import { Savegame } from "./savegame";
const logger = createLogger("savegame_manager");
import Rusha from "rusha";
/**
* @typedef {import("./savegame_typedefs").SavegamesData} SavegamesData
* @typedef {import("./savegame_typedefs").SavegameMetadata} SavegameMetadata
@ -217,9 +215,7 @@ export class SavegameManager extends ReadWriteProxy {
* Helper method to generate a new internal savegame id
*/
generateInternalId() {
return Rusha.createHash()
.update(Date.now() + "/" + Math.random())
.digest("hex");
return self.crypto.randomUUID();
}
// End

View File

@ -8580,11 +8580,6 @@ run-parallel@^1.1.9:
dependencies:
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:
version "3.1.2"
resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102"