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";
|
import { Application } from "../application";
|
||||||
/* typehints:end */
|
/* typehints:end */
|
||||||
|
|
||||||
import { sha1, CRC_PREFIX } from "./sensitive_utils.encrypt";
|
import { sha1, CRC_PREFIX, computeCrc } from "./sensitive_utils.encrypt";
|
||||||
import { createLogger } from "./logging";
|
import { createLogger } from "./logging";
|
||||||
import { FILE_NOT_FOUND } from "../platform/storage";
|
import { FILE_NOT_FOUND } from "../platform/storage";
|
||||||
import { accessNestedPropertyReverse } from "./utils";
|
import { accessNestedPropertyReverse } from "./utils";
|
||||||
@ -11,7 +11,6 @@ import { ExplainedResult } from "./explained_result";
|
|||||||
import { decompressX64, compressX64 } from "./lzstring";
|
import { decompressX64, compressX64 } from "./lzstring";
|
||||||
import { asyncCompressor, compressionPrefix } from "./async_compression";
|
import { asyncCompressor, compressionPrefix } from "./async_compression";
|
||||||
import { compressObject, decompressObject } from "../savegame/savegame_compressor";
|
import { compressObject, decompressObject } from "../savegame/savegame_compressor";
|
||||||
import crc32 from "crc/crc32";
|
|
||||||
|
|
||||||
const logger = createLogger("read_write_proxy");
|
const logger = createLogger("read_write_proxy");
|
||||||
|
|
||||||
@ -85,7 +84,7 @@ export class ReadWriteProxy {
|
|||||||
*/
|
*/
|
||||||
static serializeObject(obj) {
|
static serializeObject(obj) {
|
||||||
const jsonString = JSON.stringify(compressObject(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);
|
return compressionPrefix + compressX64(checksum + jsonString);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -109,7 +108,7 @@ export class ReadWriteProxy {
|
|||||||
const jsonString = decompressed.substr(40);
|
const jsonString = decompressed.substr(40);
|
||||||
|
|
||||||
const desiredChecksum = checksum.startsWith(CRC_PREFIX)
|
const desiredChecksum = checksum.startsWith(CRC_PREFIX)
|
||||||
? CRC_PREFIX + crc32(jsonString + salt).toString(16)
|
? computeCrc(jsonString + salt)
|
||||||
: sha1(jsonString + salt);
|
: sha1(jsonString + salt);
|
||||||
|
|
||||||
if (desiredChecksum !== checksum) {
|
if (desiredChecksum !== checksum) {
|
||||||
@ -191,12 +190,14 @@ export class ReadWriteProxy {
|
|||||||
const jsonString = decompressed.substr(40);
|
const jsonString = decompressed.substr(40);
|
||||||
|
|
||||||
const desiredChecksum = checksum.startsWith(CRC_PREFIX)
|
const desiredChecksum = checksum.startsWith(CRC_PREFIX)
|
||||||
? CRC_PREFIX + crc32(jsonString + salt).toString(16)
|
? computeCrc(jsonString + salt)
|
||||||
: sha1(jsonString + salt);
|
: sha1(jsonString + salt);
|
||||||
|
|
||||||
if (desiredChecksum !== checksum) {
|
if (desiredChecksum !== checksum) {
|
||||||
// Checksum mismatch
|
// Checksum mismatch
|
||||||
return Promise.reject("bad-content / checksum-mismatch");
|
return Promise.reject(
|
||||||
|
"bad-content / checksum-mismatch: " + desiredChecksum + " vs " + checksum
|
||||||
|
);
|
||||||
}
|
}
|
||||||
return jsonString;
|
return jsonString;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { createHash } from "rusha";
|
import { createHash } from "rusha";
|
||||||
|
import crc32 from "crc/crc32";
|
||||||
import { decompressX64 } from "./lzstring";
|
import { decompressX64 } from "./lzstring";
|
||||||
|
|
||||||
export function sha1(str) {
|
export function sha1(str) {
|
||||||
@ -13,3 +13,11 @@ export function getNameOfProvider() {
|
|||||||
|
|
||||||
// Distinguish legacy crc prefixes
|
// Distinguish legacy crc prefixes
|
||||||
export const CRC_PREFIX = "crc32".padEnd(32, "-");
|
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 { globalConfig } from "../core/config";
|
||||||
|
import { compressX64 } from "../core/lzstring";
|
||||||
|
import { computeCrc } from "../core/sensitive_utils.encrypt";
|
||||||
import { compressObject } from "../savegame/savegame_compressor";
|
import { compressObject } from "../savegame/savegame_compressor";
|
||||||
import { CRC_PREFIX } from "../core/sensitive_utils.encrypt";
|
|
||||||
import crc32 from "crc/crc32";
|
|
||||||
|
|
||||||
function accessNestedPropertyReverse(obj, keys) {
|
function accessNestedPropertyReverse(obj, keys) {
|
||||||
let result = obj;
|
let result = obj;
|
||||||
@ -31,7 +30,7 @@ function performJob(job, data) {
|
|||||||
const optimized = compressObject(data.obj);
|
const optimized = compressObject(data.obj);
|
||||||
const stringified = JSON.stringify(optimized);
|
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);
|
return data.compressionPrefix + compressX64(checksum + stringified);
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
Loading…
Reference in New Issue
Block a user