Поделиться через


Функция EnclaveUnsealData (winenclaveapi.h)

Расшифровывает зашифрованный большой двоичный объект (BLOB-объект).

Синтаксис

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
);

Параметры

[in] ProtectedBlob

Указатель на запечатанные данные для распечатки. Эти данные могут храниться в диапазоне адресов анклава или в диапазоне адресов хост-процесса.

[in] ProtectedBlobSize

Размер запечатанных данных для распечатки в байтах.

[out] DecryptedData

Указатель на буфер, в который должны быть помещены незашифрованные данные. Эти данные могут храниться либо в диапазоне адресов анклава, либо в диапазоне адресов хост-процесса. Если этот параметр имеет значение NULL, вычисляется только размер расшифрованных данных.

[in] BufferSize

Размер буфера, на который указывает параметр DecryptedData , в байтах. Если параметр DecryptedData имеет значение NULL, параметр BufferSize должен иметь нулевое значение. Если значение DecryptedData не NULLравно , а размер расшифрованных данных больше этого значения, возвращается ошибка.

[out] DecryptedDataSize

Указатель на переменную, которая получает фактический размер расшифрованных данных в байтах.

[out, optional] SealingIdentity

Необязательный указатель на буфер, который должен быть заполнен идентификатором анклава, запечатав данные. Если этот указатель имеет значение NULL, удостоверение анклава запечатывания не возвращается.

[out, optional] UnsealingFlags

Необязательный указатель на переменную, которая получает ноль или более следующих флагов, описывающих зашифрованный двоичный большой объект.

Значение Значение
ENCLAVE_UNSEAL_FLAG_STALE_KEY
1
Данные были зашифрованы с помощью устаревшего ключа. Ключи запечатывания сменяются, когда это необходимо для обеспечения безопасности, и система может поддерживать только фиксированное число недавно известных ключей. Анклав, определяющий, что данные были зашифрованы устаревшим ключом, должен повторно шифровать данные с помощью текущего ключа, чтобы свести к минимуму вероятность того, что ключ, используемый для шифрования данных, больше не будет храниться в списке ключей.

Возвращаемое значение

Если эта функция завершается успешно, она возвращает S_OK. В противном случае возвращается код ошибки HRESULT .

Комментарии

Анклав, вызывающий EnclaveUnsealData , должен соответствовать критериям, соответствующим значению ENCLAVE_SEALING_IDENTITY_POLICY , заданному анклавом, который запечатал данные путем вызова EnclaveSealData.

EnclaveUnsealData должен вызываться из анклава и поддерживается только в анклавах, имеющих тип ENCLAVE_TYPE_VBS анклава.

Требования

Требование Значение
Минимальная версия клиента Windows 10 версии 1709 [только классические приложения]
Минимальная версия сервера Windows Server 2016 [только классические приложения]
Целевая платформа Windows
Header winenclaveapi.h
Библиотека Vertdll.lib
DLL Vertdll.dll

См. также раздел

Функции анклава

ENCLAVE_SEALING_IDENTITY_POLICY

EnclaveSealData

API-интерфейсы Vertdll, доступные в анклавах VBS