Skip to content

SGX Registration Server Request

BIOS exposes this variable when data needs to be sent to the registration authority service. Its contents depend on the registration boot flow. For Initial Platform Establishment and TCB Recovery boot flows, it contains the platform manifests. For the Add Package flow, it contains add package structure. BIOS only generates this variable when there is data to send. The platform manifest and add package structures contain privacy sensitive information and should only be exposed to software until registration completes. Software indicates that registration is complete by setting the SgxRegistrationStatus.SgxRegistrationComplete bit to 1. BIOS clears the SgxRegistrationStatus.SgxRegistrationComplete bit to 0 when there is data to process, and software expects this variable to be available. Software processes its contents and sets the SgxRegistrationStatus.SgxRegistrationComplete bit to 1 to indicate whether the registration flow completes successfully. Software also sets the SgxRegistrationStatus.SgxRegistrationComplete to 1 on terminal errors received from the server as an indication that no retries resolve the error. If the registration does not complete and the software does not set the SgxRegistrationStatus.SgxRegistrationComplete bit to 1, BIOS provides the same data in this variable on the next boot for software to retry processing the data. Otherwise, BIOS does not present this same data on a subsequent boot.

Any errors encountered by software are reported with an error code in SgxRegistrationStatus.ErrorCode.

Table 1: SgxRegistrationServerRequest
GUID 304e0796-d515-4698-ac6e-e76cb1a71c28
Size N/A
Attributes Read-only
Description This variable is created by BIOS when SgxRegistrationStatus.SgxRegistrationComplete is 0.
Contains several self-signed data structures based on boot scenario.
Fields See table SgxRegistrationServerRequest Fields
Table 2: SgxRegistrationServerRequest Fields
Boot Scenario Contents Size Type Description
Version 2 LE Integer 2 – When content is PLATFORM_MANIFEST
1 or 2 – When content is ADD_REQUEST
Size 2 LE Integer Size in bytes of data below (after trimming)
Initial Platform Establishment/TCB Recovery PLATFORM_MANIFEST Variable (PM Header size will always be untrimmed size) Mix Contains 2 PLATFORM_MANIFESTS.
The first PLATFORM_MANIFEST is from the IPE flow and the second is for TCB Recovery (for the IPE boot flow, the TCB Recovery PLATFORM_MANIFEST will be all zeros and will be trimmed the same as the IPE PLATFORM_MANIFEST).
Data Header:
GUID: 178E874B-49E4-4AA5-99BB-3057170925B4
Version: 1
Add package ADD_REQUEST 211 Mix Contains the ADD_REQUEST structure.
Data Header:
GUID: 696519ca-73c1-4785-a0f6-4d289d37e995
Version: 1

Note

Data structures based on boot scenario.