2.4 KiB
2.4 KiB
RichGraph Attestation Service (stella.ops/richgraph@v1 predicate)
Module
Attestor
Status
IMPLEMENTED
Description
Generates DSSE-signed attestations capturing the full evidence graph (nodes, edges, paths) for a scan result. Uses the stella.ops/richgraph@v1 in-toto predicate type to attest the complete dependency and evidence graph topology.
Implementation Details
- Proof Graph Service:
src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Graph/InMemoryProofGraphService.cs(with.Mutation,.Queries,.Subgraph) -- in-memory graph service providing the richgraph data (nodes, edges, paths). - Graph Node:
Graph/ProofGraphNode.cs-- typed graph node with content-addressed ID and metadata. - Graph Edge:
Graph/ProofGraphEdge.cs-- directed edge with type metadata. - Node Types:
Graph/ProofGraphNodeType.cs-- node type enum (Evidence, Verdict, Policy, Artifact). - Edge Types:
Graph/ProofGraphEdgeType.cs-- edge type enum for relationship semantics. - Graph Subgraph:
Graph/ProofGraphSubgraph.cs-- extracted subgraph for attestation scope. - Graph Path:
Graph/ProofGraphPath.cs-- traversal path within the richgraph. - Statement Builder:
Builders/StatementBuilder.cs(with.Extended) -- builds in-toto statements with the richgraph predicate type. - DSSE Signing:
Signing/ProofChainSigner.cs(with.Verification) -- signs richgraph attestations. - Graph Root Attestor:
__Libraries/StellaOps.Attestor.GraphRoot/GraphRootAttestor.cs-- attests Merkle roots over the graph for integrity. - Tests:
__Tests/StellaOps.Attestor.ProofChain.Tests/ProofGraphTests.cs
E2E Test Plan
- Build a richgraph via
InMemoryProofGraphServicewith Evidence, Verdict, and Artifact nodes connected by typed edges - Create an in-toto statement with predicate type
stella.ops/richgraph@v1viaStatementBuilder.Extendedwrapping the graph data - Sign the richgraph attestation via
ProofChainSignerand verify the DSSE envelope structure - Extract a subgraph via
ProofGraphSubgraphfor a specific scan result and verify the attestation scopes to that subgraph - Verify all graph paths from entrypoint to vulnerable sink are captured in the richgraph predicate
- Attest the Merkle root of the richgraph via
GraphRootAttestorand verify integrity - Verify the richgraph DSSE signature via
ProofChainSigner.Verification