aere-proof-of-software/tools/proof-of-software/test/sbom-control-negativ.mjs

17 lines
2.0 KiB
JavaScript

// Controlul negativ al SBOM-ului re-derivat din lockfile-ul comis (sbom.test.mjs), prin mecanismul comun din _control.mjs.
// node aerenew/tools/proof-of-software/test/sbom-control-negativ.mjs
import { controleaza } from './_control.mjs';
process.exitCode = await controleaza('sbom.test.mjs', [
['comparatia SBOM-ului cu lockfile-ul scoasa', 'const aceleasi = JSON.stringify(a) === JSON.stringify(b);', 'const aceleasi = true;', 'CONTROL: o componenta scoasa'],
// ancora pe partea STABILA a randului (1.4.0 i-a adaugat `props` la coada si ancora veche a murit: STRICAT, prins de chiar acest control)
['hash-urile de integritate scoase din forma semantica', "hashes: (c.hashes || []).map((h) => `${h.alg}:${String(h.content).toLowerCase()}`).sort(),", 'hashes: [],', 'CONTROL: un hash de integritate'],
// B-21 (2026-09-30): felul SBOM-ului il alegea SBOM-ul insusi; fara paznic, un fisier numit care nu e in arbore scapa nejudecat
['un SBOM care numeste un fisier absent din arbore primit (B-21)', 'if (din && !inArbore(din)) {', 'if (false) {', 'CONTROL B-21: un SBOM npm editat care spune ca e derivat din go.sum'],
// prima forma a reparatiei B-21 (revizuita in aceeasi ora): un nume necunoscut, dar prezent in arbore, iesea nejudecat
['un nume de fisier necunoscut scoate arborele npm de sub judecata (B-21)', " if (fel === 'npm' && !prezente.includes('package-lock.json') && prezente.length) {",
" if (din && !['go.sum', 'packages.lock.json', 'gradle/verification-metadata.xml'].includes(din)) { checks.push({ name: 'rebuild: SBOM', pass: null, detail: `derived from ${din}, which this verifier does not re-derive` }); return; }\n if (fel === 'npm' && !prezente.includes('package-lock.json') && prezente.length) {",
'CONTROL B-21: un SBOM npm editat care numeste un fisier AL arborelui'],
['un arbore fara lockfile trecut drept re-derivat', "if (!fs.existsSync(path.join(src, 'package-lock.json'))) return { lipsa:", "if (false) return { lipsa:", 'fara package-lock'],
]);