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 NULL
ist 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:
- Eine VBS_ENCLAVE_REPORT_PKG_HEADER-Struktur
- Eine signierte Anweisung, die aus den folgenden Elementen besteht:
- Eine VBS_ENCLAVE_REPORT-Struktur
- Null oder mehr variable Datenblöcke, die aus den folgenden Elementen bestehen:
- Eine VBS_ENCLAVE_REPORT_VARDATA_HEADER-Struktur
- Von der VBS_ENCLAVE_REPORT_VARDATA_HEADER-Struktur beschriebene Daten
- Eine Signatur
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
EnclaveVerifyAttestationReport