Función EnclaveGetAttestationReport (winenclaveapi.h)
Obtiene un informe de atestación de enclave que describe el enclave actual y está firmado por la autoridad responsable del tipo del enclave.
Sintaxis
HRESULT EnclaveGetAttestationReport(
[in, optional] const UINT8 [ENCLAVE_REPORT_DATA_LENGTH] EnclaveData,
[out] PVOID Report,
[in] UINT32 BufferSize,
[out] UINT32 *OutputSize
);
Parámetros
[in, optional] EnclaveData
Puntero a un búfer de 64 bytes de datos que el enclave quiere insertar en su informe firmado. Por ejemplo, este búfer podría incluir un valor nonce de 256 bits proporcionado por el usuario de confianza, seguido de un hash SHA-256 de datos adicionales que el enclave quiere transmitir, como una clave pública que corresponde a una clave privada que posee el enclave. Si este parámetro es NULL
, el campo correspondiente del informe se rellena con ceros.
[out] Report
Puntero a un búfer donde se debe colocar el informe. Este informe se puede almacenar dentro del intervalo de direcciones del enclave o dentro del espacio de direcciones del proceso host. Especifique NULL
para indicar que solo se debe calcular el tamaño del búfer necesario para la salida y no el propio informe.
[in] BufferSize
Tamaño del búfer al que apunta el parámetro Report . Si Report es NULL
, BufferSize debe ser cero. Si Report no NULL
es y si el tamaño del informe es mayor que este valor, se devuelve un error.
[out] OutputSize
Puntero a una variable que recibe el tamaño del informe.
Valor devuelto
Si esta función se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de error de HRESULT.
Comentarios
Se debe llamar a EnclaveGetAttestationReport desde dentro de un enclave.
EnclaveGetAttestationReport no se admite actualmente para enclaves con un tipo de ENCLAVE_TYPE_SGX. En el caso de los enclaves de VBS, el informe que obtiene EnclaveGetAttestationReport se firma mediante una clave específica de VBS.
El informe de atestación de enclave contiene la identidad de todo el código cargado en el enclave, así como las directivas que controlan cómo se ejecuta el enclave, como si el enclave se ejecuta con el acceso del depurador activo. El informe también incluye una pequeña cantidad de información que el enclave generado para usar en un protocolo de intercambio de claves.
El informe que genera EnclaveGetAttestationReport consta de los siguientes elementos:
- Estructura de VBS_ENCLAVE_REPORT_PKG_HEADER
- Una instrucción firmada que consta de los siguientes elementos:
- Estructura de VBS_ENCLAVE_REPORT
- Cero o más bloques de datos variables que constan de los siguientes elementos:
- Estructura de VBS_ENCLAVE_REPORT_VARDATA_HEADER
- Datos descritos por la estructura de VBS_ENCLAVE_REPORT_VARDATA_HEADER
- Una firma
El informe de atestación del enclave proporciona una prueba de que el código específico se ejecuta con un enclave. Si una entidad de validación también obtiene la prueba de que el sistema host se ejecuta con VBS activado, esa entidad puede usar esa prueba junto con el informe de atestación del enclave para comprobar que se ha cargado un enclave específico, rellenado con código específico.
Requisitos
Cliente mínimo compatible | Windows 10, versión 1709 [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2016 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | winenclaveapi.h |
Library | Vertdll.lib |
Archivo DLL | Vertdll.dll |
Consulte también
EnclaveVerifyAttestationReport