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

指向要密封的数据的指针。 此数据可以存储在 enclave 的地址范围内,也可以存储在主机进程的地址范围内。

[in] DataToEncryptSize

要密封的数据的大小(以字节为单位)。

[in] IdentityPolicy

一个 值,该值指定另一个 enclave 必须与调用 EnclaveSealData 的 enclave 以取消密封数据的 enclave 相关。

[in] RuntimePolicy

一个 值,该值指示是否允许在启用调试的情况下运行的 enclave 取消封装此调用 EnclaveSealData 密封的数据。

含义
ENCLAVE_RUNTIME_POLICY_ALLOW_FULL_DEBUG
1
如果指定,则指示允许在启用调试的情况下运行的 enclave 取消密封数据。 如果未指定,则表示不允许在启用调试的情况下运行的 enclave 取消密封数据。 如果调用 enclave 正在运行且调试已打开,则会自动包含此标志。
ENCLAVE_RUNTIME_POLICY_ALLOW_DYNAMIC_DEBUG
2
如果指定,则指示允许在打开动态调试的情况下运行的 enclave 取消密封数据。 如果未指定,则表示不允许在打开动态调试的情况下运行的 enclave 取消密封数据。 如果调用 enclave 正在运行且启用了动态调试,则会自动包含此标志。

[out] ProtectedBlob

指向应放置密封数据的缓冲区的指针。 此数据可以存储在 enclave 的地址范围或主机进程的地址空间中。 如果此参数为 NULL,则仅计算受保护 Blob 的大小。

[in] BufferSize

指向包含 ProtectedBlob 参数指向的缓冲区大小的变量的指针。 如果 ProtectedBlobNULL,则此值必须为零。 如果 ProtectedBlob 不是 NULL,并且加密数据的大小大于此值,则会发生错误。

[out] ProtectedBlobSize

指向接收加密 Blob 实际大小的变量的指针。

返回值

如果此函数成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。

注解

EnclaveSealData 必须从 enclave 内部调用,并且仅在具有 ENCLAVE_TYPE_VBS enclave 类型的 enclave 中受支持。

要求

要求
最低受支持的客户端 Windows 10版本 1709 [仅限桌面应用]
最低受支持的服务器 Windows Server 2016 [仅限桌面应用]
目标平台 Windows
标头 winenclaveapi.h
Library Vertdll.lib
DLL Vertdll.dll

另请参阅

Enclave 函数

ENCLAVE_SEALING_IDENTITY_POLICY

EnclaveUnsealData

VBS enclave 中可用的 Vertdll API