TcgEventLogRecordLib.h 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. /** @file
  2. This library is used by other modules to measure Firmware to TPM.
  3. Copyright (c) 2020, Intel Corporation. All rights reserved. <BR>
  4. SPDX-License-Identifier: BSD-2-Clause-Patent
  5. **/
  6. #ifndef _TCG_EVENTLOGRECORD_LIB_H_
  7. #define _TCG_EVENTLOGRECORD_LIB_H_
  8. #include <Uefi.h>
  9. #pragma pack (1)
  10. #define PLATFORM_FIRMWARE_BLOB_DESC "Fv(XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)"
  11. typedef struct {
  12. UINT8 BlobDescriptionSize;
  13. UINT8 BlobDescription[sizeof (PLATFORM_FIRMWARE_BLOB_DESC)];
  14. EFI_PHYSICAL_ADDRESS BlobBase;
  15. UINT64 BlobLength;
  16. } PLATFORM_FIRMWARE_BLOB2_STRUCT;
  17. #define HANDOFF_TABLE_POINTER_DESC "1234567890ABCDEF"
  18. typedef struct {
  19. UINT8 TableDescriptionSize;
  20. UINT8 TableDescription[sizeof (HANDOFF_TABLE_POINTER_DESC)];
  21. UINT64 NumberOfTables;
  22. EFI_CONFIGURATION_TABLE TableEntry[1];
  23. } HANDOFF_TABLE_POINTERS2_STRUCT;
  24. #pragma pack ()
  25. /**
  26. Get the FvName from the FV header.
  27. Causion: The FV is untrusted input.
  28. @param[in] FvBase Base address of FV image.
  29. @param[in] FvLength Length of FV image.
  30. @return FvName pointer
  31. @retval NULL FvName is NOT found
  32. **/
  33. VOID *
  34. TpmMeasurementGetFvName (
  35. IN EFI_PHYSICAL_ADDRESS FvBase,
  36. IN UINT64 FvLength
  37. );
  38. /**
  39. Measure a FirmwareBlob.
  40. @param[in] PcrIndex PCR Index.
  41. @param[in] Description Description for this FirmwareBlob.
  42. @param[in] FirmwareBlobBase Base address of this FirmwareBlob.
  43. @param[in] FirmwareBlobLength Size in bytes of this FirmwareBlob.
  44. @retval EFI_SUCCESS Operation completed successfully.
  45. @retval EFI_UNSUPPORTED TPM device not available.
  46. @retval EFI_OUT_OF_RESOURCES Out of memory.
  47. @retval EFI_DEVICE_ERROR The operation was unsuccessful.
  48. */
  49. EFI_STATUS
  50. EFIAPI
  51. MeasureFirmwareBlob (
  52. IN UINT32 PcrIndex,
  53. IN CHAR8 *Description OPTIONAL,
  54. IN EFI_PHYSICAL_ADDRESS FirmwareBlobBase,
  55. IN UINT64 FirmwareBlobLength
  56. );
  57. /**
  58. Measure a HandoffTable.
  59. @param[in] PcrIndex PcrIndex of the measurement.
  60. @param[in] Description Description for this HandoffTable.
  61. @param[in] TableGuid GUID of this HandoffTable.
  62. @param[in] TableAddress Base address of this HandoffTable.
  63. @param[in] TableLength Size in bytes of this HandoffTable.
  64. @retval EFI_SUCCESS Operation completed successfully.
  65. @retval EFI_UNSUPPORTED TPM device not available.
  66. @retval EFI_OUT_OF_RESOURCES Out of memory.
  67. @retval EFI_DEVICE_ERROR The operation was unsuccessful.
  68. */
  69. EFI_STATUS
  70. EFIAPI
  71. MeasureHandoffTable (
  72. IN UINT32 PcrIndex,
  73. IN CHAR8 *Description OPTIONAL,
  74. IN EFI_GUID *TableGuid,
  75. IN VOID *TableAddress,
  76. IN UINTN TableLength
  77. );
  78. #endif