Compartilhar via


Função EnclaveGetAttestationReport (winenclaveapi.h)

Obtém um relatório de atestado de enclave que descreve o enclave atual e é assinado pela autoridade responsável pelo tipo do enclave.

Sintaxe

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

Um ponteiro para um buffer de 64 bytes de dados que o enclave deseja inserir em seu relatório assinado. Por exemplo, esse buffer pode incluir um nonce de 256 bits que a terceira parte confiável forneceu, seguido por um hash SHA-256 de dados adicionais que o enclave deseja transmitir, como uma chave pública que corresponde a uma chave privada que o enclave possui. Se esse parâmetro for NULL, o campo correspondente do relatório será preenchido com zeros.

[out] Report

Um ponteiro para um buffer em que o relatório deve ser colocado. Esse relatório pode ser armazenado dentro do intervalo de endereços do enclave ou dentro do espaço de endereço do processo de host. Especifique NULL para indicar que apenas o tamanho do buffer necessário para a saída deve ser calculado e não o relatório em si.

[in] BufferSize

O tamanho do buffer para o qual o parâmetro Report aponta. Se Report for NULL, BufferSize deverá ser zero. Se Report não NULLfor e se o tamanho do relatório for maior que esse valor, um erro será retornado.

[out] OutputSize

Um ponteiro para uma variável que recebe o tamanho do relatório.

Retornar valor

Se essa função for bem-sucedida, ela retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT.

Comentários

EnclaveGetAttestationReport deve ser chamado de dentro de um enclave.

No momento, não há suporte para EnclaveGetAttestationReport para enclaves com um tipo de ENCLAVE_TYPE_SGX. Para enclaves VBS, o relatório que EnclaveGetAttestationReport obtém é assinado usando uma chave específica do VBS.

O relatório de atestado de enclave contém a identidade de todo o código carregado no enclave, bem como políticas que controlam como o enclave está sendo executado, como se o enclave está em execução com o acesso do depurador ativo. O relatório também inclui uma pequena quantidade de informações que o enclave gerou para usar em um protocolo de troca de chaves.

O relatório gerado pelo EnclaveGetAttestationReport consiste nos seguintes itens:

O relatório de atestado de enclave fornece uma prova de que um código específico está em execução com um enclave. Se uma entidade de validação também obtiver uma prova de que o sistema host está em execução com a VBS ativada, essa entidade poderá usar essa prova em conjunto com o relatório de atestado de enclave para verificar se um enclave específico, preenchido com código específico, foi carregado.

Requisitos

   
Cliente mínimo com suporte Windows 10, versão 1709 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2016 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho winenclaveapi.h
Biblioteca Vertdll.lib
DLL Vertdll.dll

Confira também

Funções de enclave

EnclaveVerifyAttestationReport

VBS_ENCLAVE_REPORT

VBS_ENCLAVE_REPORT_PKG_HEADER

VBS_ENCLAVE_REPORT_VARDATA_HEADER

APIs Vertdll disponíveis em enclaves de VBS