mirror of
https://github.com/tobspr/shapez.io.git
synced 2024-10-27 20:34:29 +00:00
Fix crc generation
This commit is contained in:
parent
2203d5fc6a
commit
c1b1564d76
@ -2,7 +2,7 @@
|
||||
import { Application } from "../application";
|
||||
/* typehints:end */
|
||||
|
||||
import { sha1, CRC_PREFIX } from "./sensitive_utils.encrypt";
|
||||
import { sha1, CRC_PREFIX, computeCrc } from "./sensitive_utils.encrypt";
|
||||
import { createLogger } from "./logging";
|
||||
import { FILE_NOT_FOUND } from "../platform/storage";
|
||||
import { accessNestedPropertyReverse } from "./utils";
|
||||
@ -11,7 +11,6 @@ import { ExplainedResult } from "./explained_result";
|
||||
import { decompressX64, compressX64 } from "./lzstring";
|
||||
import { asyncCompressor, compressionPrefix } from "./async_compression";
|
||||
import { compressObject, decompressObject } from "../savegame/savegame_compressor";
|
||||
import crc32 from "crc/crc32";
|
||||
|
||||
const logger = createLogger("read_write_proxy");
|
||||
|
||||
@ -85,7 +84,7 @@ export class ReadWriteProxy {
|
||||
*/
|
||||
static serializeObject(obj) {
|
||||
const jsonString = JSON.stringify(compressObject(obj));
|
||||
const checksum = CRC_PREFIX + crc32(jsonString + salt).toString(16);
|
||||
const checksum = computeCrc(jsonString + salt);
|
||||
return compressionPrefix + compressX64(checksum + jsonString);
|
||||
}
|
||||
|
||||
@ -109,7 +108,7 @@ export class ReadWriteProxy {
|
||||
const jsonString = decompressed.substr(40);
|
||||
|
||||
const desiredChecksum = checksum.startsWith(CRC_PREFIX)
|
||||
? CRC_PREFIX + crc32(jsonString + salt).toString(16)
|
||||
? computeCrc(jsonString + salt)
|
||||
: sha1(jsonString + salt);
|
||||
|
||||
if (desiredChecksum !== checksum) {
|
||||
@ -191,12 +190,14 @@ export class ReadWriteProxy {
|
||||
const jsonString = decompressed.substr(40);
|
||||
|
||||
const desiredChecksum = checksum.startsWith(CRC_PREFIX)
|
||||
? CRC_PREFIX + crc32(jsonString + salt).toString(16)
|
||||
? computeCrc(jsonString + salt)
|
||||
: sha1(jsonString + salt);
|
||||
|
||||
if (desiredChecksum !== checksum) {
|
||||
// Checksum mismatch
|
||||
return Promise.reject("bad-content / checksum-mismatch");
|
||||
return Promise.reject(
|
||||
"bad-content / checksum-mismatch: " + desiredChecksum + " vs " + checksum
|
||||
);
|
||||
}
|
||||
return jsonString;
|
||||
} else {
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { createHash } from "rusha";
|
||||
|
||||
import crc32 from "crc/crc32";
|
||||
import { decompressX64 } from "./lzstring";
|
||||
|
||||
export function sha1(str) {
|
||||
@ -13,3 +13,11 @@ export function getNameOfProvider() {
|
||||
|
||||
// Distinguish legacy crc prefixes
|
||||
export const CRC_PREFIX = "crc32".padEnd(32, "-");
|
||||
|
||||
/**
|
||||
* Computes the crc for a given string
|
||||
* @param {string} str
|
||||
*/
|
||||
export function computeCrc(str) {
|
||||
return CRC_PREFIX + crc32(str).toString(16).padStart(8, "0");
|
||||
}
|
||||
|
@ -1,8 +1,7 @@
|
||||
import { compressX64 } from "../core/lzstring";
|
||||
import { globalConfig } from "../core/config";
|
||||
import { compressX64 } from "../core/lzstring";
|
||||
import { computeCrc } from "../core/sensitive_utils.encrypt";
|
||||
import { compressObject } from "../savegame/savegame_compressor";
|
||||
import { CRC_PREFIX } from "../core/sensitive_utils.encrypt";
|
||||
import crc32 from "crc/crc32";
|
||||
|
||||
function accessNestedPropertyReverse(obj, keys) {
|
||||
let result = obj;
|
||||
@ -31,7 +30,7 @@ function performJob(job, data) {
|
||||
const optimized = compressObject(data.obj);
|
||||
const stringified = JSON.stringify(optimized);
|
||||
|
||||
const checksum = CRC_PREFIX + crc32(stringified + salt).toString(16);
|
||||
const checksum = computeCrc(stringified + salt);
|
||||
return data.compressionPrefix + compressX64(checksum + stringified);
|
||||
}
|
||||
default:
|
||||
|
Loading…
Reference in New Issue
Block a user