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>
31 lines
1.1 KiB
Protocol Buffer
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"
|
|
}
|