EnclaveGetAttestationReport 函式 (winenclaveapi.h)

取得記憶體保護區證明報告,其描述目前的記憶體保護區,並由負責記憶體保護區類型的授權單位簽署。

語法

HRESULT EnclaveGetAttestationReport(
  [in, optional] const UINT8 [ENCLAVE_REPORT_DATA_LENGTH] EnclaveData,
  [out]          PVOID                                    Report,
  [in]           UINT32                                   BufferSize,
  [out]          UINT32                                   *OutputSize
);

參數

[in, optional] EnclaveData

記憶體保護區想要插入其已簽署報表之 64 位元組數據緩衝區的指標。 例如,此緩衝區可能包含信賴憑證者所提供的 256 位 nonce,後面接著記憶體保護區想要傳達之其他數據的 SHA-256 哈希,例如對應至記憶體保護區所擁有的私鑰的公鑰。 如果此參數為 NULL,則報表的對應欄位會填入零。

[out] Report

應放置報表之緩衝區的指標。 此報告可以儲存在記憶體保護區的位址範圍或主機進程的位址空間內。 指定 NULL 以指出只計算輸出所需的緩衝區大小,而不是報表本身。

[in] BufferSize

Report 參數所指向的緩衝區大小。 如果 ReportNULLBufferSize 必須是零。 如果 Report 不是 NULL,而且如果報表的大小大於此值,則會傳回錯誤。

[out] OutputSize

接收報表大小的變數指標。

傳回值

如果此函式成功,則會傳回 S_OK。 否則,它會傳回 HRESULT 錯誤碼。

備註

記憶體保護區GetAttestationReport 必須從記憶體保護區內呼叫。

記憶體保護區GetAttestationReport 目前不支援具有 ENCLAVE_TYPE_SGX類型的記憶體保護區。 針對 VBS 記憶體保護區, EnclaveGetAttestationReport 取得的報告會使用 VBS 特定密鑰進行簽署。

記憶體保護區證明報表包含載入記憶體保護區的所有程式代碼識別,以及控制記憶體保護區執行方式的原則,例如記憶體保護區是否使用調試程式存取使用中存取。 此報告也包含少量資訊,這些資訊是記憶體保護區產生以用於密鑰交換通訊協定。

EnclaveGetAttestationReport 產生的報表包含下列專案:

記憶體保護區證明報告提供特定程式代碼以記憶體保護區執行的證明。 如果驗證實體也取得已開啟 VBS執行主機系統的證明,該實體可以使用該證明搭配記憶體保護區證明報告,以確認已載入特定程序代碼的特定記憶體保護區。

規格需求

   
最低支援的用戶端 Windows 10 版本 1709 [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2016 [僅限傳統型應用程式]
目標平台 Windows
標頭 winenclaveapi.h
程式庫 Vertdll.lib
Dll Vertdll.dll

另請參閱

記憶體保護區函式

EnclaveVerifyAttestationReport

VBS_ENCLAVE_REPORT

VBS_ENCLAVE_REPORT_PKG_HEADER

VBS_ENCLAVE_REPORT_VARDATA_HEADER

VBS 記憶體保護區中可用的 Vertdll API