funzione Tbsi_Get_TCG_Log_Ex (tbs.h)
Ottiene il log di configurazione di avvio di Windows (WBCL), noto anche come log TCG, del tipo specificato.
Sintassi
TBS_RESULT Tbsi_Get_TCG_Log_Ex(
[in] UINT32 logType,
[out, optional] PBYTE pbOutput,
[in, out] PUINT32 pcbOutput
);
Parametri
[in] logType
Tipo di log da recuperare.
[out, optional] pbOutput
Puntatore a un buffer che riceve e archivia WBCL. Impostare su NULL per stimare il buffer richiesto quando la posizione puntata da pcbOutput è anche 0 in input.
[in, out] pcbOutput
Puntatore a un intero lungo senza segno che specifica le dimensioni, in byte, del buffer di output. In caso di esito positivo, contiene le dimensioni, in byte, dei dati a cui fa riferimento pOutput. In caso di errore, non contiene un valore.
Nota Se pbOutput è NULL e la posizione puntata da pcbOutput è 0, la funzione restituisce TBS_E_BUFFER_TOO_SMALL. In tal caso , pcbOutput punta alla dimensione necessaria di pbOutput.
Valore restituito
Codice/valore restituito | Descrizione |
---|---|
|
Funzione completata. |
|
TBS_TCGLOG_DRTM_CURRENT è stato richiesto, ma DRTM non è stato abilitato nel sistema quando il sistema è stato avviato. |
|
Si è verificato un errore interno del software.
Nota Se TBS_E_INTERNAL_ERROR viene restituito, il registro eventi di sistema può contenere l'ID evento 16385 dall'origine evento TBS con codice di errore 0x80070032. Ciò può indicare che la piattaforma hardware non fornisce un registro eventi TCG al sistema operativo. A volte questo può essere risolto installando un aggiornamento BIOS dal produttore della piattaforma.
|
|
Un puntatore di output specificato non è valido. |
|
Il buffer di output è troppo piccolo. |
|
Il buffer di output è troppo grande. |
|
Non è possibile trovare un dispositivo di sicurezza TPM (Trusted Platform Module) compatibile in questo computer. |
|
Il dispositivo di sicurezza TPM (Trusted Platform Module) viene disattivato. |
Commenti
La funzione Tbsi_Get_TCG_Log_Ex restituisce il registro eventi TCG per il sistema e la dimensione del buffer dipende dal numero di eventi.
La funzione può restituire un log che usa un formato compatibile con algoritmi di hash diversi, a seconda delle funzionalità hardware e delle impostazioni del firmware. Questo log formatta ogni evento tranne il primo come struttura di 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;
Il log formatta il primo evento come struttura TCG_PCR_EVENT , descritta più avanti in questa sezione Osservazioni. Nella tabella seguente vengono descritti i valori dei membri di questa struttura per questo primo evento.
TCG_PCR_EVENT membro | Valore o descrizione |
---|---|
PCRIndex | 0 |
EventType | EV_NO_ACTION |
Digest | 20 byte di zero |
EventSize | Dimensione del membro evento |
Event | Ha un tipo di TCG_EfiSpecIdEventStruct |
Di seguito viene illustrata la sintassi della struttura TCG_EfiSpecIdEventStruct utilizzata dal membro Eventodella strutturaTCG_PCR_EVENT per il primo evento di 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;
Il membro Signature della struttura TCG_EfiSpecIdEventStruct è impostato su una stringa ASCII con terminazione null di "Spec ID Event03" quando il log usa il formato compatibile con algoritmi di hash diversi. La matrice DigestSizes in questo primo evento contiene le dimensioni del digest per i diversi algoritmi di hashing usati dal log. Quando un parser controlla un evento di tipo TCG_PCR_EVENT2, il parser può analizzare il membro TPML_DIGEST_VALUES senza informazioni su tutti gli algoritmi di hash presenti. Le dimensioni del digest nel primo evento consentono al parser di ignorare il numero corretto di byte per i digest presenti.
Se il membro Signature non è impostato su una stringa ASCII con terminazione null di "Spec ID Event03", gli eventi nel log sono di tipo TCG_PCR_EVENT e la struttura TCG_EfiSpecIdEventStruct non contiene i membri NumberOfAlgorithms e DigestSizes.
Il formato di log compatibile con algoritmi di hash diversi consente alla piattaforma e al sistema operativo di usare SHA1, SHA256 o altri algoritmi di hashing. Se la piattaforma supporta l'algoritmo hash SHA256 e usa il formato di log compatibile con algoritmi hash diversi, la piattaforma usa l'algoritmo SHA256 anziché SHA1.
Gli eventi definiti da Windows nel registro eventi TCG sono una tupla di {Type, Length, Value}. È possibile analizzare il log usando la struttura di TCG_PCR_EVENT seguente dalla specifica client pc TCG. È possibile creare una correlazione tra elenchi di eventi di log usando le informazioni contenute in TPM PCP Toolkit e la specifica principale TPM.
typedef struct {
TCG_PCRINDEX PCRIndex;
TCG_EVENTTYPE EventType;
TCG_DIGEST Digest;
UINT32 EventSize;
UINT8 Event[EventSize];
} TCG_PCR_EVENT;
Le dimensioni di memoria necessarie per il parametro pOutputBuf devono essere la costante in TBS_IN_OUT_BUF_SIZE_MAX, definita nel file di intestazione Tbs.h oppure deve essere ottenuta chiamando la funzione Tbsi_Get_TCG_Log_Ex con un buffer di lunghezza zero per ottenere le dimensioni del buffer necessarie.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 10, versione 1803 [solo app desktop] |
Server minimo supportato | Windows Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | tbs.h |
Libreria | Tbs.lib |
DLL | Tbs.dll |