forked from phenom/healer-man
Update Healer Man server
This commit is contained in:
1 parent
6114a2295f
commit
69809f7228
593 files changed
+903643
-40774
No files matched your search
@@ -0,0 +1,41 @@
|
||||
import assert from "node:assert/strict";
|
||||
import { createHash } from "node:crypto";
|
||||
import sharp from "sharp";
|
||||
|
||||
const digest = bytes => createHash("sha256").update(bytes).digest("hex");
|
||||
const validHash = value => typeof value === "string" && /^[a-f\d]{64}$/u.test(value);
|
||||
|
||||
/** Verifies an exact native atlas island, rather than exempting a resized image. */
|
||||
export async function verifySourcePixelCrop(metadata, sourcePng, canonicalCropPng, shipped) {
|
||||
assert.equal(metadata?.version, 1, "Unsupported source crop proof.");
|
||||
assert.ok(typeof metadata.policyId === "string" && metadata.policyId.length > 0);
|
||||
assert.ok(typeof metadata.sourceImageName === "string" && !/[\\/]/u.test(metadata.sourceImageName));
|
||||
for (const key of ["sourcePreparedPngSha256", "croppedPngSha256", "croppedRgbaSha256"]) {
|
||||
assert.ok(validHash(metadata[key]), `Invalid ${key}.`);
|
||||
}
|
||||
assert.equal(digest(sourcePng), metadata.sourcePreparedPngSha256, "Native atlas PNG changed.");
|
||||
assert.equal(digest(canonicalCropPng), metadata.croppedPngSha256, "Canonical crop PNG changed.");
|
||||
const source = await sharp(sourcePng).metadata();
|
||||
assert.equal(source.width, metadata.sourceWidth);
|
||||
assert.equal(source.height, metadata.sourceHeight);
|
||||
const rect = metadata.rect;
|
||||
assert.ok(rect && [rect.left, rect.top, rect.width, rect.height].every(Number.isInteger));
|
||||
assert.ok(rect.left >= 0 && rect.top >= 0 && rect.width > 0 && rect.height > 0
|
||||
&& rect.left + rect.width <= source.width && rect.top + rect.height <= source.height,
|
||||
"Source crop exceeds its verified native atlas.");
|
||||
const crop = await sharp(canonicalCropPng).metadata();
|
||||
assert.equal(crop.width, rect.width, "Canonical crop was resized.");
|
||||
assert.equal(crop.height, rect.height, "Canonical crop was resized.");
|
||||
assert.equal(shipped.width, rect.width, "Shipped crop was resized.");
|
||||
assert.equal(shipped.height, rect.height, "Shipped crop was resized.");
|
||||
if (shipped.levelCount !== undefined) {
|
||||
assert.equal(shipped.levelCount, Math.floor(Math.log2(Math.max(rect.width, rect.height))) + 1,
|
||||
"Shipped crop lost its full native island mip chain.");
|
||||
}
|
||||
const sourcePixels = await sharp(sourcePng).extract(rect).ensureAlpha().raw().toBuffer();
|
||||
const cropPixels = await sharp(canonicalCropPng).ensureAlpha().raw().toBuffer();
|
||||
assert.equal(digest(sourcePixels), metadata.croppedRgbaSha256, "Native crop pixel proof changed.");
|
||||
assert.deepEqual(cropPixels, sourcePixels, "Derived crop changed native RGBA pixels.");
|
||||
return { ...metadata, status: "verified-exact-source-pixel-crop", canonicalPixelsByteIdentical: true,
|
||||
shippedDimensionsPreserved: true, compressionPixelsRequireSeparateDecode: true };
|
||||
}
|
||||
Reference in new issue
Block a user