EnclaveSealData 函式 (winenclaveapi.h)

從未加密的數據 (blob) 產生加密的二進位大型物件。

語法

HRESULT EnclaveSealData(
  [in]  const VOID                      *DataToEncrypt,
  [in]  UINT32                          DataToEncryptSize,
  [in]  ENCLAVE_SEALING_IDENTITY_POLICY IdentityPolicy,
  [in]  UINT32                          RuntimePolicy,
  [out] PVOID                           ProtectedBlob,
  [in]  UINT32                          BufferSize,
  [out] UINT32                          *ProtectedBlobSize
);

參數

[in] DataToEncrypt

您想要密封之數據的指標。 此數據可以儲存在記憶體保護區的位址範圍或主機進程的位址範圍內。

[in] DataToEncryptSize

您想要密封的數據大小,以位元組為單位。

[in] IdentityPolicy

值,指定另一個記憶體保護區必須與呼叫 EnclaveSealData 的記憶體保護區相關,以便記憶體保護區取消密封數據。

[in] RuntimePolicy

值,這個值表示是否允許開啟偵錯執行的記憶體保護區解除密封此 記憶體保護區對 EnclaveSealData seals 呼叫的數據。

意義
ENCLAVE_RUNTIME_POLICY_ALLOW_FULL_DEBUG
1
如果指定,表示允許開啟偵錯執行的記憶體保護區解除密封數據。 如果未指定,表示不允許開啟偵錯執行的記憶體保護區取消密封數據。 如果呼叫記憶體保護區在開啟偵錯的情況下執行,則會自動包含此旗標。
ENCLAVE_RUNTIME_POLICY_ALLOW_DYNAMIC_DEBUG
2
如果指定,表示允許開啟動態偵錯執行的記憶體保護區取消密封數據。 如果未指定,表示不允許開啟動態偵錯執行的記憶體保護區取消密封數據。 如果呼叫記憶體保護區在開啟動態偵錯的情況下執行,則會自動包含此旗標。

[out] ProtectedBlob

應放置密封數據之緩衝區的指標。 此數據可以儲存在記憶體保護區的位址範圍內,或儲存在主機進程的位址空間內。 如果此參數為 NULL,則只會計算受保護 Blob 的大小。

[in] BufferSize

變數的指標,其中包含 ProtectedBlob 參數指向的緩衝區大小。 如果 ProtectedBlobNULL,這個值必須是零。 如果 ProtectedBlob 不是 NULL,而且加密數據的大小大於此值,就會發生錯誤。

[out] ProtectedBlobSize

接收加密 Blob 實際大小的變數指標。

傳回值

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

備註

EnclaveSealData 必須從記憶體保護區內呼叫,而且只有在具有 ENCLAVE_TYPE_VBS 記憶體保護區類型的記憶體保護區內才支援。

規格需求

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

另請參閱

記憶體保護區函式

ENCLAVE_SEALING_IDENTITY_POLICY

EnclaveUnsealData

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