]> git.proxmox.com Git - mirror_edk2.git/blob - SecurityPkg/Include/Library/Tpm12CommandLib.h
Add TPM12 NV related function.
[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 - 2015, 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 #endif