2.3 KiB
2.3 KiB
SBOM Interop Round-Trip Testing
Module
Attestor
Status
IMPLEMENTED
Description
SBOM round-trip testing with canonical verification ensuring CycloneDX and SPDX outputs can be parsed, re-serialized, and verified for format compliance.
Implementation Details
- CycloneDX Parser:
src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/Parsers/CycloneDxPredicateParser.cs(with.ExtractMetadata,.ExtractSbom,.SerialNumber,.Validation) -- parses CycloneDX BOMs. - CycloneDX Writer:
Writers/CycloneDxWriter.cs(with 50+ partials) -- writes CycloneDX BOMs from internal model. - SPDX Parser:
Parsers/SpdxPredicateParser.cs(with.ExtractMetadata,.ExtractSbom,.Validation) -- parses SPDX documents. - SPDX Writer:
Writers/SpdxWriter.cs(with 40+ partials) -- writes SPDX 3.0.1 documents from internal model. - SBOM Canonicalizer:
Canonicalization/SbomCanonicalizer.Elements.cs-- deterministic element ordering for canonical comparison. - SBOM Models:
Models/SbomDocument.cs(with.Collections) -- internal SBOM document model bridging parse/write. - CycloneDX Validation:
Writers/CycloneDxWriter.Validation.cs-- validates written CycloneDX against schema. - SPDX Validation:
Parsers/SpdxPredicateParser.Validation.cs-- validates SPDX compliance. - Tests:
__Tests/StellaOps.Attestor.StandardPredicates.Tests/RoundTripTests.cs
E2E Test Plan
- Round-trip CycloneDX: parse a CycloneDX 1.6 BOM, write it back via
CycloneDxWriter, re-parse, and verify semantic equivalence - Round-trip SPDX: parse an SPDX 3.0.1 document, write it back via
SpdxWriter, re-parse, and verify semantic equivalence - Canonicalize both round-trip outputs via
SbomCanonicalizerand verify canonical forms match - Round-trip complex CycloneDX features: crypto, formulation, declarations, attestation maps
- Round-trip complex SPDX features: AI packages, dataset packages, build profiles, assessments
- Validate the written CycloneDX output via
CycloneDxWriter.Validationand verify schema compliance - Validate the written SPDX output via
SpdxPredicateParser.Validationand verify format compliance - Cross-format interop: parse CycloneDX, convert to internal model, write as SPDX, and verify key data (components, licenses) is preserved