Add protobuf message definitions for the four-layer attestation architecture defined in SAT-SPEC-0002. Package: substrate.attestation.v2 Files: - common.proto: QmReceipt (hash-chained Ed25519-signed receipts) - platform.proto: PlatformClaim, TpmQuoteBinding (L1 hardware identity) - software.proto: SoftwareClaim, BuildProvenance (L2 image provenance) - governance.proto: GovernanceClaim, AccordReference, DelegationReference (L3) - session.proto: SessionClaim, ActorContext, PostureEvidence, PostureLevel (L4) - sat.proto: SatBundle (composite, optional claim fields for has_*() codegen) Also adds buf.yaml for lint/breaking-change checks. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
26 lines
1.1 KiB
Protocol Buffer
26 lines
1.1 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package substrate.attestation.v2;
|
|
|
|
import "attestation/v2/platform.proto";
|
|
import "attestation/v2/software.proto";
|
|
import "attestation/v2/governance.proto";
|
|
import "attestation/v2/session.proto";
|
|
|
|
// ─── Top-level SAT Bundle ───────────────────────────────────────────
|
|
//
|
|
// Composite attestation bundle containing all four layers.
|
|
// Layers are optional — a minimal bundle may contain only L1 + L4.
|
|
// The explicit `optional` keyword generates has_*() accessors in
|
|
// codegen (Rust/prost, Python/protobuf) to distinguish absent layers
|
|
// from present-but-empty layers.
|
|
|
|
message SatBundle {
|
|
uint32 sat_version = 1; // MUST be 2
|
|
optional PlatformClaim platform_claim = 2;
|
|
optional SoftwareClaim software_claim = 3;
|
|
optional GovernanceClaim governance_claim = 4;
|
|
optional SessionClaim session_claim = 5;
|
|
bytes sat_hash = 6; // H(L1 || L2 || L3 || L4)
|
|
string qm_receipt_id = 7; // Top-level QM receipt
|
|
}
|