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 が の場合、BufferSizeNULL0 である必要があります。 DecryptedData が でないNULL場合、および復号化されたデータのサイズがこの値より大きい場合は、エラーが返されます。

[out] DecryptedDataSize

復号化されたデータの実際のサイズをバイト単位で受け取る変数へのポインター。

[out, optional] SealingIdentity

データをシールするエンクレーブの ID を入力する必要があるバッファーへのオプションのポインター。 このポインターが の場合、 NULLシール エンクレーブの ID は返されません。

[out, optional] UnsealingFlags

暗号化されたバイナリ ラージ オブジェクトを記述する次のフラグを 0 個以上受け取る変数への省略可能なポインター。

意味
ENCLAVE_UNSEAL_FLAG_STALE_KEY
1
データは古いキーで暗号化されました。 セキュリティのために必要な場合、シール キーはローテーションされ、システムは最近既知のキーの固定数のみを保持できます。 データが古いキーで暗号化されたことを判断するエンクレーブでは、データの暗号化に使用されるキーがキー リストに保持されなくなる可能性を最小限に抑えるために、現在のキーを使用してデータを再暗号化する必要があります。

戻り値

この関数が成功すると、 S_OKが返されます。 そうでない場合は、HRESULT エラー コードを返します。

注釈

EnclaveUnsealData を呼び出すエンクレーブは、EnclaveSealData を呼び出してデータをシールするエンクレーブによって指定されたENCLAVE_SEALING_IDENTITY_POLICYの値に対応する条件を満たす必要があります。

EnclaveUnsealData はエンクレーブ内から呼び出す必要があり、 ENCLAVE_TYPE_VBS エンクレーブ型のエンクレーブ内でのみサポートされます。

要件

要件
サポートされている最小のクライアント Windows 10、バージョン 1709 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2016 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー winenclaveapi.h
Library Vertdll.lib
[DLL] Vertdll.dll

こちらもご覧ください

エンクレーブ関数

ENCLAVE_SEALING_IDENTITY_POLICY

EnclaveSealData

VBS エンクレーブで使用できる Vertdll API