18 lines
2.1 KiB
JavaScript
18 lines
2.1 KiB
JavaScript
// Controlul negativ al SBOM-ului Go (sbom-go.test.mjs, Proof of Software 1.4.0), prin mecanismul comun din _control.mjs: fiecare
|
|
// paznic scos intr-o copie a lui pos.mjs trebuie sa inroseasca EXACT proba lui, cu suita chiar rulata.
|
|
// node aerenew/tools/proof-of-software/test/sbom-go-control-negativ.mjs
|
|
import { controleaza } from './_control.mjs';
|
|
|
|
process.exitCode = await controleaza('sbom-go.test.mjs', [
|
|
['hash-ul h1 scos din forma semantica', 'props: aere(c.properties) });', 'props: [] });', 'CONTROL: un hash h1 schimbat'],
|
|
// 1.5.0 (B-21): felul se ia din tabla FEL (numele fisierului numit, verificat in arbore); fara intrarea go.sum, SBOM-ul Go cade pe npm
|
|
['SBOM-ul Go judecat ca unul npm', "const FEL = { 'go.sum': 'go', ", 'const FEL = { ', 'verify --rebuild-from: arborele e cel atestat'],
|
|
['o atestare fara npm pack declarata falsa la reconstructie (forma 1.3.0)', "checks.push({ name: 'rebuild: artifacts', pass: null, detail:", "checks.push({ name: 'rebuild: artifacts', pass: false, detail:", 'verify --rebuild-from: arborele e cel atestat'],
|
|
['modulele fixate numai prin go.mod listate drept componente', '.filter((e) => e.h1).map((e) => {', '.filter((e) => true).map((e) => {', 'gomock: numai modulele cu continut'],
|
|
['un arbore fara go.sum trecut drept re-derivat', "const goSum = blob('go.sum'); if (goSum == null) return { lipsa:", "const goSum = blob('go.sum') ?? ''; if (false) return { lipsa:", 'un arbore fara go.sum'],
|
|
// B-21 (2026-09-30): un SBOM care nu isi numeste fisierul, intr-un arbore fara package-lock.json, trebuie sa spuna din ce se putea judeca
|
|
['motivul nejudecarii nu mai numeste fisierele arborelui (B-21)', "if (fel === 'npm' && !prezente.includes('package-lock.json') && prezente.length) {", 'if (false) {', 'B-21: un SBOM Go editat'],
|
|
['numarul de serie aleator (SBOM-ul nu mai e determinist)', 'const b = crypto.createHash(\'sha256\').update(JSON.stringify({ metadata, components })).digest();', 'const b = crypto.randomBytes(32);', 'determinist'],
|
|
['radacina scoasa din comparatie', 'return { radacina: radacina && radacina.purl, meta:', 'return { radacina: null, meta:', 'CONTROL: SBOM-ul spune alt modul radacina'],
|
|
]);
|