1 /* SPDX-License-Identifier: GPL-2.0 */ 2 3 #ifndef __LINUX_TPM_EVENTLOG_H__ 4 #define __LINUX_TPM_EVENTLOG_H__ 5 6 #include <crypto/hash_info.h> 7 8 #define TCG_EVENT_NAME_LEN_MAX 255 9 #define MAX_TEXT_EVENT 1000 /* Max event string length */ 10 #define ACPI_TCPA_SIG "TCPA" /* 0x41504354 /'TCPA' */ 11 #define TPM2_ACTIVE_PCR_BANKS 3 12 13 #define EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2 0x1 14 #define EFI_TCG2_EVENT_LOG_FORMAT_TCG_2 0x2 15 16 #ifdef CONFIG_PPC64 17 #define do_endian_conversion(x) be32_to_cpu(x) 18 #else 19 #define do_endian_conversion(x) x 20 #endif 21 22 enum bios_platform_class { 23 BIOS_CLIENT = 0x00, 24 BIOS_SERVER = 0x01, 25 }; 26 27 struct tcpa_event { 28 u32 pcr_index; 29 u32 event_type; 30 u8 pcr_value[20]; /* SHA1 */ 31 u32 event_size; 32 u8 event_data[0]; 33 }; 34 35 enum tcpa_event_types { 36 PREBOOT = 0, 37 POST_CODE, 38 UNUSED, 39 NO_ACTION, 40 SEPARATOR, 41 ACTION, 42 EVENT_TAG, 43 SCRTM_CONTENTS, 44 SCRTM_VERSION, 45 CPU_MICROCODE, 46 PLATFORM_CONFIG_FLAGS, 47 TABLE_OF_DEVICES, 48 COMPACT_HASH, 49 IPL, 50 IPL_PARTITION_DATA, 51 NONHOST_CODE, 52 NONHOST_CONFIG, 53 NONHOST_INFO, 54 }; 55 56 struct tcpa_pc_event { 57 u32 event_id; 58 u32 event_size; 59 u8 event_data[0]; 60 }; 61 62 enum tcpa_pc_event_ids { 63 SMBIOS = 1, 64 BIS_CERT, 65 POST_BIOS_ROM, 66 ESCD, 67 CMOS, 68 NVRAM, 69 OPTION_ROM_EXEC, 70 OPTION_ROM_CONFIG, 71 OPTION_ROM_MICROCODE = 10, 72 S_CRTM_VERSION, 73 S_CRTM_CONTENTS, 74 POST_CONTENTS, 75 HOST_TABLE_OF_DEVICES, 76 }; 77 78 /* http://www.trustedcomputinggroup.org/tcg-efi-protocol-specification/ */ 79 80 struct tcg_efi_specid_event_algs { 81 u16 alg_id; 82 u16 digest_size; 83 } __packed; 84 85 struct tcg_efi_specid_event { 86 u8 signature[16]; 87 u32 platform_class; 88 u8 spec_version_minor; 89 u8 spec_version_major; 90 u8 spec_errata; 91 u8 uintnsize; 92 u32 num_algs; 93 struct tcg_efi_specid_event_algs digest_sizes[TPM2_ACTIVE_PCR_BANKS]; 94 u8 vendor_info_size; 95 u8 vendor_info[0]; 96 } __packed; 97 98 struct tcg_pcr_event { 99 u32 pcr_idx; 100 u32 event_type; 101 u8 digest[20]; 102 u32 event_size; 103 u8 event[0]; 104 } __packed; 105 106 struct tcg_event_field { 107 u32 event_size; 108 u8 event[0]; 109 } __packed; 110 111 struct tpm2_digest { 112 u16 alg_id; 113 u8 digest[SHA512_DIGEST_SIZE]; 114 } __packed; 115 116 struct tcg_pcr_event2 { 117 u32 pcr_idx; 118 u32 event_type; 119 u32 count; 120 struct tpm2_digest digests[TPM2_ACTIVE_PCR_BANKS]; 121 struct tcg_event_field event; 122 } __packed; 123 124 #endif 125