iPXE
Data Structures | Macros | Typedefs | Functions | Variables
Tcg2Protocol.h File Reference

TPM2 Protocol as defined in TCG PC Client Platform EFI Protocol Specification Family "2.0". More...

#include <ipxe/efi/IndustryStandard/UefiTcgPlatform.h>
#include <ipxe/efi/IndustryStandard/Tpm20.h>

Go to the source code of this file.

Data Structures

struct  tdEFI_TCG2_VERSION
 
struct  tdEFI_TCG2_BOOT_SERVICE_CAPABILITY
 
struct  EFI_TCG2_EVENT_HEADER
 
struct  tdEFI_TCG2_EVENT
 
struct  tdEFI_TCG2_PROTOCOL
 
struct  tdEFI_TCG2_FINAL_EVENTS_TABLE
 

Macros

#define EFI_TCG2_PROTOCOL_GUID   {0x607f766c, 0x7455, 0x42be, { 0x93, 0x0b, 0xe4, 0xd7, 0x6d, 0xb2, 0x72, 0x0f }}
 
#define EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2   0x00000001
 
#define EFI_TCG2_EVENT_LOG_FORMAT_TCG_2   0x00000002
 
#define EFI_TCG2_BOOT_HASH_ALG_SHA1   0x00000001
 
#define EFI_TCG2_BOOT_HASH_ALG_SHA256   0x00000002
 
#define EFI_TCG2_BOOT_HASH_ALG_SHA384   0x00000004
 
#define EFI_TCG2_BOOT_HASH_ALG_SHA512   0x00000008
 
#define EFI_TCG2_BOOT_HASH_ALG_SM3_256   0x00000010
 
#define EFI_TCG2_EXTEND_ONLY   0x0000000000000001
 
#define PE_COFF_IMAGE   0x0000000000000010
 
#define MAX_PCR_INDEX   23
 
#define EFI_TCG2_EVENT_HEADER_VERSION   1
 
#define EFI_TCG2_FINAL_EVENTS_TABLE_GUID   {0x1e2ed096, 0x30e2, 0x4254, { 0xbd, 0x89, 0x86, 0x3b, 0xbe, 0xf8, 0x23, 0x25 }}
 
#define EFI_TCG2_FINAL_EVENTS_TABLE_VERSION   1
 

Typedefs

typedef struct tdEFI_TCG2_PROTOCOL EFI_TCG2_PROTOCOL
 
typedef struct tdEFI_TCG2_VERSION EFI_TCG2_VERSION
 
typedef UINT32 EFI_TCG2_EVENT_LOG_BITMAP
 
typedef UINT32 EFI_TCG2_EVENT_LOG_FORMAT
 
typedef UINT32 EFI_TCG2_EVENT_ALGORITHM_BITMAP
 
typedef struct tdEFI_TCG2_BOOT_SERVICE_CAPABILITY EFI_TCG2_BOOT_SERVICE_CAPABILITY
 
typedef struct tdEFI_TCG2_EVENT EFI_TCG2_EVENT
 
typedef EFI_STATUS(EFIAPIEFI_TCG2_GET_CAPABILITY) (IN EFI_TCG2_PROTOCOL *This, IN OUT EFI_TCG2_BOOT_SERVICE_CAPABILITY *ProtocolCapability)
 The EFI_TCG2_PROTOCOL GetCapability function call provides protocol capability information and state information. More...
 
typedef EFI_STATUS(EFIAPIEFI_TCG2_GET_EVENT_LOG) (IN EFI_TCG2_PROTOCOL *This, IN EFI_TCG2_EVENT_LOG_FORMAT EventLogFormat, OUT EFI_PHYSICAL_ADDRESS *EventLogLocation, OUT EFI_PHYSICAL_ADDRESS *EventLogLastEntry, OUT BOOLEAN *EventLogTruncated)
 The EFI_TCG2_PROTOCOL Get Event Log function call allows a caller to retrieve the address of a given event log and its last entry. More...
 
typedef EFI_STATUS(EFIAPIEFI_TCG2_HASH_LOG_EXTEND_EVENT) (IN EFI_TCG2_PROTOCOL *This, IN UINT64 Flags, IN EFI_PHYSICAL_ADDRESS DataToHash, IN UINT64 DataToHashLen, IN EFI_TCG2_EVENT *EfiTcgEvent)
 The EFI_TCG2_PROTOCOL HashLogExtendEvent function call provides callers with an opportunity to extend and optionally log events without requiring knowledge of actual TPM commands. More...
 
typedef EFI_STATUS(EFIAPIEFI_TCG2_SUBMIT_COMMAND) (IN EFI_TCG2_PROTOCOL *This, IN UINT32 InputParameterBlockSize, IN UINT8 *InputParameterBlock, IN UINT32 OutputParameterBlockSize, IN UINT8 *OutputParameterBlock)
 This service enables the sending of commands to the TPM. More...
 
typedef EFI_STATUS(EFIAPIEFI_TCG2_GET_ACTIVE_PCR_BANKS) (IN EFI_TCG2_PROTOCOL *This, OUT UINT32 *ActivePcrBanks)
 This service returns the currently active PCR banks. More...
 
typedef EFI_STATUS(EFIAPIEFI_TCG2_SET_ACTIVE_PCR_BANKS) (IN EFI_TCG2_PROTOCOL *This, IN UINT32 ActivePcrBanks)
 This service sets the currently active PCR banks. More...
 
typedef EFI_STATUS(EFIAPIEFI_TCG2_GET_RESULT_OF_SET_ACTIVE_PCR_BANKS) (IN EFI_TCG2_PROTOCOL *This, OUT UINT32 *OperationPresent, OUT UINT32 *Response)
 This service retrieves the result of a previous invocation of SetActivePcrBanks. More...
 
typedef struct tdEFI_TCG2_FINAL_EVENTS_TABLE EFI_TCG2_FINAL_EVENTS_TABLE
 

Functions

 FILE_LICENCE (BSD2_PATENT)
 

Variables

EFI_GUID gEfiTcg2ProtocolGuid
 
EFI_GUID gEfiTcg2FinalEventsTableGuid
 

Detailed Description

TPM2 Protocol as defined in TCG PC Client Platform EFI Protocol Specification Family "2.0".

See http://trustedcomputinggroup.org for the latest specification

Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent

Definition in file Tcg2Protocol.h.

Macro Definition Documentation

◆ EFI_TCG2_PROTOCOL_GUID

#define EFI_TCG2_PROTOCOL_GUID   {0x607f766c, 0x7455, 0x42be, { 0x93, 0x0b, 0xe4, 0xd7, 0x6d, 0xb2, 0x72, 0x0f }}

Definition at line 18 of file Tcg2Protocol.h.

◆ EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2

#define EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2   0x00000001

Definition at line 32 of file Tcg2Protocol.h.

◆ EFI_TCG2_EVENT_LOG_FORMAT_TCG_2

#define EFI_TCG2_EVENT_LOG_FORMAT_TCG_2   0x00000002

Definition at line 33 of file Tcg2Protocol.h.

◆ EFI_TCG2_BOOT_HASH_ALG_SHA1

#define EFI_TCG2_BOOT_HASH_ALG_SHA1   0x00000001

Definition at line 92 of file Tcg2Protocol.h.

◆ EFI_TCG2_BOOT_HASH_ALG_SHA256

#define EFI_TCG2_BOOT_HASH_ALG_SHA256   0x00000002

Definition at line 93 of file Tcg2Protocol.h.

◆ EFI_TCG2_BOOT_HASH_ALG_SHA384

#define EFI_TCG2_BOOT_HASH_ALG_SHA384   0x00000004

Definition at line 94 of file Tcg2Protocol.h.

◆ EFI_TCG2_BOOT_HASH_ALG_SHA512

#define EFI_TCG2_BOOT_HASH_ALG_SHA512   0x00000008

Definition at line 95 of file Tcg2Protocol.h.

◆ EFI_TCG2_BOOT_HASH_ALG_SM3_256

#define EFI_TCG2_BOOT_HASH_ALG_SM3_256   0x00000010

Definition at line 96 of file Tcg2Protocol.h.

◆ EFI_TCG2_EXTEND_ONLY

#define EFI_TCG2_EXTEND_ONLY   0x0000000000000001

Definition at line 101 of file Tcg2Protocol.h.

◆ PE_COFF_IMAGE

#define PE_COFF_IMAGE   0x0000000000000010

Definition at line 105 of file Tcg2Protocol.h.

◆ MAX_PCR_INDEX

#define MAX_PCR_INDEX   23

Definition at line 107 of file Tcg2Protocol.h.

◆ EFI_TCG2_EVENT_HEADER_VERSION

#define EFI_TCG2_EVENT_HEADER_VERSION   1

Definition at line 111 of file Tcg2Protocol.h.

◆ EFI_TCG2_FINAL_EVENTS_TABLE_GUID

#define EFI_TCG2_FINAL_EVENTS_TABLE_GUID   {0x1e2ed096, 0x30e2, 0x4254, { 0xbd, 0x89, 0x86, 0x3b, 0xbe, 0xf8, 0x23, 0x25 }}

Definition at line 315 of file Tcg2Protocol.h.

◆ EFI_TCG2_FINAL_EVENTS_TABLE_VERSION

#define EFI_TCG2_FINAL_EVENTS_TABLE_VERSION   1

Definition at line 335 of file Tcg2Protocol.h.

Typedef Documentation

◆ EFI_TCG2_PROTOCOL

Definition at line 21 of file Tcg2Protocol.h.

◆ EFI_TCG2_VERSION

◆ EFI_TCG2_EVENT_LOG_BITMAP

Definition at line 28 of file Tcg2Protocol.h.

◆ EFI_TCG2_EVENT_LOG_FORMAT

Definition at line 29 of file Tcg2Protocol.h.

◆ EFI_TCG2_EVENT_ALGORITHM_BITMAP

Definition at line 30 of file Tcg2Protocol.h.

◆ EFI_TCG2_BOOT_SERVICE_CAPABILITY

◆ EFI_TCG2_EVENT

◆ EFI_TCG2_GET_CAPABILITY

typedef EFI_STATUS(EFIAPI * EFI_TCG2_GET_CAPABILITY) (IN EFI_TCG2_PROTOCOL *This, IN OUT EFI_TCG2_BOOT_SERVICE_CAPABILITY *ProtocolCapability)

The EFI_TCG2_PROTOCOL GetCapability function call provides protocol capability information and state information.

Parameters
[in]ThisIndicates the calling context
[in,out]ProtocolCapabilityThe caller allocates memory for a EFI_TCG2_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 EFI TCG2 state information up to the number of fields which fit within the size of the structure passed in.
Return values
EFI_SUCCESSOperation completed successfully.
EFI_DEVICE_ERRORThe command was unsuccessful. The ProtocolCapability variable will not be populated.
EFI_INVALID_PARAMETEROne or more of the parameters are incorrect. The ProtocolCapability variable will not be populated.
EFI_BUFFER_TOO_SMALLThe ProtocolCapability variable is too small to hold the full response. It will be partially populated (required Size field will be set).

Definition at line 164 of file Tcg2Protocol.h.

◆ EFI_TCG2_GET_EVENT_LOG

typedef EFI_STATUS(EFIAPI * EFI_TCG2_GET_EVENT_LOG) (IN EFI_TCG2_PROTOCOL *This, IN EFI_TCG2_EVENT_LOG_FORMAT EventLogFormat, OUT EFI_PHYSICAL_ADDRESS *EventLogLocation, OUT EFI_PHYSICAL_ADDRESS *EventLogLastEntry, OUT BOOLEAN *EventLogTruncated)

The EFI_TCG2_PROTOCOL Get Event Log function call allows a caller to retrieve the address of a given event log and its last entry.

Parameters
[in]ThisIndicates the calling context
[in]EventLogFormatThe type of the event log for which the information is requested.
[out]EventLogLocationA pointer to the memory address of the event log.
[out]EventLogLastEntryIf 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.
[out]EventLogTruncatedIf 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.
Return values
EFI_SUCCESSOperation completed successfully.
EFI_INVALID_PARAMETEROne or more of the parameters are incorrect (e.g. asking for an event log whose format is not supported).

Definition at line 188 of file Tcg2Protocol.h.

◆ EFI_TCG2_HASH_LOG_EXTEND_EVENT

typedef EFI_STATUS(EFIAPI * EFI_TCG2_HASH_LOG_EXTEND_EVENT) (IN EFI_TCG2_PROTOCOL *This, IN UINT64 Flags, IN EFI_PHYSICAL_ADDRESS DataToHash, IN UINT64 DataToHashLen, IN EFI_TCG2_EVENT *EfiTcgEvent)

The EFI_TCG2_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).

Parameters
[in]ThisIndicates the calling context
[in]FlagsBitmap providing additional information.
[in]DataToHashPhysical address of the start of the data buffer to be hashed.
[in]DataToHashLenThe length in bytes of the buffer referenced by DataToHash.
[in]EfiTcgEventPointer to data buffer containing information about the event.
Return values
EFI_SUCCESSOperation completed successfully.
EFI_DEVICE_ERRORThe command was unsuccessful.
EFI_VOLUME_FULLThe extend operation occurred, but the event could not be written to one or more event logs.
EFI_INVALID_PARAMETEROne or more of the parameters are incorrect.
EFI_UNSUPPORTEDThe PE/COFF image type is not supported.

Definition at line 217 of file Tcg2Protocol.h.

◆ EFI_TCG2_SUBMIT_COMMAND

typedef EFI_STATUS(EFIAPI * EFI_TCG2_SUBMIT_COMMAND) (IN EFI_TCG2_PROTOCOL *This, IN UINT32 InputParameterBlockSize, IN UINT8 *InputParameterBlock, IN UINT32 OutputParameterBlockSize, IN UINT8 *OutputParameterBlock)

This service enables the sending of commands to the TPM.

Parameters
[in]ThisIndicates the calling context
[in]InputParameterBlockSizeSize of the TPM input parameter block.
[in]InputParameterBlockPointer to the TPM input parameter block.
[in]OutputParameterBlockSizeSize of the TPM output parameter block.
[in]OutputParameterBlockPointer to the TPM output parameter block.
Return values
EFI_SUCCESSThe command byte stream was successfully sent to the device and a response was successfully received.
EFI_DEVICE_ERRORThe command was not successfully sent to the device or a response was not successfully received from the device.
EFI_INVALID_PARAMETEROne or more of the parameters are incorrect.
EFI_BUFFER_TOO_SMALLThe output parameter block is too small.

Definition at line 241 of file Tcg2Protocol.h.

◆ EFI_TCG2_GET_ACTIVE_PCR_BANKS

typedef EFI_STATUS(EFIAPI * EFI_TCG2_GET_ACTIVE_PCR_BANKS) (IN EFI_TCG2_PROTOCOL *This, OUT UINT32 *ActivePcrBanks)

This service returns the currently active PCR banks.

Parameters
[in]ThisIndicates the calling context
[out]ActivePcrBanksPointer to the variable receiving the bitmap of currently active PCR banks.
Return values
EFI_SUCCESSThe bitmap of active PCR banks was stored in the ActivePcrBanks parameter.
EFI_INVALID_PARAMETEROne or more of the parameters are incorrect.

Definition at line 260 of file Tcg2Protocol.h.

◆ EFI_TCG2_SET_ACTIVE_PCR_BANKS

typedef EFI_STATUS(EFIAPI * EFI_TCG2_SET_ACTIVE_PCR_BANKS) (IN EFI_TCG2_PROTOCOL *This, IN UINT32 ActivePcrBanks)

This service sets the currently active PCR banks.

Parameters
[in]ThisIndicates the calling context
[in]ActivePcrBanksBitmap of the requested active PCR banks. At least one bit SHALL be set.
Return values
EFI_SUCCESSThe bitmap in ActivePcrBank parameter is already active.
EFI_INVALID_PARAMETEROne or more of the parameters are incorrect.

Definition at line 276 of file Tcg2Protocol.h.

◆ EFI_TCG2_GET_RESULT_OF_SET_ACTIVE_PCR_BANKS

typedef EFI_STATUS(EFIAPI * EFI_TCG2_GET_RESULT_OF_SET_ACTIVE_PCR_BANKS) (IN EFI_TCG2_PROTOCOL *This, OUT UINT32 *OperationPresent, OUT UINT32 *Response)

This service retrieves the result of a previous invocation of SetActivePcrBanks.

Parameters
[in]ThisIndicates the calling context
[out]OperationPresentNon-zero value to indicate a SetActivePcrBank operation was invoked during the last boot.
[out]ResponseThe response from the SetActivePcrBank request.
Return values
EFI_SUCCESSThe result value could be returned.
EFI_INVALID_PARAMETEROne or more of the parameters are incorrect.

Definition at line 293 of file Tcg2Protocol.h.

◆ EFI_TCG2_FINAL_EVENTS_TABLE

Function Documentation

◆ FILE_LICENCE()

FILE_LICENCE ( BSD2_PATENT  )

Variable Documentation

◆ gEfiTcg2ProtocolGuid

EFI_GUID gEfiTcg2ProtocolGuid

◆ gEfiTcg2FinalEventsTableGuid

EFI_GUID gEfiTcg2FinalEventsTableGuid