Multi-Package Registration Platform Software Tools¶
The Intel® SGX Data Center Attestation Primitives (DCAP) release has added new tools and extended existing tools to support multi-package platform registration. These tools use the Multi-Package Registration Libraries described in a later section. These tools were created to quickly support multi-package platform registration in their datacenter or cloud service provider environments. Customers can modify or design their own tools using the multi-package libraries. These DCAP tools and libraries are released in binary format for Linux* https://download.01.org/intel-sgx/latest/dcap-latest/linux/distro/<distro> and for Windows* https://download.01.org/intel-sgx/latest/dcap-latest/windows/tools/. For the open source for these tools, see https://github.com/intel/SGXDataCenterAttestationPrimitives/tree/master/tools/SGXPlatformRegistration .
Multi-Package Registration Agent (MPA)¶
The Multi-Package Registration Agent (MPA) is an executable that launches as a daemon/service automatically after boot. Upon OS boot, it examines the state of the BIOS Multi-Package UEFI Variables to determine if there is any registration action to take. This tool requires Internet access. It also requires access to the UEFI SGX variable interface, which is only available to bare-metal platforms or to the Host VM. So, this tool may not be suitable for data centers or Cloud Service Providers (CSP’s) that have a separate provisioning environment and customer workload environment where customer workloads run in guest VMs and platform provisioning happens without an Internet connection. This tool may be most useful for validation purposes or workstations with Internet connection (Single Stage Registration). This tool is available as open source, and you can use it as a reference for communicating to both the SGX MP UEFI variables and the Intel® SGX Registration Service (SGX MP Network).
BIOS resets the SgxRegistrationStatus.Status.SgxRegistrationComplete
to 0
when a registration request is available for processing.
BIOS clears this bit when there is a successful IPE boot flow, TCB Recovery boot flow, and the Add Package boot flow.
When this flag is 0, the BIOS puts data in the SgxRegistrationServerRequest UEFI variable that needs processing.
For the IPE boot flow and the TCB Recovery boot flow, the SgxRegistrationServerRequest UEFI variable contains the platform manifest structure.
For the Add Package boot flow, the SgxRegistrationServerRequest UEFI variable contains the add package structure.
The MPA treats the platform manifest and add package structure as blobs and only parses the header to determine which of the data structures BIOS provided.
The MPA first checks if BIOS has reported any errors by scanning the SgxRegistrationStatus.Errorcode
.
Then it checks the SgxRegistrationStatus.Status.SgxRegistrationComplete
flag to see if it has been reset to 0
.
If both the SgxRegistrationStatus.Errorcode
is success
and the SgxRegistrationStatus.Status.SgxRegistrationComplete
flag is 0
, the MPA reads the SgxRegistrationServerRequest
UEFI variable and parses the data structure header to determine what type of data structure needs processing (currently, only platform manifest and add package structures are supported).
The MPA sends the data structure to the Intel® SGX Registration Service.
When the MPA successfully communicates to the Registration Service or it encounters a non-recoverable error, it sets the SgxRegistrationStatus.Status.SgxRegistrationComplete
to 1
to indicate that BIOS does not need to provide the data structure again on a subsequent boot.
If the MPA receives an error that can be recoverable, it does not set the SgxRegistrationStatus.Status.SgxRegistrationComplete
to 1
to indicate that BIOS should provide the same structure on a subsequent boot so the MPA can retry processing the structure again.
The MPA sends the requests to the URL provided by the SgxRegistrationConfiguration
UEFI variable using the API defined by the Intel® SGX Registration Service.
Once complete, the MPA stops its service/daemon.
Platform Manifest Handling¶
BIOS provides platform manifests on IPE boot flows and TR boot flows. It also provides them in Normal boot flow when the SgxRegistrationComplete flag is 0 (indicating a retry). When receiving a platform manifest, the Registration Service returns a hex-encoded representation of the PPID. The MPA treats some server response codes as terminal when no amount of retries fixes the problem. In this case, the MPA sets the SgxRegistrationComplete flag to 1 so that BIOS does not provide the same platform manifest on a subsequent boot.
The list of response codes from the Intel® SGX Registration Service response codes that terminate the registration process:
201
- Created (The platform instance is created or updated in the Registration Service database)400
- Invalid Platform Manifest (Client should not repeat the request without modifications)- ErrorCode = InvalidRequestSyntax
- ErrorCode = InvalidRegistrationServer
- ErrorCode = InvalidOrRevokedPackage
- ErrorCode = PackageNotFound
- ErrorCode = IncompatiblePackage
- ErrorCode = InvalidPlatformManifest
- ErrorCode = CachedKeyPolicyViolation
The list of response codes from the Intel® SGX Registration Service response codes that do not terminate the registration process:
401
- Failed to authenticate or authorize the request415
- MIME type specified in the request is not supported by the server.500
- Internal server error occurred503
- Server is currently unable to process the request.
There are also internal MPA errors that are considered terminal. See section MPA Error Codes for a list of these errors.
Add Package Handling¶
Handling an Add Package flow is more complicated than platform manifests. The MPA expects a response from the Registration Service. This response contains the platform membership certificate(s) for the new CPU package(s). If the response does not contain the platform membership certificate, the MPA reports a failure. This flow requires internet connection to directly interact with the Registration Service. The Intel® SGX Registration Service requires that the user subscribes for an API key to use the add package API. BIOS provides an add package structure in the Add Package boot flow. It also provides them in a Normal boot flow when the SgxRegistrationComplete flag is 0 indicating a retry. The MPA treats some server response codes as terminal, and retries do not fixe the problem. In this case, the MPA sets the SgxRegistrationComplete flag to 1 so that BIOS does not provide the same add package structure on a subsequent boot.
The list of Intel® SGX Registration Service response codes that terminates the add package process:
200
- OK400
- Invalid Platform Manifest (Client should not repeat the request without modifications)- ErrorCode = InvalidRequestSyntax
- ErrorCode = PlatformNotFound
- ErrorCode = InvalidOrRevokedPackage
- ErrorCode = PackageNotFound
- ErrorCode = InvalidAddRequest
The list of Intel® SGX Registration Service response codes that does not terminate the add package process:
401
- Failed to authenticate or authorize the request415
- MIME type specified in the request is not supported by the server.500
- Internal server error occurred503
- Server is currently unable to process the request.
There are also internal MPA errors that are considered terminal. See section MPA Error Codes for a list of these errors.
Configuration¶
The MPA can be configured with the following settings. Linux configurations are provided in a configuration file. Windows configurations are provided by registry keys.
-
Subscription Key – Only required for Add Package flows. Provided by the Intel® SGX Registration Service upon subscribing.
- Config Location:
- Linux:
/etc/mpa_registration.conf
- Windows:
KEY_LOCAL_MACHINE\SOFTWARE\Intel\SGX_RA\RASubscriptionKey
- Add the following String key name
token
- <64byte-hex-value>
- e.g:
7a963d696ff94b7d82df4cbe924b1574
- Linux:
- Config Location:
-
Proxy Setting – Modify the proxy settings used by the MPA
-
Values:
Proxy Type Linux Value Windows Value Use the configuration in your operating system default 0 Direct access to the internet direct 1 Set the proxy URL directly:
- Supports authenticated proxy.
- Proxy URL uses standard format:user:password@proxy:port
manual 2 -
Config Location:
- Linux:
/etc/mpa_registration.conf
- Windows:
HKEY_LOCAL_MACHINE\SOFTWARE\Intel\SGX_RA\RAProxy
- Add the following DWORD key name
type
and set it to one of the Windows Values from the table above. - If you set it to
2
(manual), then also add the String keyurl
and set the URL in the standard format described in the table above.
- Linux:
-
-
Log Level
-
Values:
Logging Level Linux Value Windows Value None none 0 Functional func 1 Error (default value) error 2 Verbose info 3 -
Config Location:
- Linux:
/etc/mpa_registration.conf
- Windows:
HKEY_LOCAL_MACHINE\SOFTWARE\Intel\SGX_RA\RALog
- Add the the DWORD key
level
and set it to one of the Windows Values from the table above.
- Linux:
-
Logging output:
- Linux:
/var/log/mpa_registration.log
- Windows:
C:\Windows\System32\Winevt\Logs\Application.evtx
- Open
Application.evtx
(from another platform with Windows GUI) - Look for
IntelMPAService
records in thesource
column
- Linux:
-
-
UEFI path
- Values:
/sys/firmware/efi/efivars
(Default)
- Config Location:
- Linux:
/etc/mpa_registration.conf
- Windows: Not available for Windows
- Linux:
- Values:
BIOS Registration Authority Service Configuration¶
The BIOS uses a default URL for the Intel® Registration Service in the SgxRegistrationServerConfiguration UEFI variable. The platform owner can modify the registration service configuration using the SgxRegistrationServerConfiguration UEFI variable but only when SGX is disabled.
The BIOS also has a BIOS User Interface (UI) (SGX Auto MP Registration
) setting that allows the platform owner to enable/disable the MPA from running automatically at OS boot.
By default, the MPA does not automatically run at boot.
Error Codes¶
The MPA writes an error code to the ErrorCode field of the SgxRegistrationServerStatus UEFI variable when it completes. These are the possible ErrorCode values produced by the MPA (the MPA error codes always have the most significant bit of the ErrorCode field):
Error Name | Error Code | Description |
---|---|---|
MPA_SUCCESS |
(0x00) | Completed without any errors |
MPA_AG_UNEXPECTED_ERROR |
(0x80) | Unexpected internal error |
MPA_AG_OUT_OF_MEMORY |
(0x81) | Out-of-memory error |
MPA_AG_NETWORK_ERROR |
(0x82) | Proxy detection or network communication error |
MPA_AG_INVALID_PARAMETER |
(0x83) | Invalid parameter in input |
MPA_AG_INTERNAL_SERVER_ERROR |
(0x84) | Internal server error occurred |
MPA_AG_SERVER_TIMEOUT |
(0x85) | Server communication timeout |
MPA_AG_BIOS_PROTOCOL_ERROR |
(0x86) | BIOS UEFI protocol error |
MPA_AG_UNAUTHORIZED_ERROR |
(0x87) | The client is unauthorized to access the registration server |
MPA_RS_INVALID_REQUEST_SYNTAX |
(0xA0) | Server could not understand request due to malformed syntax |
MPA_RS_PM_INVALID_REGISTRATION_SERVER |
(0xA1) | Server rejected request because it is intended for different registration server (Registration Server Authentication Key (RSAK) mismatch) |
MPA_RS_INVALID_OR_REVOKED_PACKAGE |
(0xA2) | Server rejected request due to invalid or revoked CPU package |
MPA_RS_PACKAGE_NOT_FOUND |
(0xA3) | Server could not recognize at least one of the CPU packages |
MPA_RS_PM_INCOMPATIBLE_PACKAGE |
(0xA4) | Server detected at least one of the CPU packages is incompatible rest of the CPU packages on the platform |
MPA_RS_PM_INVALID_PLATFORM_MANIFEST |
(0xA5) | Server could not process the platform manifest structure |
MPA_RS_AD_PLATFORM_NOT_FOUND |
(0xA6) | Server rejected add package request because the platform has not been registered |
MPA_RS_AD_INVALID_ADD_REQUEST |
(0xA7) | Server could not process the add package structure |
MPA_RS_UNKOWN_ERROR |
(0xA8) | Server rejected request for unknown reason (Probably means MPA to be updated with newly defined server response errors) |
PCK Cert ID Retrieval Tool¶
The PCK Cert ID Retrieval Tool is an executable that collects the platform information that is necessary for retrieving PCK Certs from the Intel® SGX Provisioning Certificate Service (PCS). The DCAP releases for single-package platforms already include the PCK Cert ID Retrieval Tool, but it has been expanded to include support for multi-package platforms.
The main expansion to the tool is its ability to retrieve the platform manifest from the SgxRegistrationServerRequest
UEFI variable. By retrieving the platform manifest, this tool supports Indirection Registration better by allowing to store the platform manifest and use it later for retrieving PCK Certificates. The registration authority service does not need to persistently store the platform keys when the platform owner maintains a copy of the platform manifest for retrieving PCK Certificates.
Unlike the PCK Cert ID Retrieval Tool support for single package platforms, the tool needs to run in the host VM or on bare metal to get access to the UEFI variables. The SGX UEFI variables are not exposed to guest VMs. This tool is expected to run in the platform deployment environment when a platform is assembled or when a TCB Recovery event occurs requiring a new microcode patch applied at reset. It is not expected to run in a guest VM. For more information, see Dual Stage Registration.
By default, this tool loads enclaves to retrieve the platform identification data. This is required for single package platforms. For multi-package platforms, it can be configured to get limited platform identification information without loading any enclaves. For more information, see Platform ID Without Enclave Loading.
Unlike the MPA, the PCK Cert ID Retrieval Tool does not require internet connection. The PCK Cert ID Retrieval Tool can output the platform ID information to a file, or it can be configured to send the data to the DCAP's reference Caching Service (See PCK Certification Caching Service (PCCS) for more information).
The tool links with the SGX Multi-Package UEFI Variables Access Library.
Platform Manifest Handling¶
BIOS provides platform manifests on IPE boot flows and TR boot flows.
It also provides them in Normal boot flow when the SgxRegistrationComplete flag is 0 indicating a retry.
This tool always checks the SgxRegistrationServerRequest
UEFI variable directly and ignores the value of the SgxRegistrationComplete flag.
If it finds the platform manifest, it adds it to its platform ID output.
Although this tool does not check the SgxRegistrationComplete
flag to be 0 before reading the SgxRegistrationServer Request, it writes 1 to the SgxRegistrationComplete
flag if it successfully processes the SgxRegistrationServerRequest
UEFI variable.
Add Package Handling¶
The PCK Cert ID Retrieval Tool does not support Add Package flows.
If it encounters an add package structure in the SgxRegistrationServerRequest
UEFI variable, it generates an error.
You should use other means to support Add Package flows.
Configuration¶
The PCK Cert ID Retrieval Tool has two major operating modes:
- Output platform ID information to a comma-separated values (CSV) file
- Send platform ID information to the reference design PCCS on local network
- Network configuration can be specified by an XML file.
- Network configuration can be specified on the command line.
Valid Command line Parameters:
Command Line Parameter | Description |
---|---|
-f <filename> |
Output the platform ID information to the filename . The output is a comma-separated value (CSV) file with base-16 encoding. |
-url <cache_server_address> |
Reference PCCS's URL. Only needed when using the network to communicate to the PCCS. |
-user_token <token_string> |
User token to access the PCCS. Only needed when using the network to communicate to the PCCS. |
-proxy_type <proxy_type> |
Proxy setting when accessing the PCCS. Only needed when using the network to communicate to the PCCS. Available options: direct , default , and manual |
-proxy_url <proxy_server_address> |
Proxy server address. Only needed when using the network to communicate to the PCCS. |
-use_secure_cert <[true | false]> |
Accept secure/insecure https cert. Only needed when using the network to communicate to the PCCS. Default value is true |
-tcb_update_type <standard, early, all> |
Update type for tcb material. Only needed when using the network to communicate to the PCCS, and the PCCS was configured in REQ mode. Default value is standard. |
-platform_id <platform_id> |
When provided, no enclaves are loaded. You need to provide a unique platform id that can be used to identify the platform at run-time. |
-? |
Show command help |
-h |
Show command help |
-help |
Show command help |
Outputting to a CSV File¶
The PCK Cert ID Retrieval tool can output the platform identification information using the -f
command line parameter.
Note
All integer fields are in little-endian format.
<EncryptedPPID (384 byte array)>,
<PCE_ID (16 bit integer)>,
<CPUSVN (16 byte array)>,
<PCE ISVSVN (16 bit integer)>,
<PLATFORM_ID (16 byte array)>,
<PLATFORM_MANIFEST (variable byte array)>
This output is the same as it was for the single-package platforms with the addition of the platform manifest. The platform manifest is an optional output to the CSV file, and it is not present on single-package platforms or on multi-package platform boot flows that do not provide a platform manifest.
Because the EncryptedPPID cannot be used as a platform identifier due the randomness entropy of the encryption algorithm, the PLATFORM_ID is used as platform identifier for the platform. If the -platform_id parameter is not provided, the DCAP Quoting Enclave (QE) generates a QE_ID as the platform_id. If the PLATFORM_ID is used as input, the Quote Provider Library must use the same PLATFORM_ID when retrieving the PCK Certificates from the PCCS.
Outputting to the Reference Provisioning Certification Caching Service (PCCS)¶
The PCK Cert ID Retrieval Tool can be configured to send the platform ID information to the Intel reference PCCS. The PCCS exposes a REST API for accepting the platform ID information. See PCK Certification Caching Service (PCCS) for more information. The network configuration can be provided on the command line or by entering the information into an xml configuration file (network_configuration.conf). The command line configurations take precedence. This is convenient if the multi-package platform can reach the local network in the provisioning environment.
Platform Identity Without Enclave Loading¶
The PCK Cert ID Retrieval Tool may run in a constrained environment during platform provisioning.
It may not have OS support for loading enclaves or all of the DCAP software packages installed, or you may have a specific need to choose/supply their own platform ID.
To support these environments better, the PCK Cert ID Retrieval Tool supports a mode that only retrieves the platform manifest and does not retrieve the platform ID information that requires loading any enclaves.
The output of the CSV file or the data sent to the PCCS only contains the PCEID, the platform manifest and a user-supplied run-time platform identifier.
The run-time platform identifier replaces the QE_ID in the platform ID information.
This platform identifier can be used during run-time for requesting PCK Certificates because the platform manifest is not available to guest VMs.
Providing the -platform_id
command line parameter selects this mode of operation
Multi-Package Management Tool¶
The DCAP release for multi-package platforms also includes a management tool to provide status and configuration to the platform from the OS software. Like the PCK Cert ID Retrieval Tool, it links with the SGX Multi-Package UEFI Variables Access Library.
Command Line Parameter | Description |
---|---|
-get_platform_manifest <file_name> |
Reads the SgxRegistrationServerRequest UEFI variable to get the platform manifest when present. It outputs the platform manifest in binary form to the file specified in <file_name> .Note: if UEFI variable is in read-only mode, this command could NOT change the SgxRegistrationStatus ' status. |
-get_key_blobs <file_name> |
Reads SgxRegistrationPackageInfo UEFI variable to get the key blobs when present. It outputs the key blobs in binary form to the file specified in <file_name> .Note: if UEFI variable is in read-only mode, this command could NOT change the SgxRegistrationStatus ' status. |
-set_server_info <file_name> <hex_flags> <URL> |
Used to change the registration authority service. <file_name> contains the self-signed SgxRegistrationServerID from the registration authority service. <hex_flags> indicates the value of Flags in SgxRegistrationConfiguration UEFI variable. <URL> the URL of the registration authority service.Note: if UEFI variable is in read-only mode, this command could NOT work. |
-get_registration_status |
Reports whether it is completed or in progress. This is the reporting the value of the SgxRegistrationComplete flag in the SgxRegistrationStatus UEFI variable.Note: if UEFI variable is in read-only mode, maybe this command could NOT give one correct registration status. |
-get_last_registration_error_code |
Reports the registration error code. It is the value of the Status.ErrorCode field in the SgxRegistrationStatus UEFI variable. The error code can be from the BIOS or from the MPA.Note: if UEFI variable is in read-only mode, maybe this command could NOT give one correct registration status. |
-get_sgx_status |
Reports the status of SGX. |
-v |
Produce verbose output. |
-h |
Show command help. |
Changing the Registration Authority Service¶
BIOS provides a default registration authority service configuration.
For the Intel reference BIOS, the default registration authority service is the Intel® SGX Registration Service.
The SGX multi-package platforms support modifying the registration authority service with the SgxRegistrationConfiguration
UEFI variable.
This variable becomes writable only when the platform owner disables SGX via the BIOS configuration settings.
The registration authority service does not need to generate a self-signed SgxRegistrationServerID
structure.
This combined with the registration authority service URL is the SgxRegistrationServerInfo structure.
The platform owner then writes the SgxRegistrationServerInfo to the SgxRegistrationConfiguration
UEFI variable.
On the next SGX enabled boot, key blobs generated for a different registration authority service are deleted and BIOS forces an Initial Platform Establishment boot flow. This results in new key blobs and a new platform manifest.
Handling Key Blobs¶
Each CPU package on the platform has a key blob when SGX is enabled on a multi-package platform.
BIOS provides a mechanism for retrieving the key blobs.
Platform owners may want to maintain a copy of the key blobs in case they need to be restored after they are deleted from BIOS persistent store (e.g. the FLASH was erased or SGX was reset).
The SgrRegistrationPackageInfo UEFI variable provides the key blobs.
By default, BIOS does not present the key blobs to the software.
The platform owner needs to 'opt-in' using the BIOS configuration setting (SGX Package Info In-band Access
)
before BIOS provides the key blobs.
Registration Error Codes¶
The error codes written to the Status.ErrorCode
field in the SgxRegistrationStatus
UEFI variable can come from one of two sources.
BIOS writes to this field when an error occurs during a boot flow.
The most significant bit of the ErrorCode is 0 when generated by BIOS.
The software can also use this field to report any errors in processing the data from BIOS.
The most significant bit of the ErrorCode is 1 when generated by software.
Software should not overwrite the ErrorCode if BIOS writes a non-zero value.
The software error codes generated by the MPA are defined in MPA Error Codes. The BIOS error codes are defined as follows:
Error Name | Error Code |
---|---|
RS_PREMEM_OTHER |
0x10 |
RS_PREMEM_NOMEM |
0x11 |
RS_PREMEM_SYS_NOT_CAPABLE |
0x12 |
RS_PREMEM_NO_VALID_PRMRR |
0x13 |
RS_PREMEM_HW_NOT_CAPABLE |
0x14 |
RS_PREMEM_TME_DISABLED |
0x15 |
RS_PREMEM_SGX_DISABLED |
0x16 |
RS_PREMEM_INVALID_PRRMR_SIZE |
0x17 |
RS_PREMEM_PRMRR_NOT_SECURED |
0x18 |
RS_PREMEM_MEM_TOPOLOGY_ERR |
0x19 |
RS_POSTMEM_OTHER |
0x20 |
RS_POSTMEM_NOMEM |
0x21 |
RS_POSTMEM_SYSHOST_NOTFOUND |
0x22 |
RS_POSTMEM_MMAP_HOST_NOTFOUND |
0x23 |
RS_POSTMEM_VSPPI_NOTFOUND |
0x24 |
RS_POSTMEM_MRCHCSPPI_NOTFOUND |
0x25 |
RS_POSTMEM_SVN_ERR |
0x26 |
RS_POSTMEM_REGVARS_ERR |
0x27 |
RS_POSTMEM_KEYBLOBS_RES_ERR |
0x28 |
RS_POSTMEM_PRID_UNLOCK_ERR |
0x29 |
RS_POSTMEM_DETERMINE_BOOT_ERR |
0x2A |
RS_POSTMEM_FIRSTBOOT_ERR |
0x2B |
RS_POSTMEM_WARMRESET_ERR |
0x2C |
RS_LATEINIT_OTHER |
0x30 |
RS_LATEINIT_TRIGCALLBACK_ERR |
0x31 |
RS_LATEINIT_HOBLIST_NOTFOUND |
0x32 |
RS_LATEINIT_MPSVC_ERR |
0x33 |
RS_LATEINIT_INITDATAHOB_RES |
0x34 |
RS_LATEINIT_UPDTCAPAB_ERR |
0x35 |
RS_LATEINIT_UPDTPRMRR_ERR |
0x36 |
RS_LATEINIT_CRDIMM_ERR |
0x37 |
RS_LATEINIT_UPDTLEWR_ERR |
0x38 |
RS_LATEINIT_SYS_NOT_CAPABLE |
0x39 |
RS_LATEINIT_SGX_DISABLED |
0x3A |
RS_LATEINIT_FACTORY_RESET_ERR |
0x3B |
RS_LATEINIT_NVSAREA_ERR |
0x3C |
RS_LATEINIT_GET_NVVAR_ERR |
0x3D |
RS_LATEINIT_EXPOSE_PROTO_ERR |
0x3E |
RS_LATEINIT_LOCKVARS_ERR |
0x3F |
RS_LATEINIT_VAR_ROTO_ERR |
0x40 |
RS_LATEINIT_CALLBACK_OTHER |
0x50 |
RS_LATEINIT_CALLBACK_NOMEM |
0x51 |
RS_LATEINIT_CALLBACK_BIOSPARAM_ERR |
0x52 |
RS_LATEINIT_CALLBACK_MICROCODE_LAUNCH_ERR |
0x53 |
RS_LATEINIT_CALLBACK_UPDT_TIMESTMP_ERR |
0x54 |
RS_LATEINIT_CALLBACK_UPDT_PKG_INFO_ERR |
0x55 |
RS_LATEINIT_CALLBACK_LAUNCHCTRL_ERR |
0x56 |
RS_LATEINIT_CALLBACK_UPDT_KEYBLOBS_ERR |
0x57 |
RS_LATEINIT_CALLBACK_TCBRECOVERY_ERR |
0x58 |
RS_LATEINIT_CALLBACK_STORPLATMANIF_ERR |
0x59 |
RS_LATEINIT_CALLBACK_LEGACYVARS_ERR |
0x5A |
RS_LATEINIT_CALLBACK_REGSTATE_VAR_ERR |
0x5B |
SGX Status¶
The possible values reported for SGX on multi-package platforms are:
- SGX is enabled.
- A reboot is required to finish enabling SGX.
- SGX is disabled and a Software Control Interface is not available to enable it.
- SGX is not enabled on this platform. More details are unavailable.
- SGX is disabled, but a Software Control Interface is available to enable it.
- SGX is disabled, but can be enabled manually in the BIOS setup.
- Detected an unsupported version of Windows* 10 with Hyper-V enabled.
- SGX is not supported by this CPU.