função Tbsi_Get_TCG_Log_Ex (tbs.h)
Obtém o WBCL (Log de Configuração de Inicialização do Windows), também chamado de log TCG, do tipo especificado.
Sintaxe
TBS_RESULT Tbsi_Get_TCG_Log_Ex(
[in] UINT32 logType,
[out, optional] PBYTE pbOutput,
[in, out] PUINT32 pcbOutput
);
Parâmetros
[in] logType
O tipo de log a ser recuperado.
[out, optional] pbOutput
Ponteiro para um buffer que recebe e armazena o WBCL. Defina como NULL para estimar o buffer necessário quando o local apontado por pcbOutput também estiver 0 na entrada.
[in, out] pcbOutput
Ponteiro para um inteiro longo sem sinal que especifica o tamanho, em bytes, do buffer de saída. Em caso de êxito, contém o tamanho, em bytes, dos dados apontados por pOutput. Em caso de falha, não contém um valor.
Nota Se pbOutput for NULL e o local apontado por pcbOutput for 0, a função retornará TBS_E_BUFFER_TOO_SMALL. Nesse caso, pcbOutput apontará para o tamanho necessário de pbOutput.
Retornar valor
Valor/código retornado | Descrição |
---|---|
|
A função foi bem-sucedida. |
|
TBS_TCGLOG_DRTM_CURRENT foi solicitado, mas o DRTM não estava habilitado no sistema quando o sistema foi inicializado. |
|
Ocorreu um erro interno de software.
Nota Se TBS_E_INTERNAL_ERROR for retornado, o log de eventos do sistema poderá conter a ID do evento 16385 da origem do evento TBS com código de erro 0x80070032. Isso pode indicar que a plataforma de hardware não fornece um log de eventos TCG para o sistema operacional. Às vezes, isso pode ser resolvido instalando uma atualização do BIOS do fabricante da plataforma.
|
|
Um ponteiro de saída especificado não é válido. |
|
O buffer de saída é muito pequeno. |
|
O buffer de saída é muito grande. |
|
Um dispositivo de segurança TPM (Trusted Platform Module) compatível não pode ser encontrado neste computador. |
|
O dispositivo de segurança TPM (Trusted Platform Module) está desativado. |
Comentários
A função Tbsi_Get_TCG_Log_Ex retorna o Log de Eventos TCG para o sistema e o tamanho do buffer depende do número de eventos.
A função pode retornar um log que usa um formato compatível com algoritmos de hash diferentes, dependendo dos recursos de hardware e das configurações de firmware. Esse log formata cada evento, exceto o primeiro como uma estrutura TCG_PCR_EVENT2:
typedef struct {
TCG_PCRINDEX PCRIndex;
TCG_EVENTTYPE EventType;
TPML_DIGEST_VALUES Digests;
UINT32 EventSize;
UINT8 Event[EventSize];
} TCG_PCR_EVENT2;
typedef struct {
UINT32 Count;
TPMT_HA Digests;
} TPML_DIGEST_VALUES;
typedef struct {
UINT16 HashAlg;
UINT8 Digest[size_varies_with_algorithm];
} TPMT_HA;
O log formata o primeiro evento como uma estrutura TCG_PCR_EVENT , que é descrita posteriormente nesta seção Comentários. A tabela a seguir descreve os valores dos membros dessa estrutura para este primeiro evento.
membro TCG_PCR_EVENT | Valor ou descrição |
---|---|
PCRIndex | 0 |
EventType | EV_NO_ACTION |
Resumo da mensagem | 20 bytes de zeros |
EventSize | O tamanho do membro event |
Evento | Tem um tipo de TCG_EfiSpecIdEventStruct |
A seguir, mostra a sintaxe da estrutura TCG_EfiSpecIdEventStruct que o membro Event da estrutura TCG_PCR_EVENT usa para o primeiro evento de log.
typedef struct {
BYTE[16] Signature;
UINT32 PlatformClass;
UINT8 SpecVersionMinor;
UINT8 SpecVersionMajor;
UINT8 SpecErrata;
UINT8 UintNSize;
UINT32 NumberOfAlgorithms;
TCG_EfiSpecIdEventAlgorithmSize DigestSizes[NumberOfAlgorithms];
UINT8 VendorInfoSize;
UINT8 VendorInfo[VendorInfoSize];
} TCG_EfiSpecIdEventStruct;
typedef struct {
UINT16 HashAlg;
UINT16 DigestSize;
} TCG_EfiSpecIdEventAlgorithmSize;
O membro Signature da estrutura TCG_EfiSpecIdEventStruct é definido como uma cadeia de caracteres ASCII terminada em nulo de "Spec ID Event03" quando o log usa o formato compatível com algoritmos de hash diferentes. A matriz DigestSizes neste primeiro evento contém os tamanhos de resumo para os diferentes algoritmos de hash que o log usa. Quando um analisador inspeciona um evento do tipo TCG_PCR_EVENT2, o analisador pode analisar o membro TPML_DIGEST_VALUES sem informações sobre todos os algoritmos de hash presentes. Os tamanhos de resumo no primeiro evento permitem que o analisador ignore o número correto de bytes para os resumos presentes.
Se o membro Signature não estiver definido como uma cadeia de caracteres ASCII terminada em nulo de "Spec ID Event03", os eventos no log serão do tipo TCG_PCR_EVENT e a estrutura TCG_EfiSpecIdEventStruct não conterá os membros NumberOfAlgorithms e DigestSizes .
O formato de log compatível com diferentes algoritmos de hash permite que a plataforma e o sistema operacional usem SHA1, SHA256 ou outros algoritmos de hash. Se a plataforma der suporte ao algoritmo de hash SHA256 e o usar o formato de log compatível com diferentes algoritmos de hash, a plataforma usará o algoritmo SHA256 em vez de SHA1.
Os eventos definidos pelo Windows no log de eventos TCG são uma tupla de {Type, Length, Value}. Você pode analisar o log usando a seguinte estrutura de TCG_PCR_EVENT da especificação TCG PC Client. Você pode criar uma correlação entre listas de eventos de log usando as informações no TPM PCP Toolkit e na Especificação Principal do TPM.
typedef struct {
TCG_PCRINDEX PCRIndex;
TCG_EVENTTYPE EventType;
TCG_DIGEST Digest;
UINT32 EventSize;
UINT8 Event[EventSize];
} TCG_PCR_EVENT;
O tamanho da memória necessário para o parâmetro pOutputBuf deve ser a constante em TBS_IN_OUT_BUF_SIZE_MAX, definida no arquivo de cabeçalho Tbs.h ou deve ser obtida chamando a função Tbsi_Get_TCG_Log_Ex com um buffer de comprimento zero para obter o tamanho do buffer necessário.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 10, versão 1803 [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | tbs.h |
Biblioteca | Tbs.lib |
DLL | Tbs.dll |