tpm_eventlog.h 2.1 KB

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