2.5 KiB
2.5 KiB
SBOM Linkage Statement (in-toto predicate)
Module
Attestor
Status
VERIFIED
Description
SBOM linkage statement model with SBOM descriptor (format, spec version, digest), generator info, incomplete subjects tracking, and tags for tenant/project/pipeline.
Implementation Details
- SBOM Linkage Statement:
src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Statements/SbomLinkageStatement.cs-- in-toto statement wrapping the SBOM linkage predicate. - SBOM Linkage Payload:
Statements/SbomLinkagePayload.cs-- payload containing SBOM descriptor, generator info, incomplete subjects, and tags. - SBOM Descriptor:
Statements/SbomDescriptor.cs-- descriptor with format (CycloneDX 1.6, SPDX 3.0.1), spec version, and content digest. - Generator Descriptor:
Statements/GeneratorDescriptor.cs-- metadata about the SBOM generation tool (name, version, timestamp). - Incomplete Subject:
Statements/IncompleteSubject.cs-- tracks subjects that could not be fully resolved during SBOM generation (missing digests, unresolved PURLs). - Statement Builder:
Builders/StatementBuilder.cs(with.Extended) -- builds SBOM linkage statements with proper subject bindings. - Proof Subject:
Builders/ProofSubject.cs-- subject with name and digest map for the SBOM linkage. - DSSE Signing:
Signing/ProofChainSigner.cs-- signs SBOM linkage statements. - Tests:
__Tests/StellaOps.Attestor.ProofChain.Tests/SbomLinkageTests.cs
E2E Test Plan
- Create an
SbomLinkageStatementwith a CycloneDX SBOM descriptor and verify the statement structure - Verify
SbomDescriptorcaptures format="CycloneDX", specVersion="1.6", and the SHA-256 digest of the SBOM document - Verify
GeneratorDescriptorcaptures the tool name, version, and generation timestamp - Add
IncompleteSubjectentries for unresolved components and verify they are tracked in the payload - Build the statement via
StatementBuilderwith subject bindings and verify the in-toto subject list - Sign the SBOM linkage statement into a DSSE envelope and verify the signature
- Add tags (tenant, project, pipeline) to the payload and verify they are present in the signed statement
- Create an SPDX linkage statement and verify the format field is "SPDX" with specVersion="3.0.1"
Verification
| Check | Result |
|---|---|
| Tier 0 - Source Verification | PASS |
| Tier 1 - Build + Code Review | PASS |
| Tier 2 - Behavioral Verification | PASS |
| Verified Date | 2026-02-13 |
| Run ID | run-001 |