/** @file | |
This library is used by other modules to measure Firmware to TPM. | |
Copyright (c) 2020, Intel Corporation. All rights reserved. <BR> | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#ifndef _TCG_EVENTLOGRECORD_LIB_H_ | |
#define _TCG_EVENTLOGRECORD_LIB_H_ | |
#include <Uefi.h> | |
#pragma pack (1) | |
#define PLATFORM_FIRMWARE_BLOB_DESC "Fv(XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)" | |
typedef struct { | |
UINT8 BlobDescriptionSize; | |
UINT8 BlobDescription[sizeof (PLATFORM_FIRMWARE_BLOB_DESC)]; | |
EFI_PHYSICAL_ADDRESS BlobBase; | |
UINT64 BlobLength; | |
} PLATFORM_FIRMWARE_BLOB2_STRUCT; | |
#define HANDOFF_TABLE_POINTER_DESC "1234567890ABCDEF" | |
typedef struct { | |
UINT8 TableDescriptionSize; | |
UINT8 TableDescription[sizeof (HANDOFF_TABLE_POINTER_DESC)]; | |
UINT64 NumberOfTables; | |
EFI_CONFIGURATION_TABLE TableEntry[1]; | |
} HANDOFF_TABLE_POINTERS2_STRUCT; | |
#pragma pack () | |
/** | |
Get the FvName from the FV header. | |
Causion: The FV is untrusted input. | |
@param[in] FvBase Base address of FV image. | |
@param[in] FvLength Length of FV image. | |
@return FvName pointer | |
@retval NULL FvName is NOT found | |
**/ | |
VOID * | |
TpmMeasurementGetFvName ( | |
IN EFI_PHYSICAL_ADDRESS FvBase, | |
IN UINT64 FvLength | |
); | |
/** | |
Measure a FirmwareBlob. | |
@param[in] PcrIndex PCR Index. | |
@param[in] Description Description for this FirmwareBlob. | |
@param[in] FirmwareBlobBase Base address of this FirmwareBlob. | |
@param[in] FirmwareBlobLength Size in bytes of this FirmwareBlob. | |
@retval EFI_SUCCESS Operation completed successfully. | |
@retval EFI_UNSUPPORTED TPM device not available. | |
@retval EFI_OUT_OF_RESOURCES Out of memory. | |
@retval EFI_DEVICE_ERROR The operation was unsuccessful. | |
*/ | |
EFI_STATUS | |
EFIAPI | |
MeasureFirmwareBlob ( | |
IN UINT32 PcrIndex, | |
IN CHAR8 *Description OPTIONAL, | |
IN EFI_PHYSICAL_ADDRESS FirmwareBlobBase, | |
IN UINT64 FirmwareBlobLength | |
); | |
/** | |
Measure a HandoffTable. | |
@param[in] PcrIndex PcrIndex of the measurement. | |
@param[in] Description Description for this HandoffTable. | |
@param[in] TableGuid GUID of this HandoffTable. | |
@param[in] TableAddress Base address of this HandoffTable. | |
@param[in] TableLength Size in bytes of this HandoffTable. | |
@retval EFI_SUCCESS Operation completed successfully. | |
@retval EFI_UNSUPPORTED TPM device not available. | |
@retval EFI_OUT_OF_RESOURCES Out of memory. | |
@retval EFI_DEVICE_ERROR The operation was unsuccessful. | |
*/ | |
EFI_STATUS | |
EFIAPI | |
MeasureHandoffTable ( | |
IN UINT32 PcrIndex, | |
IN CHAR8 *Description OPTIONAL, | |
IN EFI_GUID *TableGuid, | |
IN VOID *TableAddress, | |
IN UINTN TableLength | |
); | |
#endif |