fungsi Tbsi_Get_TCG_Log_Ex (tbs.h)
Mendapatkan Log Konfigurasi Boot Windows (WBCL), juga disebut sebagai log TCG, dari jenis yang ditentukan.
Sintaks
TBS_RESULT Tbsi_Get_TCG_Log_Ex(
[in] UINT32 logType,
[out, optional] PBYTE pbOutput,
[in, out] PUINT32 pcbOutput
);
Parameter
[in] logType
Jenis log yang akan diambil.
[out, optional] pbOutput
Arahkan ke buffer yang menerima dan menyimpan WBCL. Atur ke NULL untuk memperkirakan buffer yang diperlukan saat lokasi yang ditunjukkan oleh pcbOutput juga 0 pada input.
[in, out] pcbOutput
Penunjuk ke bilangan bulat panjang yang tidak ditandatangani yang menentukan ukuran, dalam byte, dari buffer output. Jika berhasil, berisi ukuran, dalam byte, data yang ditunjukkan oleh pOutput. Jika gagal, tidak berisi nilai.
Catatan Jika pbOutputADALAH NULL dan lokasi yang diacu oleh pcbOutput adalah 0, fungsi akan mengembalikan TBS_E_BUFFER_TOO_SMALL. Dalam hal ini, pcbOutput akan menunjuk ke ukuran pbOutput yang diperlukan.
Nilai kembali
Mengembalikan kode/nilai | Deskripsi |
---|---|
|
Fungsi berhasil. |
|
TBS_TCGLOG_DRTM_CURRENT diminta tetapi DRTM tidak diaktifkan pada sistem ketika sistem di-boot. |
|
Terjadi kesalahan perangkat lunak internal.
Catatan Jika TBS_E_INTERNAL_ERROR dikembalikan, log peristiwa sistem mungkin berisi ID peristiwa 16385 dari sumber peristiwa TBS dengan kode kesalahan 0x80070032. Ini mungkin menunjukkan bahwa platform perangkat keras tidak menyediakan log peristiwa TCG ke sistem operasi. Terkadang ini dapat diselesaikan dengan menginstal peningkatan BIOS dari produsen platform.
|
|
Penunjuk output yang ditentukan tidak valid. |
|
Buffer output terlalu kecil. |
|
Buffer output terlalu besar. |
|
Perangkat Keamanan Modul Platform Tepercaya (TPM) yang kompatibel tidak dapat ditemukan pada komputer ini. |
|
Perangkat Keamanan Modul Platform Tepercaya (TPM) dinonaktifkan. |
Keterangan
Fungsi Tbsi_Get_TCG_Log_Ex mengembalikan Log Peristiwa TCG untuk sistem, dan ukuran buffer tergantung pada jumlah peristiwa.
Fungsi ini dapat mengembalikan log yang menggunakan format yang kompatibel dengan algoritma hashing yang berbeda, tergantung pada kemampuan perangkat keras dan pengaturan firmware. Log ini memformat setiap peristiwa kecuali yang pertama sebagai struktur 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;
Log memformat peristiwa pertama sebagai struktur TCG_PCR_EVENT , yang dijelaskan nanti di bagian Keterangan ini. Tabel berikut ini menjelaskan nilai anggota struktur ini untuk peristiwa pertama ini.
anggota TCG_PCR_EVENT | Nilai atau deskripsi |
---|---|
PCRIndex | 0 |
EventType | EV_NO_ACTION |
Mencerna | 20 byte nol |
EventSize | Ukuran anggota Peristiwa |
Kejadian | Memiliki jenis TCG_EfiSpecIdEventStruct |
Berikut ini memperlihatkan sintaks struktur TCG_EfiSpecIdEventStruct yang digunakan anggota Peristiwa dari struktur TCG_PCR_EVENT untuk peristiwa log pertama.
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;
Anggota Tanda Tangan dari struktur TCG_EfiSpecIdEventStruct diatur ke string ASCII null-dihentikan dari "Spec ID Event03" saat log menggunakan format yang kompatibel dengan algoritma hash yang berbeda. Array DigestSizes dalam peristiwa pertama ini berisi ukuran hash yang berbeda yang digunakan log. Ketika pengurai memeriksa peristiwa jenis TCG_PCR_EVENT2, pengurai dapat mengurai anggota TPML_DIGEST_VALUES tanpa informasi tentang semua algoritma hashing yang ada. Ukuran hash dalam peristiwa pertama memungkinkan pengurai untuk melewati jumlah byte yang benar untuk hash yang ada.
Jika anggota Tanda Tangan tidak diatur ke string ASCII null-dihentikan dari "Spec ID Event03", maka peristiwa dalam log berjenis TCG_PCR_EVENT, dan struktur TCG_EfiSpecIdEventStruct tidak berisi anggota NumberOfAlgorithms dan DigestSizes .
Format log yang kompatibel dengan algoritma hashing yang berbeda memungkinkan platform dan sistem operasi untuk menggunakan SHA1, SHA256, atau algoritma hashing lainnya. Jika platform mendukung algoritma hash SHA256 dan menggunakan format log yang kompatibel dengan algoritma hashing yang berbeda, platform menggunakan algoritma SHA256 alih-alih SHA1.
Peristiwa yang ditentukan Windows dalam log peristiwa TCG adalah tuple dari {Type, Length, Value}. Anda dapat mengurai log menggunakan struktur TCG_PCR_EVENT berikut dari spesifikasi Klien PC TCG. Anda dapat membuat korelasi antara daftar peristiwa log menggunakan informasi di Toolkit PCP TPM dan Spesifikasi Utama TPM.
typedef struct {
TCG_PCRINDEX PCRIndex;
TCG_EVENTTYPE EventType;
TCG_DIGEST Digest;
UINT32 EventSize;
UINT8 Event[EventSize];
} TCG_PCR_EVENT;
Ukuran memori yang diperlukan untuk parameter pOutputBuf harus menjadi konstanta dalam TBS_IN_OUT_BUF_SIZE_MAX, yang ditentukan dalam file header Tbs.h, atau harus diperoleh dengan memanggil fungsi Tbsi_Get_TCG_Log_Ex dengan buffer panjang nol untuk mendapatkan ukuran buffer yang diperlukan.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 10, versi 1803 [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server [hanya aplikasi desktop] |
Target Platform | Windows |
Header | tbs.h |
Pustaka | Tbs.lib |
DLL | Tbs.dll |