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_DEBUG1 |
如果指定,则指示允许在启用调试的情况下运行的 enclave 取消密封数据。 如果未指定,则表示不允许在启用调试的情况下运行的 enclave 取消密封数据。 如果调用 enclave 正在运行且调试已打开,则会自动包含此标志。 |
ENCLAVE_RUNTIME_POLICY_ALLOW_DYNAMIC_DEBUG2 |
如果指定,则指示允许在打开动态调试的情况下运行的 enclave 取消密封数据。 如果未指定,则表示不允许在打开动态调试的情况下运行的 enclave 取消密封数据。 如果调用 enclave 正在运行且启用了动态调试,则会自动包含此标志。 |
[out] ProtectedBlob
指向应放置密封数据的缓冲区的指针。 此数据可以存储在 enclave 的地址范围或主机进程的地址空间中。 如果此参数为 NULL,则仅计算受保护 Blob 的大小。
[in] BufferSize
指向包含 ProtectedBlob 参数指向的缓冲区大小的变量的指针。 如果 ProtectedBlob 为 NULL
,则此值必须为零。 如果 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 |