guildhouse-proto/attestation/v2/platform.proto
Tyler King 98aa2b0ec7 feat(attestation): add SAT-SPEC-0002 protobuf definitions
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>
2026-02-28 09:12:59 -05:00

31 lines
1.1 KiB
Protocol Buffer

syntax = "proto3";
package substrate.attestation.v2;
// ─── Layer 1: Platform Claim ────────────────────────────────────────
//
// Hardware-rooted identity and integrity measurements. Anchored to TPM
// Endorsement Key (EK) and backed by TPM Quote over PCR digest.
message PlatformClaim {
uint32 sat_version = 1; // MUST be 2
uint32 layer = 2; // MUST be 1
string machine_id = 3; // H(TPM EK public key)
bytes tpm_ek_public = 4;
bytes tpm_ak_cert = 5;
bytes pcr_digest = 6;
string pcr_bank = 7; // "sha256" or "sha384"
repeated uint32 pcr_selection = 8;
optional bytes ima_log_hash = 9;
bool uefi_secureboot = 10;
uint64 boot_timestamp = 11; // TPM monotonic counter
bytes nonce = 12;
bytes claim_hash = 13; // Computed, not serialized for hashing
TpmQuoteBinding tpm_binding = 14;
}
message TpmQuoteBinding {
bytes quoted = 1;
bytes signature = 2;
string signature_algorithm = 3; // "ECDSA-P256"
}