EnclaveGetAttestationReport 関数 (winenclaveapi.h)
現在のエンクレーブを記述し、エンクレーブの種類を担当する機関によって署名されたエンクレーブ構成証明レポートを取得します。
構文
HRESULT EnclaveGetAttestationReport(
[in, optional] const UINT8 [ENCLAVE_REPORT_DATA_LENGTH] EnclaveData,
[out] PVOID Report,
[in] UINT32 BufferSize,
[out] UINT32 *OutputSize
);
パラメーター
[in, optional] EnclaveData
エンクレーブが署名されたレポートに挿入するデータの 64 バイト バッファーへのポインター。 たとえば、このバッファーには、証明書利用者が提供した 256 ビットの nonce、エンクレーブが伝達する必要がある追加データの SHA-256 ハッシュ (エンクレーブが所有する秘密キーに対応する公開キーなど) を含めることができます。 このパラメーターが の場合、 NULL
レポートの対応するフィールドにゼロが入力されます。
[out] Report
レポートを配置するバッファーへのポインター。 このレポートは、エンクレーブのアドレス範囲内またはホスト プロセスのアドレス空間内に格納できます。 出力に必要なバッファーのサイズのみを計算し、レポート自体は計算しないことを示すには、 を指定 NULL
します。
[in] BufferSize
Report パラメーターが指すバッファーのサイズ。 Report が の場合、BufferSize は NULL
0 である必要があります。 Report が でないNULL
場合、レポートのサイズがこの値より大きい場合は、エラーが返されます。
[out] OutputSize
レポートのサイズを受け取る変数へのポインター。
戻り値
この関数が成功すると、 S_OKが返されます。 そうでない場合は、HRESULT エラー コードを返します。
注釈
EnclaveGetAttestationReport は、エンクレーブ内から呼び出す必要があります。
EnclaveGetAttestationReport は、 ENCLAVE_TYPE_SGX型のエンクレーブでは現在サポートされていません。 VBS エンクレーブの場合、 EnclaveGetAttestationReport が取得するレポートは、VBS 固有のキーを使用して署名されます。
エンクレーブ構成証明レポートには、エンクレーブに読み込まれるすべてのコードの ID と、エンクレーブがデバッガー アクセスがアクティブな状態で実行されているかどうかなど、エンクレーブの実行方法を制御するポリシーが含まれます。 レポートには、キー交換プロトコルで使用するためにエンクレーブによって生成された少量の情報も含まれています。
EnclaveGetAttestationReport によって生成されるレポートは、次の項目で構成されます。
- VBS_ENCLAVE_REPORT_PKG_HEADER構造体
- 次の項目で構成される署名付きステートメント。
- VBS_ENCLAVE_REPORT構造体
- 次の項目で構成される 0 個以上の変数データ ブロック:
- VBS_ENCLAVE_REPORT_VARDATA_HEADER構造体
- VBS_ENCLAVE_REPORT_VARDATA_HEADER構造体によって記述されるデータ
- 署名
エンクレーブ構成証明レポートは、特定のコードがエンクレーブで実行されていることを証明します。 検証エンティティが VBS をオンにしてホスト システムが実行されていることを証明する場合、そのエンティティはその証明をエンクレーブ構成証明レポートと組み合わせて使用して、特定のコードが設定された特定のエンクレーブが読み込まれたことを確認できます。
要件
サポートされている最小のクライアント | Windows 10バージョン 1709 [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2016 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | winenclaveapi.h |
Library | Vertdll.lib |
[DLL] | Vertdll.dll |
こちらもご覧ください
EnclaveVerifyAttestationReport