1/** @file
2  VFR file used by the TCG2 configuration component.
3
4Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
5SPDX-License-Identifier: BSD-2-Clause-Patent
6
7**/
8
9#include "Tcg2ConfigNvData.h"
10
11formset
12  guid      = TCG2_CONFIG_FORM_SET_GUID,
13  title     = STRING_TOKEN(STR_TCG2_TITLE),
14  help      = STRING_TOKEN(STR_TCG2_HELP),
15  classguid = EFI_HII_PLATFORM_SETUP_FORMSET_GUID,
16
17  efivarstore TCG2_CONFIGURATION_INFO,
18    varid = TCG2_CONFIGURATION_INFO_VARSTORE_ID,
19    attribute = 0x02,  // EFI variable attributes  EFI_VARIABLE_BOOTSERVICE_ACCESS
20    name  = TCG2_CONFIGURATION_INFO,
21    guid  = TCG2_CONFIG_FORM_SET_GUID;
22
23  efivarstore TCG2_CONFIGURATION,
24    varid = TCG2_CONFIGURATION_VARSTORE_ID,
25    attribute = 0x03,  // EFI variable attributes  EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE
26    name  = TCG2_CONFIGURATION,
27    guid  = TCG2_CONFIG_FORM_SET_GUID;
28
29  efivarstore TCG2_VERSION,
30    varid = TCG2_VERSION_VARSTORE_ID,
31    attribute = 0x03,  // EFI variable attributes  EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE
32    name  = TCG2_VERSION,
33    guid  = TCG2_CONFIG_FORM_SET_GUID;
34
35  form formid = TCG2_CONFIGURATION_FORM_ID,
36    title = STRING_TOKEN(STR_TCG2_TITLE);
37
38    subtitle text = STRING_TOKEN(STR_NULL);
39
40    text
41      help   = STRING_TOKEN(STR_TCG2_DEVICE_STATE_HELP),
42      text   = STRING_TOKEN(STR_TCG2_DEVICE_STATE_PROMPT),
43        text   = STRING_TOKEN(STR_TCG2_DEVICE_STATE_CONTENT);
44
45    oneof varid  = TCG2_CONFIGURATION.TpmDevice,
46          questionid = KEY_TPM_DEVICE,
47          prompt = STRING_TOKEN(STR_TCG2_DEVICE_PROMPT),
48          help   = STRING_TOKEN(STR_TCG2_DEVICE_HELP),
49          flags  = INTERACTIVE,
50            option text = STRING_TOKEN(STR_TCG2_TPM_1_2),          value = TPM_DEVICE_1_2,          flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;
51            option text = STRING_TOKEN(STR_TCG2_TPM_2_0_DTPM),     value = TPM_DEVICE_2_0_DTPM,     flags = RESET_REQUIRED;
52    endoneof;
53
54    suppressif ideqvallist TCG2_CONFIGURATION.TpmDevice == TPM_DEVICE_NULL TPM_DEVICE_1_2;
55
56    subtitle text = STRING_TOKEN(STR_NULL);
57
58    text
59      help   = STRING_TOKEN(STR_TPM2_ACPI_HID_HELP),
60      text   = STRING_TOKEN(STR_TPM2_ACPI_HID_PROMPT),
61        text   = STRING_TOKEN(STR_TPM2_ACPI_HID_CONTENT);
62
63    text
64      help   = STRING_TOKEN(STR_TPM2_ACPI_REVISION_STATE_HELP),
65      text   = STRING_TOKEN(STR_TPM2_ACPI_REVISION_STATE_PROMPT),
66        text   = STRING_TOKEN(STR_TPM2_ACPI_REVISION_STATE_CONTENT);
67
68    oneof varid  = TCG2_VERSION.Tpm2AcpiTableRev,
69          questionid = KEY_TPM2_ACPI_REVISION,
70          prompt = STRING_TOKEN(STR_TPM2_ACPI_REVISION_PROMPT),
71          help   = STRING_TOKEN(STR_TPM2_ACPI_REVISION_HELP),
72          flags  = INTERACTIVE,
73            option text = STRING_TOKEN(STR_TPM2_ACPI_REVISION_3),     value = TPM2_ACPI_REVISION_3,     flags = RESET_REQUIRED;
74            option text = STRING_TOKEN(STR_TPM2_ACPI_REVISION_4),     value = TPM2_ACPI_REVISION_4,     flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;
75    endoneof;
76
77    subtitle text = STRING_TOKEN(STR_NULL);
78
79    text
80      help   = STRING_TOKEN(STR_TCG2_DEVICE_INTERFACE_STATE_HELP),
81      text   = STRING_TOKEN(STR_TCG2_DEVICE_INTERFACE_STATE_PROMPT),
82        text   = STRING_TOKEN(STR_TCG2_DEVICE_INTERFACE_STATE_CONTENT);
83
84    text
85      help   = STRING_TOKEN(STR_TCG2_DEVICE_INTERFACE_CAPABILITY_HELP),
86      text   = STRING_TOKEN(STR_TCG2_DEVICE_INTERFACE_CAPABILITY_PROMPT),
87        text   = STRING_TOKEN(STR_TCG2_DEVICE_INTERFACE_CAPABILITY_CONTENT);
88
89    suppressif ideqval TCG2_CONFIGURATION_INFO.TpmDeviceInterfacePtpFifoSupported == 0
90            OR ideqval TCG2_CONFIGURATION_INFO.TpmDeviceInterfacePtpCrbSupported == 0;
91    oneof varid  = TCG2_CONFIGURATION_INFO.TpmDeviceInterfaceAttempt,
92          questionid = KEY_TPM_DEVICE_INTERFACE,
93          prompt = STRING_TOKEN(STR_TCG2_DEVICE_INTERFACE_PROMPT),
94          help   = STRING_TOKEN(STR_TCG2_DEVICE_INTERFACE_HELP),
95          flags  = INTERACTIVE,
96            option text = STRING_TOKEN(STR_TCG2_DEVICE_INTERFACE_TIS),          value = TPM_DEVICE_INTERFACE_TIS,          flags = RESET_REQUIRED;
97            option text = STRING_TOKEN(STR_TCG2_DEVICE_INTERFACE_PTP_FIFO),     value = TPM_DEVICE_INTERFACE_PTP_FIFO,     flags = RESET_REQUIRED;
98            option text = STRING_TOKEN(STR_TCG2_DEVICE_INTERFACE_PTP_CRB),      value = TPM_DEVICE_INTERFACE_PTP_CRB,      flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;
99    endoneof;
100    endif;
101
102    endif;
103
104    subtitle text = STRING_TOKEN(STR_NULL);
105
106    suppressif ideqvallist TCG2_CONFIGURATION.TpmDevice == TPM_DEVICE_NULL TPM_DEVICE_1_2;
107    text
108      help   = STRING_TOKEN(STR_TPM2_ACTIVE_HASH_ALGO_HELP),
109      text   = STRING_TOKEN(STR_TPM2_ACTIVE_HASH_ALGO),
110        text   = STRING_TOKEN(STR_TPM2_ACTIVE_HASH_ALGO_CONTENT);
111    text
112      help   = STRING_TOKEN(STR_TPM2_SUPPORTED_HASH_ALGO_HELP),
113      text   = STRING_TOKEN(STR_TPM2_SUPPORTED_HASH_ALGO),
114        text   = STRING_TOKEN(STR_TPM2_SUPPORTED_HASH_ALGO_CONTENT);
115    text
116      help   = STRING_TOKEN(STR_BIOS_HASH_ALGO_HELP),
117      text   = STRING_TOKEN(STR_BIOS_HASH_ALGO),
118        text   = STRING_TOKEN(STR_BIOS_HASH_ALGO_CONTENT);
119
120    subtitle text = STRING_TOKEN(STR_NULL);
121    subtitle text = STRING_TOKEN(STR_TCG2_PP_OPERATION);
122
123    text
124      help   = STRING_TOKEN(STR_TCG2_PPI_VERSION_STATE_HELP),
125      text   = STRING_TOKEN(STR_TCG2_PPI_VERSION_STATE_PROMPT),
126        text   = STRING_TOKEN(STR_TCG2_PPI_VERSION_STATE_CONTENT);
127
128    oneof varid  = TCG2_VERSION.PpiVersion,
129          questionid = KEY_TCG2_PPI_VERSION,
130          prompt = STRING_TOKEN(STR_TCG2_PPI_VERSION_PROMPT),
131          help   = STRING_TOKEN(STR_TCG2_PPI_VERSION_HELP),
132          flags  = INTERACTIVE,
133            option text = STRING_TOKEN(STR_TCG2_PPI_VERSION_1_2), value = TCG2_PPI_VERSION_1_2, flags = RESET_REQUIRED;
134            option text = STRING_TOKEN(STR_TCG2_PPI_VERSION_1_3), value = TCG2_PPI_VERSION_1_3, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;
135    endoneof;
136
137    oneof name = Tpm2Operation,
138          questionid = KEY_TPM2_OPERATION,
139          prompt = STRING_TOKEN(STR_TCG2_OPERATION),
140          help   = STRING_TOKEN(STR_TCG2_OPERATION_HELP),
141          flags  = INTERACTIVE | NUMERIC_SIZE_1,
142            option text = STRING_TOKEN(STR_TCG2_NO_ACTION), value = TCG2_PHYSICAL_PRESENCE_NO_ACTION, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;
143            option text = STRING_TOKEN(STR_TCG2_ENABLE), value = TCG2_PHYSICAL_PRESENCE_ENABLE, flags = RESET_REQUIRED;
144            option text = STRING_TOKEN(STR_TCG2_DISABLE), value = TCG2_PHYSICAL_PRESENCE_DISABLE, flags = RESET_REQUIRED;
145            option text = STRING_TOKEN(STR_TCG2_CLEAR), value = TCG2_PHYSICAL_PRESENCE_CLEAR, flags = RESET_REQUIRED;
146            option text = STRING_TOKEN(STR_TCG2_SET_PCD_BANKS), value = TCG2_PHYSICAL_PRESENCE_SET_PCR_BANKS, flags = RESET_REQUIRED;
147            suppressif ideqval TCG2_CONFIGURATION_INFO.ChangeEPSSupported == 0;
148            option text = STRING_TOKEN(STR_TCG2_CHANGE_EPS), value = TCG2_PHYSICAL_PRESENCE_CHANGE_EPS, flags = RESET_REQUIRED;
149            endif
150            option text = STRING_TOKEN(STR_TCG2_LOG_ALL_DIGESTS), value = TCG2_PHYSICAL_PRESENCE_LOG_ALL_DIGESTS, flags = RESET_REQUIRED;
151            option text = STRING_TOKEN(STR_TCG2_DISABLE_ENDORSEMENT_ENABLE_STORAGE_HIERARCHY), value = TCG2_PHYSICAL_PRESENCE_DISABLE_ENDORSEMENT_ENABLE_STORAGE_HIERARCHY, flags = RESET_REQUIRED;
152    endoneof;
153
154    suppressif NOT questionref(Tpm2Operation) == TCG2_PHYSICAL_PRESENCE_SET_PCR_BANKS;
155    numeric name = Tpm2OperationParameter,
156            questionid = KEY_TPM2_OPERATION_PARAMETER,
157            prompt  = STRING_TOKEN(STR_TCG2_OPERATION_PARAMETER),
158            help    = STRING_TOKEN(STR_TCG2_OPERATION_PARAMETER_HELP),
159            flags   = DISPLAY_UINT_HEX | INTERACTIVE | NUMERIC_SIZE_4,
160            minimum = 0,
161            maximum = 0xFFFFFFFF,
162            step    = 0,
163            default = 0,
164    endnumeric;
165    endif;
166
167    subtitle text = STRING_TOKEN(STR_NULL);
168    subtitle text = STRING_TOKEN(STR_TCG2_CONFIGURATION);
169
170    text
171      help   = STRING_TOKEN(STR_TCG2_SUPPORTED_EVENT_LOG_FORMAT_HELP),
172      text   = STRING_TOKEN(STR_TCG2_SUPPORTED_EVENT_LOG_FORMAT),
173        text   = STRING_TOKEN(STR_TCG2_SUPPORTED_EVENT_LOG_FORMAT_CONTENT);
174
175    text
176      help   = STRING_TOKEN(STR_TCG2_HASH_ALGO_BITMAP_HELP),
177      text   = STRING_TOKEN(STR_TCG2_HASH_ALGO_BITMAP),
178        text   = STRING_TOKEN(STR_TCG2_HASH_ALGO_BITMAP_CONTENT);
179
180    text
181      help   = STRING_TOKEN(STR_TCG2_NUMBER_OF_PCR_BANKS_HELP),
182      text   = STRING_TOKEN(STR_TCG2_NUMBER_OF_PCR_BANKS),
183        text   = STRING_TOKEN(STR_TCG2_NUMBER_OF_PCR_BANKS_CONTENT);
184
185    text
186      help   = STRING_TOKEN(STR_TCG2_ACTIVE_PCR_BANKS_HELP),
187      text   = STRING_TOKEN(STR_TCG2_ACTIVE_PCR_BANKS),
188        text   = STRING_TOKEN(STR_TCG2_ACTIVE_PCR_BANKS_CONTENT);
189
190    subtitle text = STRING_TOKEN(STR_NULL);
191
192  suppressif ideqval TCG2_CONFIGURATION_INFO.Sha1Supported == 0;
193    checkbox name = TCG2ActivatePCRBank0,
194            questionid = KEY_TPM2_PCR_BANKS_REQUEST_0,
195            prompt     = STRING_TOKEN(STR_TCG2_PCR_BANK_SHA1),
196            help       = STRING_TOKEN(STR_TCG2_PCR_BANK_SHA1_HELP),
197            flags      = INTERACTIVE | RESET_REQUIRED,
198            default    = 1,
199    endcheckbox;
200  endif;
201
202  suppressif ideqval TCG2_CONFIGURATION_INFO.Sha256Supported == 0;
203    checkbox name = TCG2ActivatePCRBank1,
204            questionid = KEY_TPM2_PCR_BANKS_REQUEST_1,
205            prompt     = STRING_TOKEN(STR_TCG2_PCR_BANK_SHA256),
206            help       = STRING_TOKEN(STR_TCG2_PCR_BANK_SHA256_HELP),
207            flags      = INTERACTIVE | RESET_REQUIRED,
208            default    = 0,
209    endcheckbox;
210  endif;
211
212  suppressif ideqval TCG2_CONFIGURATION_INFO.Sha384Supported == 0;
213    checkbox name = TCG2ActivatePCRBank2,
214            questionid = KEY_TPM2_PCR_BANKS_REQUEST_2,
215            prompt     = STRING_TOKEN(STR_TCG2_PCR_BANK_SHA384),
216            help       = STRING_TOKEN(STR_TCG2_PCR_BANK_SHA384_HELP),
217            flags      = INTERACTIVE | RESET_REQUIRED,
218            default    = 0,
219    endcheckbox;
220  endif;
221
222  suppressif ideqval TCG2_CONFIGURATION_INFO.Sha512Supported == 0;
223    checkbox name = TCG2ActivatePCRBank3,
224            questionid = KEY_TPM2_PCR_BANKS_REQUEST_3,
225            prompt     = STRING_TOKEN(STR_TCG2_PCR_BANK_SHA512),
226            help       = STRING_TOKEN(STR_TCG2_PCR_BANK_SHA512_HELP),
227            flags      = INTERACTIVE | RESET_REQUIRED,
228            default    = 0,
229    endcheckbox;
230  endif;
231
232  suppressif ideqval TCG2_CONFIGURATION_INFO.Sm3Supported == 0;
233    checkbox name = TCG2ActivatePCRBank4,
234            questionid = KEY_TPM2_PCR_BANKS_REQUEST_4,
235            prompt     = STRING_TOKEN(STR_TCG2_PCR_BANK_SM3_256),
236            help       = STRING_TOKEN(STR_TCG2_PCR_BANK_SM3_256_HELP),
237            flags      = INTERACTIVE | RESET_REQUIRED,
238            default    = 0,
239    endcheckbox;
240  endif;
241
242    endif;
243
244  endform;
245
246endformset;
247