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