Skip to content

Implement Intel UPID Support in rpc-go #764

@rsdmike

Description

@rsdmike

🔹 Overview

Intel Unique Platform Identifier (UPID) provides a way to uniquely identify a platform for attestation and verification. We want to integrate UPID support into rpc-go, ensuring that this information is accessible through the amtinfo command.

This will involve:

  • Communicating with the Intel UPID driver via HECI (Host Embedded Controller Interface).
  • Implementing UPID retrieval logic for both Windows and Linux.
  • Exposing the retrieved UPID in amtinfo.

🎯 Task Scope

1️⃣ Windows & Linux HECI Implementation

  • Identify and add the correct GUID for the UPID driver in:
    • pkg/heci/windows.go
    • pkg/heci/linux.go
  • Implement UPID retrieval by sending the correct MEI commands to the driver.

2️⃣ New UPID Package

  • Create a new package (pkg/upid/) to encapsulate UPID logic.
  • Implement a UPID retrieval function that abstracts OS-specific logic.
  • Ensure it returns the UPID in a structured format.

3️⃣ Integrate UPID into amtinfo Command

  • Modify amtinfo to include the UPID in its output.
  • Ensure JSON and human-readable formats both display UPID correctly.

4️⃣ Testing & Validation

  • Test on real Intel platforms to confirm UPID retrieval works.
  • Implement unit tests for UPID logic where possible.
  • Add error handling for cases where UPID is not available.

📂 Relevant Files

  • pkg/heci/windows.go (HECI driver interaction for Windows)
  • pkg/heci/linux.go (HECI driver interaction for Linux)
  • pkg/upid/ (new package for UPID retrieval)
  • cmd/amtinfo.go (amtinfo command implementation)
  • go.mod (if additional dependencies are required)

💻 Technical Details

  • Follow the Intel UPID Attestation SDK guide:
    Intel UPID SDK
  • Ensure communication via HECI/MEI, using the correct GUIDs for:
    • Windows: Likely uses DeviceIoControl with a relevant GUID.
    • Linux: Likely interacts with /dev/mei or similar.
  • Ensure error handling for platforms that do not support UPID.

Acceptance Criteria

  • The correct GUIDs are added for Windows/Linux.
  • UPID retrieval works on both platforms.
  • A new pkg/upid/ package is implemented for UPID management.
  • amtinfo displays the UPID in both human-readable and JSON outputs.
  • The feature is tested on real Intel hardware.
  • A Pull Request (PR) is submitted summarizing the work.

📎 Additional Notes

  • If a platform does not support UPID, ensure the code fails gracefully.
  • Follow existing patterns in pkg/heci/ to keep the implementation consistent.
  • If Intel updates their UPID SDK, check for latest documentation.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    Status

    Q1 2026

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions