]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Foundation/Include/EfiTpm.h
Program SD Cards into 4-bit mode (support for this is required in the spec). This...
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Include / EfiTpm.h
1 /*++
2
3 Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved.<BR>
4 This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
8
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11
12 Module Name:
13
14 EfiTpm.h
15
16 Abstract:
17
18 EFI definition according to TCG_EFI_Platform_1_20_Final
19
20 See http://trustedcomputinggroup.org for latest specification updates
21
22 --*/
23
24 #ifndef _EFI_TPM_H_
25 #define _EFI_TPM_H_
26
27 #include "Tiano.h"
28
29 //
30 // The start of TPM return codes
31 //
32 #define TPM_BASE (EFI_MAX_BIT + (EFI_MAX_BIT >> 1))
33 #include "IndustryStandard/Tpm12.h"
34
35 //
36 // Standard event types
37 //
38 #define EV_POST_CODE ((TCG_EVENTTYPE) 0x00000001)
39 #define EV_SEPARATOR ((TCG_EVENTTYPE) 0x00000004)
40 #define EV_S_CRTM_CONTENTS ((TCG_EVENTTYPE) 0x00000007)
41 #define EV_S_CRTM_VERSION ((TCG_EVENTTYPE) 0x00000008)
42
43 //
44 // EFI specific event types
45 //
46 #define EV_EFI_EVENT_BASE ((TCG_EVENTTYPE) 0x80000000)
47 #define EV_EFI_VARIABLE_DRIVER_CONFIG (EV_EFI_EVENT_BASE + 1)
48 #define EV_EFI_VARIABLE_BOOT (EV_EFI_EVENT_BASE + 2)
49 #define EV_EFI_BOOT_SERVICES_APPLICATION (EV_EFI_EVENT_BASE + 3)
50 #define EV_EFI_BOOT_SERVICES_DRIVER (EV_EFI_EVENT_BASE + 4)
51 #define EV_EFI_RUNTIME_SERVICES_DRIVER (EV_EFI_EVENT_BASE + 5)
52 #define EV_EFI_GPT_EVENT (EV_EFI_EVENT_BASE + 6)
53 #define EV_EFI_ACTION (EV_EFI_EVENT_BASE + 7)
54 #define EV_EFI_PLATFORM_FIRMWARE_BLOB (EV_EFI_EVENT_BASE + 8)
55 #define EV_EFI_HANDOFF_TABLES (EV_EFI_EVENT_BASE + 9)
56
57 //
58 // Set structure alignment to 1-byte
59 //
60 #pragma pack (1)
61
62 typedef UINT32 TCG_EVENTTYPE;
63
64 #define TCG_DIGEST TPM_DIGEST
65 #define TCG_PCRINDEX TPM_PCRINDEX
66
67 //
68 // TCG_PCR_EVENT
69 //
70 typedef struct tdTCG_PCR_EVENT {
71 TCG_PCRINDEX PCRIndex; // PCRIndex event extended to
72 TCG_EVENTTYPE EventType; // TCG EFI event type
73 TCG_DIGEST Digest; // Value extended into PCRIndex
74 UINT32 EventSize; // Size of the event data
75 UINT8 Event[1]; // The event data
76 } TCG_PCR_EVENT;
77
78 //
79 // TCG_PCR_EVENT_HDR
80 //
81 typedef struct tdTCG_PCR_EVENT_HDR {
82 TCG_PCRINDEX PCRIndex;
83 TCG_EVENTTYPE EventType;
84 TCG_DIGEST Digest;
85 UINT32 EventSize;
86 } TCG_PCR_EVENT_HDR;
87
88 //
89 // EFI_PLATFORM_FIRMWARE_BLOB
90 //
91 // BlobLength should be of type UINTN but we use UINT64 here
92 // because PEI is 32-bit while DXE is 64-bit on x64 platforms
93 //
94 typedef struct tdEFI_PLATFORM_FIRMWARE_BLOB {
95 EFI_PHYSICAL_ADDRESS BlobBase;
96 UINT64 BlobLength;
97 } EFI_PLATFORM_FIRMWARE_BLOB;
98
99 //
100 // EFI_IMAGE_LOAD_EVENT
101 //
102 // This structure is used in EV_EFI_BOOT_SERVICES_APPLICATION,
103 // EV_EFI_BOOT_SERVICES_DRIVER and EV_EFI_RUNTIME_SERVICES_DRIVER
104 //
105 typedef struct tdEFI_IMAGE_LOAD_EVENT {
106 EFI_PHYSICAL_ADDRESS ImageLocationInMemory;
107 UINTN ImageLengthInMemory;
108 UINTN ImageLinkTimeAddress;
109 UINTN LengthOfDevicePath;
110 EFI_DEVICE_PATH_PROTOCOL DevicePath[1];
111 } EFI_IMAGE_LOAD_EVENT;
112
113 //
114 // EFI_HANDOFF_TABLE_POINTERS
115 //
116 // This structure is used in EV_EFI_HANDOFF_TABLES event to facilitate
117 // the measurement of given configuration tables.
118 //
119 typedef struct tdEFI_HANDOFF_TABLE_POINTERS {
120 UINTN NumberOfTables;
121 EFI_CONFIGURATION_TABLE TableEntry[1];
122 } EFI_HANDOFF_TABLE_POINTERS;
123
124 //
125 // EFI_VARIABLE_DATA
126 //
127 // This structure serves as the header for measuring variables. The name of the
128 // variable (in Unicode format) should immediately follow, then the variable
129 // data.
130 //
131 typedef struct tdEFI_VARIABLE_DATA {
132 EFI_GUID VariableName;
133 UINTN UnicodeNameLength;
134 UINTN VariableDataLength;
135 CHAR16 UnicodeName[1];
136 INT8 VariableData[1]; // Driver or platform-specific data
137 } EFI_VARIABLE_DATA;
138
139 //
140 // Restore original structure alignment
141 //
142 #pragma pack ()
143
144 #endif // _EFI_TPM_H_