Freigeben über


EnclaveGetAttestationReport-Funktion (winenclaveapi.h)

Ruft einen Enclave-Nachweisbericht ab, der die aktuelle Enclave beschreibt und von der Autorität signiert wird, die für den Typ der Enclave verantwortlich ist.

Syntax

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

Parameter

[in, optional] EnclaveData

Ein Zeiger auf einen 64-Byte-Datenpuffer, den die Enclave in den signierten Bericht einfügen möchte. Dieser Puffer könnte beispielsweise eine 256-Bit-Nonce enthalten, die die vertrauende Seite bereitgestellt hat, gefolgt von einem SHA-256-Hash mit zusätzlichen Daten, die die Enclave übermitteln möchte, z. B. einen öffentlichen Schlüssel, der einem privaten Schlüssel entspricht, den die Enclave besitzt. Wenn dieser Parameter ist NULL, wird das entsprechende Feld des Berichts mit Nullen gefüllt.

[out] Report

Ein Zeiger auf einen Puffer, in dem der Bericht platziert werden soll. Dieser Bericht kann entweder innerhalb des Adressbereichs der Enclave oder innerhalb des Adressraums des Hostprozesses gespeichert werden. Geben Sie an NULL , um anzugeben, dass nur die Größe des Puffers berechnet werden soll, der für die Ausgabe erforderlich ist, und nicht der Bericht selbst.

[in] BufferSize

Die Größe des Puffers, auf den der Report-Parameter zeigt. Wenn Report den Wert aufweist NULL, muss BufferSize null sein. Wenn Report nicht NULList und die Größe des Berichts größer als dieser Wert ist, wird ein Fehler zurückgegeben.

[out] OutputSize

Ein Zeiger auf eine Variable, die die Größe des Berichts empfängt.

Rückgabewert

Wenn diese Funktion erfolgreich ist, wird S_OK zurückgegeben. Andernfalls wird ein Fehlercode HRESULT zurückgegeben.

Hinweise

EnclaveGetAttestationReport muss innerhalb einer Enclave aufgerufen werden.

EnclaveGetAttestationReport wird derzeit nicht für Enclaves mit einem Typ von ENCLAVE_TYPE_SGX unterstützt. Für VBS-Enclaves wird der Bericht, den EnclaveGetAttestationReport abruft, mit einem VBS-spezifischen Schlüssel signiert.

Der Enclave-Nachweisbericht enthält die Identität des gesamten in die Enclave geladenen Codes sowie Richtlinien, die steuern, wie die Enclave ausgeführt wird, z. B. ob die Enclave mit aktivem Debuggerzugriff ausgeführt wird. Der Bericht enthält auch eine kleine Menge von Informationen, die die Enclave generiert hat, um sie in einem Schlüsselaustauschprotokoll zu verwenden.

Der Bericht, den EnclaveGetAttestationReport generiert, besteht aus den folgenden Elementen:

Der Enclave-Nachweisbericht bietet den Nachweis, dass bestimmter Code mit einer Enclave ausgeführt wird. Wenn eine überprüfende Entität auch den Nachweis erhält, dass das Hostsystem mit aktiviertem VBS ausgeführt wird, kann diese Entität diesen Nachweis in Verbindung mit dem Enclave-Nachweisbericht verwenden, um zu überprüfen, ob eine bestimmte Enclave geladen wurde, die mit bestimmtem Code aufgefüllt wurde.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 10, Version 1709 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2016 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winenclaveapi.h
Bibliothek Vertdll.lib
DLL Vertdll.dll

Weitere Informationen

Enclave-Funktionen

EnclaveVerifyAttestationReport

VBS_ENCLAVE_REPORT

VBS_ENCLAVE_REPORT_PKG_HEADER

VBS_ENCLAVE_REPORT_VARDATA_HEADER

In VBS-Enclaves verfügbare Vertdll-APIs