2 This library is used by other modules to send TPM12 command.
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
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.
15 #ifndef _TPM12_COMMAND_LIB_H_
16 #define _TPM12_COMMAND_LIB_H_
18 #include <IndustryStandard/Tpm12.h>
21 Send Startup command to TPM1.2.
23 @param TpmSt Startup Type.
25 @retval EFI_SUCCESS Operation completed successfully.
26 @retval EFI_DEVICE_ERROR Unexpected device behavior.
31 IN TPM_STARTUP_TYPE TpmSt
35 Send SaveState command to TPM1.2.
37 @retval EFI_SUCCESS Operation completed successfully.
38 @retval EFI_DEVICE_ERROR Unexpected device behavior.
47 Send ForceClear command to TPM1.2.
49 @retval EFI_SUCCESS Operation completed successfully.
50 @retval EFI_DEVICE_ERROR Unexpected device behavior.
63 } TPM12_PCR_SELECTION
;
66 TPM12_PCR_SELECTION pcrSelection
;
67 TPM_LOCALITY_SELECTION localityAtRelease
;
68 TPM_COMPOSITE_HASH digestAtRelease
;
69 } TPM12_PCR_INFO_SHORT
;
72 TPM_STRUCTURE_TAG tag
;
74 TPM12_PCR_INFO_SHORT pcrInfoRead
;
75 TPM12_PCR_INFO_SHORT pcrInfoWrite
;
76 TPM_NV_ATTRIBUTES permission
;
78 BOOLEAN bWriteSTClear
;
81 } TPM12_NV_DATA_PUBLIC
;
86 Send NV DefineSpace command to TPM1.2.
88 @param PubInfo The public parameters of the NV area.
89 @param EncAuth The encrypted AuthData, only valid if the attributes require subsequent authorization.
91 @retval EFI_SUCCESS Operation completed successfully.
92 @retval EFI_DEVICE_ERROR Unexpected device behavior.
97 IN TPM12_NV_DATA_PUBLIC
*PubInfo
,
98 IN TPM_ENCAUTH
*EncAuth
102 Send NV ReadValue command to TPM1.2.
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.
109 @retval EFI_SUCCESS Operation completed successfully.
110 @retval EFI_DEVICE_ERROR Unexpected device behavior.
115 IN TPM_NV_INDEX NvIndex
,
117 IN OUT UINT32
*DataSize
,
122 Send NV WriteValue command to TPM1.2.
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.
129 @retval EFI_SUCCESS Operation completed successfully.
130 @retval EFI_DEVICE_ERROR Unexpected device behavior.
135 IN TPM_NV_INDEX NvIndex
,
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.
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.
157 IN TPM_DIGEST
*DigestToExtend
,
158 IN TPM_PCRINDEX PcrIndex
,
159 OUT TPM_DIGEST
*NewPcrValue
163 Send TSC_PhysicalPresence command to TPM.
165 @param[in] PhysicalPresence The state to set the TPMs Physical Presence flags.
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.
175 Tpm12PhysicalPresence (
176 IN TPM_PHYSICAL_PRESENCE PhysicalPresence
180 Send TPM_ContinueSelfTest command to TPM.
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.
190 Tpm12ContinueSelfTest (
195 Get TPM capability permanent flags.
197 @param[out] TpmPermanentFlags Pointer to the buffer for returned flag structure.
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.
207 Tpm12GetCapabilityFlagPermanent (
208 OUT TPM_PERMANENT_FLAGS
*TpmPermanentFlags
212 Get TPM capability volatile flags.
214 @param[out] VolatileFlags Pointer to the buffer for returned flag structure.
216 @retval EFI_SUCCESS Operation completed successfully.
217 @retval EFI_DEVICE_ERROR The command was unsuccessful.
222 Tpm12GetCapabilityFlagVolatile (
223 OUT TPM_STCLEAR_FLAGS
*VolatileFlags