]> git.proxmox.com Git - mirror_edk2.git/blob - SecurityPkg/Include/Library/Tpm12CommandLib.h
SecurityPkg: Clean up source files
[mirror_edk2.git] / SecurityPkg / Include / Library / Tpm12CommandLib.h
1 /** @file
2 This library is used by other modules to send TPM12 command.
3
4 Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved. <BR>
5 This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 **/
14
15 #ifndef _TPM12_COMMAND_LIB_H_
16 #define _TPM12_COMMAND_LIB_H_
17
18 #include <IndustryStandard/Tpm12.h>
19
20 /**
21 Send Startup command to TPM1.2.
22
23 @param TpmSt Startup Type.
24
25 @retval EFI_SUCCESS Operation completed successfully.
26 @retval EFI_DEVICE_ERROR Unexpected device behavior.
27 **/
28 EFI_STATUS
29 EFIAPI
30 Tpm12Startup (
31 IN TPM_STARTUP_TYPE TpmSt
32 );
33
34 /**
35 Send SaveState command to TPM1.2.
36
37 @retval EFI_SUCCESS Operation completed successfully.
38 @retval EFI_DEVICE_ERROR Unexpected device behavior.
39 **/
40 EFI_STATUS
41 EFIAPI
42 Tpm12SaveState (
43 VOID
44 );
45
46 /**
47 Send ForceClear command to TPM1.2.
48
49 @retval EFI_SUCCESS Operation completed successfully.
50 @retval EFI_DEVICE_ERROR Unexpected device behavior.
51 **/
52 EFI_STATUS
53 EFIAPI
54 Tpm12ForceClear (
55 VOID
56 );
57
58 #pragma pack(1)
59
60 typedef struct {
61 UINT16 sizeOfSelect;
62 UINT8 pcrSelect[3];
63 } TPM12_PCR_SELECTION;
64
65 typedef struct {
66 TPM12_PCR_SELECTION pcrSelection;
67 TPM_LOCALITY_SELECTION localityAtRelease;
68 TPM_COMPOSITE_HASH digestAtRelease;
69 } TPM12_PCR_INFO_SHORT;
70
71 typedef struct {
72 TPM_STRUCTURE_TAG tag;
73 TPM_NV_INDEX nvIndex;
74 TPM12_PCR_INFO_SHORT pcrInfoRead;
75 TPM12_PCR_INFO_SHORT pcrInfoWrite;
76 TPM_NV_ATTRIBUTES permission;
77 BOOLEAN bReadSTClear;
78 BOOLEAN bWriteSTClear;
79 BOOLEAN bWriteDefine;
80 UINT32 dataSize;
81 } TPM12_NV_DATA_PUBLIC;
82
83 #pragma pack()
84
85 /**
86 Send NV DefineSpace command to TPM1.2.
87
88 @param PubInfo The public parameters of the NV area.
89 @param EncAuth The encrypted AuthData, only valid if the attributes require subsequent authorization.
90
91 @retval EFI_SUCCESS Operation completed successfully.
92 @retval EFI_DEVICE_ERROR Unexpected device behavior.
93 **/
94 EFI_STATUS
95 EFIAPI
96 Tpm12NvDefineSpace (
97 IN TPM12_NV_DATA_PUBLIC *PubInfo,
98 IN TPM_ENCAUTH *EncAuth
99 );
100
101 /**
102 Send NV ReadValue command to TPM1.2.
103
104 @param NvIndex The index of the area to set.
105 @param Offset The offset into the area.
106 @param DataSize The size of the data area.
107 @param Data The data to set the area to.
108
109 @retval EFI_SUCCESS Operation completed successfully.
110 @retval EFI_DEVICE_ERROR Unexpected device behavior.
111 **/
112 EFI_STATUS
113 EFIAPI
114 Tpm12NvReadValue (
115 IN TPM_NV_INDEX NvIndex,
116 IN UINT32 Offset,
117 IN OUT UINT32 *DataSize,
118 OUT UINT8 *Data
119 );
120
121 /**
122 Send NV WriteValue command to TPM1.2.
123
124 @param NvIndex The index of the area to set.
125 @param Offset The offset into the NV Area.
126 @param DataSize The size of the data parameter.
127 @param Data The data to set the area to.
128
129 @retval EFI_SUCCESS Operation completed successfully.
130 @retval EFI_DEVICE_ERROR Unexpected device behavior.
131 **/
132 EFI_STATUS
133 EFIAPI
134 Tpm12NvWriteValue (
135 IN TPM_NV_INDEX NvIndex,
136 IN UINT32 Offset,
137 IN UINT32 DataSize,
138 IN UINT8 *Data
139 );
140
141 /**
142 Extend a TPM PCR.
143
144 @param[in] DigestToExtend The 160 bit value representing the event to be recorded.
145 @param[in] PcrIndex The PCR to be updated.
146 @param[out] NewPcrValue New PCR value after extend.
147
148 @retval EFI_SUCCESS Operation completed successfully.
149 @retval EFI_TIMEOUT The register can't run into the expected status in time.
150 @retval EFI_BUFFER_TOO_SMALL Response data buffer is too small.
151 @retval EFI_DEVICE_ERROR Unexpected device behavior.
152
153 **/
154 EFI_STATUS
155 EFIAPI
156 Tpm12Extend (
157 IN TPM_DIGEST *DigestToExtend,
158 IN TPM_PCRINDEX PcrIndex,
159 OUT TPM_DIGEST *NewPcrValue
160 );
161
162 /**
163 Send TSC_PhysicalPresence command to TPM.
164
165 @param[in] PhysicalPresence The state to set the TPMs Physical Presence flags.
166
167 @retval EFI_SUCCESS Operation completed successfully.
168 @retval EFI_TIMEOUT The register can't run into the expected status in time.
169 @retval EFI_BUFFER_TOO_SMALL Response data buffer is too small.
170 @retval EFI_DEVICE_ERROR Unexpected device behavior.
171
172 **/
173 EFI_STATUS
174 EFIAPI
175 Tpm12PhysicalPresence (
176 IN TPM_PHYSICAL_PRESENCE PhysicalPresence
177 );
178
179 /**
180 Send TPM_ContinueSelfTest command to TPM.
181
182 @retval EFI_SUCCESS Operation completed successfully.
183 @retval EFI_TIMEOUT The register can't run into the expected status in time.
184 @retval EFI_BUFFER_TOO_SMALL Response data buffer is too small.
185 @retval EFI_DEVICE_ERROR Unexpected device behavior.
186
187 **/
188 EFI_STATUS
189 EFIAPI
190 Tpm12ContinueSelfTest (
191 VOID
192 );
193
194 /**
195 Get TPM capability permanent flags.
196
197 @param[out] TpmPermanentFlags Pointer to the buffer for returned flag structure.
198
199 @retval EFI_SUCCESS Operation completed successfully.
200 @retval EFI_TIMEOUT The register can't run into the expected status in time.
201 @retval EFI_BUFFER_TOO_SMALL Response data buffer is too small.
202 @retval EFI_DEVICE_ERROR Unexpected device behavior.
203
204 **/
205 EFI_STATUS
206 EFIAPI
207 Tpm12GetCapabilityFlagPermanent (
208 OUT TPM_PERMANENT_FLAGS *TpmPermanentFlags
209 );
210
211 /**
212 Get TPM capability volatile flags.
213
214 @param[out] VolatileFlags Pointer to the buffer for returned flag structure.
215
216 @retval EFI_SUCCESS Operation completed successfully.
217 @retval EFI_DEVICE_ERROR The command was unsuccessful.
218
219 **/
220 EFI_STATUS
221 EFIAPI
222 Tpm12GetCapabilityFlagVolatile (
223 OUT TPM_STCLEAR_FLAGS *VolatileFlags
224 );
225 #endif