xref: /illumos-gate/usr/src/boot/efi/include/Protocol/Tcg2Protocol.h (revision f334afcfaebea1b7dc3430015651d8d748fa8a3e)
1*f334afcfSToomas Soome /** @file
2*f334afcfSToomas Soome   TPM2 Protocol as defined in TCG PC Client Platform EFI Protocol Specification Family "2.0".
3*f334afcfSToomas Soome   See http://trustedcomputinggroup.org for the latest specification
4*f334afcfSToomas Soome 
5*f334afcfSToomas Soome Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
6*f334afcfSToomas Soome SPDX-License-Identifier: BSD-2-Clause-Patent
7*f334afcfSToomas Soome 
8*f334afcfSToomas Soome **/
9*f334afcfSToomas Soome 
10*f334afcfSToomas Soome #ifndef __TCG2_PROTOCOL_H__
11*f334afcfSToomas Soome #define __TCG2_PROTOCOL_H__
12*f334afcfSToomas Soome 
13*f334afcfSToomas Soome #include <IndustryStandard/UefiTcgPlatform.h>
14*f334afcfSToomas Soome #include <IndustryStandard/Tpm20.h>
15*f334afcfSToomas Soome 
16*f334afcfSToomas Soome #define EFI_TCG2_PROTOCOL_GUID \
17*f334afcfSToomas Soome   {0x607f766c, 0x7455, 0x42be, { 0x93, 0x0b, 0xe4, 0xd7, 0x6d, 0xb2, 0x72, 0x0f }}
18*f334afcfSToomas Soome 
19*f334afcfSToomas Soome typedef struct tdEFI_TCG2_PROTOCOL EFI_TCG2_PROTOCOL;
20*f334afcfSToomas Soome 
21*f334afcfSToomas Soome typedef struct tdEFI_TCG2_VERSION {
22*f334afcfSToomas Soome   UINT8    Major;
23*f334afcfSToomas Soome   UINT8    Minor;
24*f334afcfSToomas Soome } EFI_TCG2_VERSION;
25*f334afcfSToomas Soome 
26*f334afcfSToomas Soome typedef UINT32 EFI_TCG2_EVENT_LOG_BITMAP;
27*f334afcfSToomas Soome typedef UINT32 EFI_TCG2_EVENT_LOG_FORMAT;
28*f334afcfSToomas Soome typedef UINT32 EFI_TCG2_EVENT_ALGORITHM_BITMAP;
29*f334afcfSToomas Soome 
30*f334afcfSToomas Soome #define EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2  0x00000001
31*f334afcfSToomas Soome #define EFI_TCG2_EVENT_LOG_FORMAT_TCG_2    0x00000002
32*f334afcfSToomas Soome 
33*f334afcfSToomas Soome typedef struct tdEFI_TCG2_BOOT_SERVICE_CAPABILITY {
34*f334afcfSToomas Soome   //
35*f334afcfSToomas Soome   // Allocated size of the structure
36*f334afcfSToomas Soome   //
37*f334afcfSToomas Soome   UINT8                              Size;
38*f334afcfSToomas Soome   //
39*f334afcfSToomas Soome   // Version of the EFI_TCG2_BOOT_SERVICE_CAPABILITY structure itself.
40*f334afcfSToomas Soome   // For this version of the protocol, the Major version shall be set to 1
41*f334afcfSToomas Soome   // and the Minor version shall be set to 1.
42*f334afcfSToomas Soome   //
43*f334afcfSToomas Soome   EFI_TCG2_VERSION                   StructureVersion;
44*f334afcfSToomas Soome   //
45*f334afcfSToomas Soome   // Version of the EFI TCG2 protocol.
46*f334afcfSToomas Soome   // For this version of the protocol, the Major version shall be set to 1
47*f334afcfSToomas Soome   // and the Minor version shall be set to 1.
48*f334afcfSToomas Soome   //
49*f334afcfSToomas Soome   EFI_TCG2_VERSION                   ProtocolVersion;
50*f334afcfSToomas Soome   //
51*f334afcfSToomas Soome   // Supported hash algorithms (this bitmap is determined by the supported PCR
52*f334afcfSToomas Soome   // banks in the TPM and the hashing algorithms supported by the firmware)
53*f334afcfSToomas Soome   //
54*f334afcfSToomas Soome   EFI_TCG2_EVENT_ALGORITHM_BITMAP    HashAlgorithmBitmap;
55*f334afcfSToomas Soome   //
56*f334afcfSToomas Soome   // Bitmap of supported event log formats
57*f334afcfSToomas Soome   //
58*f334afcfSToomas Soome   EFI_TCG2_EVENT_LOG_BITMAP          SupportedEventLogs;
59*f334afcfSToomas Soome   //
60*f334afcfSToomas Soome   // False = TPM not present
61*f334afcfSToomas Soome   //
62*f334afcfSToomas Soome   BOOLEAN                            TPMPresentFlag;
63*f334afcfSToomas Soome   //
64*f334afcfSToomas Soome   // Max size (in bytes) of a command that can be sent to the TPM
65*f334afcfSToomas Soome   //
66*f334afcfSToomas Soome   UINT16                             MaxCommandSize;
67*f334afcfSToomas Soome   //
68*f334afcfSToomas Soome   // Max size (in bytes) of a response that can be provided by the TPM
69*f334afcfSToomas Soome   //
70*f334afcfSToomas Soome   UINT16                             MaxResponseSize;
71*f334afcfSToomas Soome   //
72*f334afcfSToomas Soome   // 4-byte Vendor ID
73*f334afcfSToomas Soome   // (see TCG Vendor ID registry, Section "TPM Capabilities Vendor ID")
74*f334afcfSToomas Soome   //
75*f334afcfSToomas Soome   UINT32                             ManufacturerID;
76*f334afcfSToomas Soome   //
77*f334afcfSToomas Soome   // Maximum number of PCR banks (hashing algorithms) supported.
78*f334afcfSToomas Soome   // No granularity is provided to support a specific set of algorithms.
79*f334afcfSToomas Soome   // Minimum value is 1.
80*f334afcfSToomas Soome   //
81*f334afcfSToomas Soome   UINT32                             NumberOfPCRBanks;
82*f334afcfSToomas Soome   //
83*f334afcfSToomas Soome   // A bitmap of currently active PCR banks (hashing algorithms).
84*f334afcfSToomas Soome   // This is a subset of the supported hashing algorithms reported in HashAlgorithmBitMap.
85*f334afcfSToomas Soome   // NumberOfPcrBanks defines the number of bits that are set.
86*f334afcfSToomas Soome   //
87*f334afcfSToomas Soome   EFI_TCG2_EVENT_ALGORITHM_BITMAP    ActivePcrBanks;
88*f334afcfSToomas Soome } EFI_TCG2_BOOT_SERVICE_CAPABILITY;
89*f334afcfSToomas Soome 
90*f334afcfSToomas Soome #define EFI_TCG2_BOOT_HASH_ALG_SHA1     0x00000001
91*f334afcfSToomas Soome #define EFI_TCG2_BOOT_HASH_ALG_SHA256   0x00000002
92*f334afcfSToomas Soome #define EFI_TCG2_BOOT_HASH_ALG_SHA384   0x00000004
93*f334afcfSToomas Soome #define EFI_TCG2_BOOT_HASH_ALG_SHA512   0x00000008
94*f334afcfSToomas Soome #define EFI_TCG2_BOOT_HASH_ALG_SM3_256  0x00000010
95*f334afcfSToomas Soome 
96*f334afcfSToomas Soome //
97*f334afcfSToomas Soome // This bit is shall be set when an event shall be extended but not logged.
98*f334afcfSToomas Soome //
99*f334afcfSToomas Soome #define EFI_TCG2_EXTEND_ONLY  0x0000000000000001
100*f334afcfSToomas Soome //
101*f334afcfSToomas Soome // This bit shall be set when the intent is to measure a PE/COFF image.
102*f334afcfSToomas Soome //
103*f334afcfSToomas Soome #define PE_COFF_IMAGE  0x0000000000000010
104*f334afcfSToomas Soome 
105*f334afcfSToomas Soome #define MAX_PCR_INDEX  23
106*f334afcfSToomas Soome 
107*f334afcfSToomas Soome #pragma pack(1)
108*f334afcfSToomas Soome 
109*f334afcfSToomas Soome #define EFI_TCG2_EVENT_HEADER_VERSION  1
110*f334afcfSToomas Soome 
111*f334afcfSToomas Soome typedef struct {
112*f334afcfSToomas Soome   //
113*f334afcfSToomas Soome   // Size of the event header itself (sizeof(EFI_TCG2_EVENT_HEADER)).
114*f334afcfSToomas Soome   //
115*f334afcfSToomas Soome   UINT32           HeaderSize;
116*f334afcfSToomas Soome   //
117*f334afcfSToomas Soome   // Header version. For this version of this specification, the value shall be 1.
118*f334afcfSToomas Soome   //
119*f334afcfSToomas Soome   UINT16           HeaderVersion;
120*f334afcfSToomas Soome   //
121*f334afcfSToomas Soome   // Index of the PCR that shall be extended (0 - 23).
122*f334afcfSToomas Soome   //
123*f334afcfSToomas Soome   TCG_PCRINDEX     PCRIndex;
124*f334afcfSToomas Soome   //
125*f334afcfSToomas Soome   // Type of the event that shall be extended (and optionally logged).
126*f334afcfSToomas Soome   //
127*f334afcfSToomas Soome   TCG_EVENTTYPE    EventType;
128*f334afcfSToomas Soome } EFI_TCG2_EVENT_HEADER;
129*f334afcfSToomas Soome 
130*f334afcfSToomas Soome typedef struct tdEFI_TCG2_EVENT {
131*f334afcfSToomas Soome   //
132*f334afcfSToomas Soome   // Total size of the event including the Size component, the header and the Event data.
133*f334afcfSToomas Soome   //
134*f334afcfSToomas Soome   UINT32                   Size;
135*f334afcfSToomas Soome   EFI_TCG2_EVENT_HEADER    Header;
136*f334afcfSToomas Soome   UINT8                    Event[1];
137*f334afcfSToomas Soome } EFI_TCG2_EVENT;
138*f334afcfSToomas Soome 
139*f334afcfSToomas Soome #pragma pack()
140*f334afcfSToomas Soome 
141*f334afcfSToomas Soome /**
142*f334afcfSToomas Soome   The EFI_TCG2_PROTOCOL GetCapability function call provides protocol
143*f334afcfSToomas Soome   capability information and state information.
144*f334afcfSToomas Soome 
145*f334afcfSToomas Soome   @param[in]      This               Indicates the calling context
146*f334afcfSToomas Soome   @param[in, out] ProtocolCapability The caller allocates memory for a EFI_TCG2_BOOT_SERVICE_CAPABILITY
147*f334afcfSToomas Soome                                      structure and sets the size field to the size of the structure allocated.
148*f334afcfSToomas Soome                                      The callee fills in the fields with the EFI protocol capability information
149*f334afcfSToomas Soome                                      and the current EFI TCG2 state information up to the number of fields which
150*f334afcfSToomas Soome                                      fit within the size of the structure passed in.
151*f334afcfSToomas Soome 
152*f334afcfSToomas Soome   @retval EFI_SUCCESS            Operation completed successfully.
153*f334afcfSToomas Soome   @retval EFI_DEVICE_ERROR       The command was unsuccessful.
154*f334afcfSToomas Soome                                  The ProtocolCapability variable will not be populated.
155*f334afcfSToomas Soome   @retval EFI_INVALID_PARAMETER  One or more of the parameters are incorrect.
156*f334afcfSToomas Soome                                  The ProtocolCapability variable will not be populated.
157*f334afcfSToomas Soome   @retval EFI_BUFFER_TOO_SMALL   The ProtocolCapability variable is too small to hold the full response.
158*f334afcfSToomas Soome                                  It will be partially populated (required Size field will be set).
159*f334afcfSToomas Soome **/
160*f334afcfSToomas Soome typedef
161*f334afcfSToomas Soome EFI_STATUS
162*f334afcfSToomas Soome (EFIAPI *EFI_TCG2_GET_CAPABILITY)(
163*f334afcfSToomas Soome   IN EFI_TCG2_PROTOCOL                    *This,
164*f334afcfSToomas Soome   IN OUT EFI_TCG2_BOOT_SERVICE_CAPABILITY *ProtocolCapability
165*f334afcfSToomas Soome   );
166*f334afcfSToomas Soome 
167*f334afcfSToomas Soome /**
168*f334afcfSToomas Soome   The EFI_TCG2_PROTOCOL Get Event Log function call allows a caller to
169*f334afcfSToomas Soome   retrieve the address of a given event log and its last entry.
170*f334afcfSToomas Soome 
171*f334afcfSToomas Soome   @param[in]  This               Indicates the calling context
172*f334afcfSToomas Soome   @param[in]  EventLogFormat     The type of the event log for which the information is requested.
173*f334afcfSToomas Soome   @param[out] EventLogLocation   A pointer to the memory address of the event log.
174*f334afcfSToomas Soome   @param[out] EventLogLastEntry  If the Event Log contains more than one entry, this is a pointer to the
175*f334afcfSToomas Soome                                  address of the start of the last entry in the event log in memory.
176*f334afcfSToomas Soome   @param[out] EventLogTruncated  If the Event Log is missing at least one entry because an event would
177*f334afcfSToomas Soome                                  have exceeded the area allocated for events, this value is set to TRUE.
178*f334afcfSToomas Soome                                  Otherwise, the value will be FALSE and the Event Log will be complete.
179*f334afcfSToomas Soome 
180*f334afcfSToomas Soome   @retval EFI_SUCCESS            Operation completed successfully.
181*f334afcfSToomas Soome   @retval EFI_INVALID_PARAMETER  One or more of the parameters are incorrect
182*f334afcfSToomas Soome                                  (e.g. asking for an event log whose format is not supported).
183*f334afcfSToomas Soome **/
184*f334afcfSToomas Soome typedef
185*f334afcfSToomas Soome EFI_STATUS
186*f334afcfSToomas Soome (EFIAPI *EFI_TCG2_GET_EVENT_LOG)(
187*f334afcfSToomas Soome   IN EFI_TCG2_PROTOCOL         *This,
188*f334afcfSToomas Soome   IN EFI_TCG2_EVENT_LOG_FORMAT EventLogFormat,
189*f334afcfSToomas Soome   OUT EFI_PHYSICAL_ADDRESS     *EventLogLocation,
190*f334afcfSToomas Soome   OUT EFI_PHYSICAL_ADDRESS     *EventLogLastEntry,
191*f334afcfSToomas Soome   OUT BOOLEAN                  *EventLogTruncated
192*f334afcfSToomas Soome   );
193*f334afcfSToomas Soome 
194*f334afcfSToomas Soome /**
195*f334afcfSToomas Soome   The EFI_TCG2_PROTOCOL HashLogExtendEvent function call provides callers with
196*f334afcfSToomas Soome   an opportunity to extend and optionally log events without requiring
197*f334afcfSToomas Soome   knowledge of actual TPM commands.
198*f334afcfSToomas Soome   The extend operation will occur even if this function cannot create an event
199*f334afcfSToomas Soome   log entry (e.g. due to the event log being full).
200*f334afcfSToomas Soome 
201*f334afcfSToomas Soome   @param[in]  This               Indicates the calling context
202*f334afcfSToomas Soome   @param[in]  Flags              Bitmap providing additional information.
203*f334afcfSToomas Soome   @param[in]  DataToHash         Physical address of the start of the data buffer to be hashed.
204*f334afcfSToomas Soome   @param[in]  DataToHashLen      The length in bytes of the buffer referenced by DataToHash.
205*f334afcfSToomas Soome   @param[in]  EfiTcgEvent        Pointer to data buffer containing information about the event.
206*f334afcfSToomas Soome 
207*f334afcfSToomas Soome   @retval EFI_SUCCESS            Operation completed successfully.
208*f334afcfSToomas Soome   @retval EFI_DEVICE_ERROR       The command was unsuccessful.
209*f334afcfSToomas Soome   @retval EFI_VOLUME_FULL        The extend operation occurred, but the event could not be written to one or more event logs.
210*f334afcfSToomas Soome   @retval EFI_INVALID_PARAMETER  One or more of the parameters are incorrect.
211*f334afcfSToomas Soome   @retval EFI_UNSUPPORTED        The PE/COFF image type is not supported.
212*f334afcfSToomas Soome **/
213*f334afcfSToomas Soome typedef
214*f334afcfSToomas Soome EFI_STATUS
215*f334afcfSToomas Soome (EFIAPI *EFI_TCG2_HASH_LOG_EXTEND_EVENT)(
216*f334afcfSToomas Soome   IN EFI_TCG2_PROTOCOL    *This,
217*f334afcfSToomas Soome   IN UINT64               Flags,
218*f334afcfSToomas Soome   IN EFI_PHYSICAL_ADDRESS DataToHash,
219*f334afcfSToomas Soome   IN UINT64               DataToHashLen,
220*f334afcfSToomas Soome   IN EFI_TCG2_EVENT       *EfiTcgEvent
221*f334afcfSToomas Soome   );
222*f334afcfSToomas Soome 
223*f334afcfSToomas Soome /**
224*f334afcfSToomas Soome   This service enables the sending of commands to the TPM.
225*f334afcfSToomas Soome 
226*f334afcfSToomas Soome   @param[in]  This                     Indicates the calling context
227*f334afcfSToomas Soome   @param[in]  InputParameterBlockSize  Size of the TPM input parameter block.
228*f334afcfSToomas Soome   @param[in]  InputParameterBlock      Pointer to the TPM input parameter block.
229*f334afcfSToomas Soome   @param[in]  OutputParameterBlockSize Size of the TPM output parameter block.
230*f334afcfSToomas Soome   @param[in]  OutputParameterBlock     Pointer to the TPM output parameter block.
231*f334afcfSToomas Soome 
232*f334afcfSToomas Soome   @retval EFI_SUCCESS            The command byte stream was successfully sent to the device and a response was successfully received.
233*f334afcfSToomas Soome   @retval EFI_DEVICE_ERROR       The command was not successfully sent to the device or a response was not successfully received from the device.
234*f334afcfSToomas Soome   @retval EFI_INVALID_PARAMETER  One or more of the parameters are incorrect.
235*f334afcfSToomas Soome   @retval EFI_BUFFER_TOO_SMALL   The output parameter block is too small.
236*f334afcfSToomas Soome **/
237*f334afcfSToomas Soome typedef
238*f334afcfSToomas Soome EFI_STATUS
239*f334afcfSToomas Soome (EFIAPI *EFI_TCG2_SUBMIT_COMMAND)(
240*f334afcfSToomas Soome   IN EFI_TCG2_PROTOCOL *This,
241*f334afcfSToomas Soome   IN UINT32            InputParameterBlockSize,
242*f334afcfSToomas Soome   IN UINT8             *InputParameterBlock,
243*f334afcfSToomas Soome   IN UINT32            OutputParameterBlockSize,
244*f334afcfSToomas Soome   IN UINT8             *OutputParameterBlock
245*f334afcfSToomas Soome   );
246*f334afcfSToomas Soome 
247*f334afcfSToomas Soome /**
248*f334afcfSToomas Soome   This service returns the currently active PCR banks.
249*f334afcfSToomas Soome 
250*f334afcfSToomas Soome   @param[in]  This            Indicates the calling context
251*f334afcfSToomas Soome   @param[out] ActivePcrBanks  Pointer to the variable receiving the bitmap of currently active PCR banks.
252*f334afcfSToomas Soome 
253*f334afcfSToomas Soome   @retval EFI_SUCCESS           The bitmap of active PCR banks was stored in the ActivePcrBanks parameter.
254*f334afcfSToomas Soome   @retval EFI_INVALID_PARAMETER One or more of the parameters are incorrect.
255*f334afcfSToomas Soome **/
256*f334afcfSToomas Soome typedef
257*f334afcfSToomas Soome EFI_STATUS
258*f334afcfSToomas Soome (EFIAPI *EFI_TCG2_GET_ACTIVE_PCR_BANKS)(
259*f334afcfSToomas Soome   IN  EFI_TCG2_PROTOCOL *This,
260*f334afcfSToomas Soome   OUT UINT32            *ActivePcrBanks
261*f334afcfSToomas Soome   );
262*f334afcfSToomas Soome 
263*f334afcfSToomas Soome /**
264*f334afcfSToomas Soome   This service sets the currently active PCR banks.
265*f334afcfSToomas Soome 
266*f334afcfSToomas Soome   @param[in]  This            Indicates the calling context
267*f334afcfSToomas Soome   @param[in]  ActivePcrBanks  Bitmap of the requested active PCR banks. At least one bit SHALL be set.
268*f334afcfSToomas Soome 
269*f334afcfSToomas Soome   @retval EFI_SUCCESS           The bitmap in ActivePcrBank parameter is already active.
270*f334afcfSToomas Soome   @retval EFI_INVALID_PARAMETER One or more of the parameters are incorrect.
271*f334afcfSToomas Soome **/
272*f334afcfSToomas Soome typedef
273*f334afcfSToomas Soome EFI_STATUS
274*f334afcfSToomas Soome (EFIAPI *EFI_TCG2_SET_ACTIVE_PCR_BANKS)(
275*f334afcfSToomas Soome   IN EFI_TCG2_PROTOCOL *This,
276*f334afcfSToomas Soome   IN UINT32            ActivePcrBanks
277*f334afcfSToomas Soome   );
278*f334afcfSToomas Soome 
279*f334afcfSToomas Soome /**
280*f334afcfSToomas Soome   This service retrieves the result of a previous invocation of SetActivePcrBanks.
281*f334afcfSToomas Soome 
282*f334afcfSToomas Soome   @param[in]  This              Indicates the calling context
283*f334afcfSToomas Soome   @param[out] OperationPresent  Non-zero value to indicate a SetActivePcrBank operation was invoked during the last boot.
284*f334afcfSToomas Soome   @param[out] Response          The response from the SetActivePcrBank request.
285*f334afcfSToomas Soome 
286*f334afcfSToomas Soome   @retval EFI_SUCCESS           The result value could be returned.
287*f334afcfSToomas Soome   @retval EFI_INVALID_PARAMETER One or more of the parameters are incorrect.
288*f334afcfSToomas Soome **/
289*f334afcfSToomas Soome typedef
290*f334afcfSToomas Soome EFI_STATUS
291*f334afcfSToomas Soome (EFIAPI *EFI_TCG2_GET_RESULT_OF_SET_ACTIVE_PCR_BANKS)(
292*f334afcfSToomas Soome   IN  EFI_TCG2_PROTOCOL  *This,
293*f334afcfSToomas Soome   OUT UINT32             *OperationPresent,
294*f334afcfSToomas Soome   OUT UINT32             *Response
295*f334afcfSToomas Soome   );
296*f334afcfSToomas Soome 
297*f334afcfSToomas Soome struct tdEFI_TCG2_PROTOCOL {
298*f334afcfSToomas Soome   EFI_TCG2_GET_CAPABILITY                        GetCapability;
299*f334afcfSToomas Soome   EFI_TCG2_GET_EVENT_LOG                         GetEventLog;
300*f334afcfSToomas Soome   EFI_TCG2_HASH_LOG_EXTEND_EVENT                 HashLogExtendEvent;
301*f334afcfSToomas Soome   EFI_TCG2_SUBMIT_COMMAND                        SubmitCommand;
302*f334afcfSToomas Soome   EFI_TCG2_GET_ACTIVE_PCR_BANKS                  GetActivePcrBanks;
303*f334afcfSToomas Soome   EFI_TCG2_SET_ACTIVE_PCR_BANKS                  SetActivePcrBanks;
304*f334afcfSToomas Soome   EFI_TCG2_GET_RESULT_OF_SET_ACTIVE_PCR_BANKS    GetResultOfSetActivePcrBanks;
305*f334afcfSToomas Soome };
306*f334afcfSToomas Soome 
307*f334afcfSToomas Soome extern EFI_GUID  gEfiTcg2ProtocolGuid;
308*f334afcfSToomas Soome 
309*f334afcfSToomas Soome //
310*f334afcfSToomas Soome // Log entries after Get Event Log service
311*f334afcfSToomas Soome //
312*f334afcfSToomas Soome 
313*f334afcfSToomas Soome #define EFI_TCG2_FINAL_EVENTS_TABLE_GUID \
314*f334afcfSToomas Soome   {0x1e2ed096, 0x30e2, 0x4254, { 0xbd, 0x89, 0x86, 0x3b, 0xbe, 0xf8, 0x23, 0x25 }}
315*f334afcfSToomas Soome 
316*f334afcfSToomas Soome extern EFI_GUID  gEfiTcg2FinalEventsTableGuid;
317*f334afcfSToomas Soome 
318*f334afcfSToomas Soome typedef struct tdEFI_TCG2_FINAL_EVENTS_TABLE {
319*f334afcfSToomas Soome   //
320*f334afcfSToomas Soome   // The version of this structure.
321*f334afcfSToomas Soome   //
322*f334afcfSToomas Soome   UINT64    Version;
323*f334afcfSToomas Soome   //
324*f334afcfSToomas Soome   // Number of events recorded after invocation of GetEventLog API
325*f334afcfSToomas Soome   //
326*f334afcfSToomas Soome   UINT64    NumberOfEvents;
327*f334afcfSToomas Soome   //
328*f334afcfSToomas Soome   // List of events of type TCG_PCR_EVENT2.
329*f334afcfSToomas Soome   //
330*f334afcfSToomas Soome   // TCG_PCR_EVENT2          Event[1];
331*f334afcfSToomas Soome } EFI_TCG2_FINAL_EVENTS_TABLE;
332*f334afcfSToomas Soome 
333*f334afcfSToomas Soome #define EFI_TCG2_FINAL_EVENTS_TABLE_VERSION  1
334*f334afcfSToomas Soome 
335*f334afcfSToomas Soome #endif
336