Share via


EnclaveUnsealData-Funktion (winenclaveapi.h)

Entschlüsselt ein verschlüsseltes binäres großes Objekt (Blob).

Syntax

HRESULT EnclaveUnsealData(
  [in]            const VOID       *ProtectedBlob,
  [in]            UINT32           ProtectedBlobSize,
  [out]           PVOID            DecryptedData,
  [in]            UINT32           BufferSize,
  [out]           UINT32           *DecryptedDataSize,
  [out, optional] ENCLAVE_IDENTITY *SealingIdentity,
  [out, optional] UINT32           *UnsealingFlags
);

Parameter

[in] ProtectedBlob

Ein Zeiger auf die versiegelten Daten, die nicht versiegelt werden sollen. Diese Daten können entweder innerhalb des Adressbereichs der Enclave oder innerhalb des Adressraums des Hostprozesses gespeichert werden.

[in] ProtectedBlobSize

Die Größe der versiegelten Daten in Bytes, die nicht versiegelt werden sollen.

[out] DecryptedData

Ein Zeiger auf einen Puffer, in dem die unverschlüsselten Daten platziert werden sollen. Diese Daten können entweder innerhalb des Adressbereichs der Enclave oder innerhalb des Adressraums des Hostprozesses gespeichert werden. Wenn dieser Parameter ist NULL, wird nur die Größe der entschlüsselten Daten berechnet.

[in] BufferSize

Die Größe des Puffers, auf den der DecryptedData-Parameter in Bytes zeigt. Wenn DecryptedData auf festgelegt ist NULL, muss BufferSize null sein. Wenn DecryptedData nicht NULList und die Größe der entschlüsselten Daten größer als dieser Wert ist, wird ein Fehler zurückgegeben.

[out] DecryptedDataSize

Ein Zeiger auf eine Variable, die die tatsächliche Größe der entschlüsselten Daten in Bytes empfängt.

[out, optional] SealingIdentity

Ein optionaler Zeiger auf einen Puffer, der mit der Identität der Enclave gefüllt werden soll, die die Daten versiegelt. Wenn dieser Zeiger ist, wird NULLdie Identität der Dichtungsenklave nicht zurückgegeben.

[out, optional] UnsealingFlags

Ein optionaler Zeiger auf eine Variable, die null oder mehr der folgenden Flags empfängt, die das verschlüsselte binäre große Objekt beschreiben.

Wert Bedeutung
ENCLAVE_UNSEAL_FLAG_STALE_KEY
1
Die Daten wurden mit einem veralteten Schlüssel verschlüsselt. Versiegelungsschlüssel werden rotiert, wenn dies aus Sicherheitsgründen erforderlich ist, und das System kann nur eine feste Anzahl von kürzlich bekannten Schlüsseln verwalten. Eine Enclave, die bestimmt, dass Daten mit einem veralteten Schlüssel verschlüsselt wurden, sollte die Daten mit einem aktuellen Schlüssel erneut verschlüsseln, um die Wahrscheinlichkeit zu minimieren, dass der Schlüssel, der zum Verschlüsseln der Daten verwendet wird, nicht mehr in der Schlüsselliste beibehalten wird.

Rückgabewert

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

Hinweise

Die Enclave, die EnclaveUnsealData aufruft, muss die Kriterien erfüllen, die dem Wert des ENCLAVE_SEALING_IDENTITY_POLICY entsprechen, der von der Enclave angegeben wurde, die die Daten durch Aufrufen von EnclaveSealData versiegelt hat.

EnclaveUnsealData muss innerhalb einer Enclave aufgerufen werden und wird nur in Enclaves unterstützt, die über den ENCLAVE_TYPE_VBS Enclave-Typ verfügen.

Anforderungen

Anforderung Wert
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

ENCLAVE_SEALING_IDENTITY_POLICY

EnclaveSealData

In VBS-Enclaves verfügbare Vertdll-APIs