REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the MdePkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
		
			
				
	
	
		
			244 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			244 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   This protocol is defined to abstract TPM2 hardware access in boot phase.
 | |
| 
 | |
| Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.<BR>
 | |
| SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef __TREE_H__
 | |
| #define __TREE_H__
 | |
| 
 | |
| #include <IndustryStandard/UefiTcgPlatform.h>
 | |
| #include <IndustryStandard/Tpm20.h>
 | |
| 
 | |
| #define EFI_TREE_PROTOCOL_GUID \
 | |
|   {0x607f766c, 0x7455, 0x42be, 0x93, 0x0b, 0xe4, 0xd7, 0x6d, 0xb2, 0x72, 0x0f}
 | |
| 
 | |
| typedef struct _EFI_TREE_PROTOCOL EFI_TREE_PROTOCOL;
 | |
| 
 | |
| typedef struct _TREE_VERSION {
 | |
|   UINT8    Major;
 | |
|   UINT8    Minor;
 | |
| } TREE_VERSION;
 | |
| 
 | |
| typedef UINT32 TREE_EVENT_LOG_BITMAP;
 | |
| typedef UINT32 TREE_EVENT_LOG_FORMAT;
 | |
| 
 | |
| #define TREE_EVENT_LOG_FORMAT_TCG_1_2  0x00000001
 | |
| 
 | |
| typedef struct _TREE_BOOT_SERVICE_CAPABILITY {
 | |
|   //
 | |
|   // Allocated size of the structure passed in
 | |
|   //
 | |
|   UINT8                    Size;
 | |
|   //
 | |
|   // Version of the TREE_BOOT_SERVICE_CAPABILITY structure itself.
 | |
|   // For this version of the protocol, the Major version shall be set to 1
 | |
|   // and the Minor version shall be set to 0.
 | |
|   //
 | |
|   TREE_VERSION             StructureVersion;
 | |
|   //
 | |
|   // Version of the TrEE protocol.
 | |
|   // For this version of the protocol, the Major version shall be set to 1
 | |
|   // and the Minor version shall be set to 0.
 | |
|   //
 | |
|   TREE_VERSION             ProtocolVersion;
 | |
|   //
 | |
|   // Supported hash algorithms
 | |
|   //
 | |
|   UINT32                   HashAlgorithmBitmap;
 | |
|   //
 | |
|   // Bitmap of supported event log formats
 | |
|   //
 | |
|   TREE_EVENT_LOG_BITMAP    SupportedEventLogs;
 | |
|   //
 | |
|   // False = TrEE not present
 | |
|   //
 | |
|   BOOLEAN                  TrEEPresentFlag;
 | |
|   //
 | |
|   // Max size (in bytes) of a command that can be sent to the TrEE
 | |
|   //
 | |
|   UINT16                   MaxCommandSize;
 | |
|   //
 | |
|   // Max size (in bytes) of a response that can be provided by the TrEE
 | |
|   //
 | |
|   UINT16                   MaxResponseSize;
 | |
|   //
 | |
|   // 4-byte Vendor ID (see Trusted Computing Group, "TCG Vendor ID Registry,"
 | |
|   // Version 1.0, Revision 0.1, August 31, 2007, "TPM Capabilities Vendor ID" section)
 | |
|   //
 | |
|   UINT32                   ManufacturerID;
 | |
| } TREE_BOOT_SERVICE_CAPABILITY_1_0;
 | |
| 
 | |
| typedef TREE_BOOT_SERVICE_CAPABILITY_1_0 TREE_BOOT_SERVICE_CAPABILITY;
 | |
| 
 | |
| #define TREE_BOOT_HASH_ALG_SHA1    0x00000001
 | |
| #define TREE_BOOT_HASH_ALG_SHA256  0x00000002
 | |
| #define TREE_BOOT_HASH_ALG_SHA384  0x00000004
 | |
| #define TREE_BOOT_HASH_ALG_SHA512  0x00000008
 | |
| 
 | |
| //
 | |
| // This bit is shall be set when an event shall be extended but not logged.
 | |
| //
 | |
| #define TREE_EXTEND_ONLY  0x0000000000000001
 | |
| //
 | |
| // This bit shall be set when the intent is to measure a PE/COFF image.
 | |
| //
 | |
| #define PE_COFF_IMAGE  0x0000000000000010
 | |
| 
 | |
| typedef UINT32 TrEE_PCRINDEX;
 | |
| typedef UINT32 TrEE_EVENTTYPE;
 | |
| 
 | |
| #define MAX_PCR_INDEX              23
 | |
| #define TREE_EVENT_HEADER_VERSION  1
 | |
| 
 | |
| #pragma pack(1)
 | |
| 
 | |
| typedef struct {
 | |
|   //
 | |
|   // Size of the event header itself (sizeof(TrEE_EVENT_HEADER)).
 | |
|   //
 | |
|   UINT32            HeaderSize;
 | |
|   //
 | |
|   // Header version. For this version of this specification, the value shall be 1.
 | |
|   //
 | |
|   UINT16            HeaderVersion;
 | |
|   //
 | |
|   // Index of the PCR that shall be extended (0 - 23).
 | |
|   //
 | |
|   TrEE_PCRINDEX     PCRIndex;
 | |
|   //
 | |
|   // Type of the event that shall be extended (and optionally logged).
 | |
|   //
 | |
|   TrEE_EVENTTYPE    EventType;
 | |
| } TrEE_EVENT_HEADER;
 | |
| 
 | |
| typedef struct {
 | |
|   //
 | |
|   // Total size of the event including the Size component, the header and the Event data.
 | |
|   //
 | |
|   UINT32               Size;
 | |
|   TrEE_EVENT_HEADER    Header;
 | |
|   UINT8                Event[1];
 | |
| } TrEE_EVENT;
 | |
| 
 | |
| #pragma pack()
 | |
| 
 | |
| /**
 | |
|   The EFI_TREE_PROTOCOL GetCapability function call provides protocol
 | |
|   capability information and state information about the TrEE.
 | |
| 
 | |
|   @param[in]  This               Indicates the calling context
 | |
|   @param[out] ProtocolCapability The caller allocates memory for a TREE_BOOT_SERVICE_CAPABILITY
 | |
|                                  structure and sets the size field to the size of the structure allocated.
 | |
|                                  The callee fills in the fields with the EFI protocol capability information
 | |
|                                  and the current TrEE state information up to the number of fields which
 | |
|                                  fit within the size of the structure passed in.
 | |
| 
 | |
|   @retval EFI_SUCCESS            Operation completed successfully.
 | |
|   @retval EFI_DEVICE_ERROR       The command was unsuccessful.
 | |
|                                  The ProtocolCapability variable will not be populated.
 | |
|   @retval EFI_INVALID_PARAMETER  One or more of the parameters are incorrect.
 | |
|                                  The ProtocolCapability variable will not be populated.
 | |
|   @retval EFI_BUFFER_TOO_SMALL   The ProtocolCapability variable is too small to hold the full response.
 | |
|                                  It will be partially populated (required Size field will be set).
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_TREE_GET_CAPABILITY)(
 | |
|   IN EFI_TREE_PROTOCOL                *This,
 | |
|   IN OUT TREE_BOOT_SERVICE_CAPABILITY *ProtocolCapability
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   The EFI_TREE_PROTOCOL Get Event Log function call allows a caller to
 | |
|   retrieve the address of a given event log and its last entry.
 | |
| 
 | |
|   @param[in]  This               Indicates the calling context
 | |
|   @param[in]  EventLogFormat     The type of the event log for which the information is requested.
 | |
|   @param[out] EventLogLocation   A pointer to the memory address of the event log.
 | |
|   @param[out] EventLogLastEntry  If the Event Log contains more than one entry, this is a pointer to the
 | |
|                                  address of the start of the last entry in the event log in memory.
 | |
|   @param[out] EventLogTruncated  If the Event Log is missing at least one entry because an event would
 | |
|                                  have exceeded the area allocated for events, this value is set to TRUE.
 | |
|                                  Otherwise, the value will be FALSE and the Event Log will be complete.
 | |
| 
 | |
|   @retval EFI_SUCCESS            Operation completed successfully.
 | |
|   @retval EFI_INVALID_PARAMETER  One or more of the parameters are incorrect
 | |
|                                  (e.g. asking for an event log whose format is not supported).
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_TREE_GET_EVENT_LOG)(
 | |
|   IN EFI_TREE_PROTOCOL     *This,
 | |
|   IN TREE_EVENT_LOG_FORMAT EventLogFormat,
 | |
|   OUT EFI_PHYSICAL_ADDRESS *EventLogLocation,
 | |
|   OUT EFI_PHYSICAL_ADDRESS *EventLogLastEntry,
 | |
|   OUT BOOLEAN              *EventLogTruncated
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   The EFI_TREE_PROTOCOL HashLogExtendEvent function call provides callers with
 | |
|   an opportunity to extend and optionally log events without requiring
 | |
|   knowledge of actual TPM commands.
 | |
|   The extend operation will occur even if this function cannot create an event
 | |
|   log entry (e.g. due to the event log being full).
 | |
| 
 | |
|   @param[in]  This               Indicates the calling context
 | |
|   @param[in]  Flags              Bitmap providing additional information.
 | |
|   @param[in]  DataToHash         Physical address of the start of the data buffer to be hashed.
 | |
|   @param[in]  DataToHashLen      The length in bytes of the buffer referenced by DataToHash.
 | |
|   @param[in]  Event              Pointer to data buffer containing information about the event.
 | |
| 
 | |
|   @retval EFI_SUCCESS            Operation completed successfully.
 | |
|   @retval EFI_DEVICE_ERROR       The command was unsuccessful.
 | |
|   @retval EFI_VOLUME_FULL        The extend operation occurred, but the event could not be written to one or more event logs.
 | |
|   @retval EFI_INVALID_PARAMETER  One or more of the parameters are incorrect.
 | |
|   @retval EFI_UNSUPPORTED        The PE/COFF image type is not supported.
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_TREE_HASH_LOG_EXTEND_EVENT)(
 | |
|   IN EFI_TREE_PROTOCOL    *This,
 | |
|   IN UINT64               Flags,
 | |
|   IN EFI_PHYSICAL_ADDRESS DataToHash,
 | |
|   IN UINT64               DataToHashLen,
 | |
|   IN TrEE_EVENT           *Event
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This service enables the sending of commands to the TrEE.
 | |
| 
 | |
|   @param[in]  This                     Indicates the calling context
 | |
|   @param[in]  InputParameterBlockSize  Size of the TrEE input parameter block.
 | |
|   @param[in]  InputParameterBlock      Pointer to the TrEE input parameter block.
 | |
|   @param[in]  OutputParameterBlockSize Size of the TrEE output parameter block.
 | |
|   @param[in]  OutputParameterBlock     Pointer to the TrEE output parameter block.
 | |
| 
 | |
|   @retval EFI_SUCCESS            The command byte stream was successfully sent to the device and a response was successfully received.
 | |
|   @retval EFI_DEVICE_ERROR       The command was not successfully sent to the device or a response was not successfully received from the device.
 | |
|   @retval EFI_INVALID_PARAMETER  One or more of the parameters are incorrect.
 | |
|   @retval EFI_BUFFER_TOO_SMALL   The output parameter block is too small.
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_TREE_SUBMIT_COMMAND)(
 | |
|   IN EFI_TREE_PROTOCOL *This,
 | |
|   IN UINT32            InputParameterBlockSize,
 | |
|   IN UINT8             *InputParameterBlock,
 | |
|   IN UINT32            OutputParameterBlockSize,
 | |
|   IN UINT8             *OutputParameterBlock
 | |
|   );
 | |
| 
 | |
| struct _EFI_TREE_PROTOCOL {
 | |
|   EFI_TREE_GET_CAPABILITY           GetCapability;
 | |
|   EFI_TREE_GET_EVENT_LOG            GetEventLog;
 | |
|   EFI_TREE_HASH_LOG_EXTEND_EVENT    HashLogExtendEvent;
 | |
|   EFI_TREE_SUBMIT_COMMAND           SubmitCommand;
 | |
| };
 | |
| 
 | |
| extern EFI_GUID  gEfiTrEEProtocolGuid;
 | |
| 
 | |
| #endif
 |