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 が の場合、BufferSize は NULL
0 である必要があります。 DecryptedData が でないNULL
場合、および復号化されたデータのサイズがこの値より大きい場合は、エラーが返されます。
[out] DecryptedDataSize
復号化されたデータの実際のサイズをバイト単位で受け取る変数へのポインター。
[out, optional] SealingIdentity
データをシールするエンクレーブの ID を入力する必要があるバッファーへのオプションのポインター。 このポインターが の場合、 NULL
シール エンクレーブの ID は返されません。
[out, optional] UnsealingFlags
暗号化されたバイナリ ラージ オブジェクトを記述する次のフラグを 0 個以上受け取る変数への省略可能なポインター。
値 | 意味 |
---|---|
ENCLAVE_UNSEAL_FLAG_STALE_KEY1 |
データは古いキーで暗号化されました。 セキュリティのために必要な場合、シール キーはローテーションされ、システムは最近既知のキーの固定数のみを保持できます。 データが古いキーで暗号化されたことを判断するエンクレーブでは、データの暗号化に使用されるキーがキー リストに保持されなくなる可能性を最小限に抑えるために、現在のキーを使用してデータを再暗号化する必要があります。 |
戻り値
この関数が成功すると、 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 |