title = STRING_TOKEN(STR_TCG2_TITLE),\r
help = STRING_TOKEN(STR_TCG2_HELP),\r
classguid = EFI_HII_PLATFORM_SETUP_FORMSET_GUID,\r
+ \r
+ efivarstore TCG2_CONFIGURATION_INFO,\r
+ varid = TCG2_CONFIGURATION_INFO_VARSTORE_ID,\r
+ attribute = 0x02, // EFI variable attribures EFI_VARIABLE_BOOTSERVICE_ACCESS\r
+ name = TCG2_CONFIGURATION_INFO,\r
+ guid = TCG2_CONFIG_FORM_SET_GUID;\r
\r
efivarstore TCG2_CONFIGURATION,\r
varid = TCG2_CONFIGURATION_VARSTORE_ID,\r
\r
subtitle text = STRING_TOKEN(STR_NULL);\r
\r
+ suppressif ideqval TCG2_CONFIGURATION_INFO.Sha1Supported == 0;\r
checkbox name = TCG2ActivatePCRBank0,\r
questionid = KEY_TPM2_PCR_BANKS_REQUEST_0,\r
prompt = STRING_TOKEN(STR_TCG2_PCR_BANK_SHA1),\r
flags = INTERACTIVE,\r
default = 1,\r
endcheckbox;\r
+ endif;\r
\r
+ suppressif ideqval TCG2_CONFIGURATION_INFO.Sha256Supported == 0;\r
checkbox name = TCG2ActivatePCRBank1,\r
questionid = KEY_TPM2_PCR_BANKS_REQUEST_1,\r
prompt = STRING_TOKEN(STR_TCG2_PCR_BANK_SHA256),\r
flags = INTERACTIVE,\r
default = 0,\r
endcheckbox;\r
+ endif;\r
\r
+ suppressif ideqval TCG2_CONFIGURATION_INFO.Sha384Supported == 0;\r
checkbox name = TCG2ActivatePCRBank2,\r
questionid = KEY_TPM2_PCR_BANKS_REQUEST_2,\r
prompt = STRING_TOKEN(STR_TCG2_PCR_BANK_SHA384),\r
flags = INTERACTIVE,\r
default = 0,\r
endcheckbox;\r
+ endif;\r
\r
+ suppressif ideqval TCG2_CONFIGURATION_INFO.Sha512Supported == 0;\r
checkbox name = TCG2ActivatePCRBank3,\r
questionid = KEY_TPM2_PCR_BANKS_REQUEST_3,\r
prompt = STRING_TOKEN(STR_TCG2_PCR_BANK_SHA512),\r
flags = INTERACTIVE,\r
default = 0,\r
endcheckbox;\r
+ endif;\r
\r
+ suppressif ideqval TCG2_CONFIGURATION_INFO.Sm3Supported == 0;\r
checkbox name = TCG2ActivatePCRBank4,\r
questionid = KEY_TPM2_PCR_BANKS_REQUEST_4,\r
prompt = STRING_TOKEN(STR_TCG2_PCR_BANK_SM3_256),\r
flags = INTERACTIVE,\r
default = 0,\r
endcheckbox;\r
+ endif;\r
\r
endif;\r
\r
}\r
}\r
\r
+/**\r
+ Set ConfigInfo according to TpmAlgHash.\r
+\r
+ @param[in,out] Tcg2ConfigInfo TCG2 config info.\r
+ @param[in] TpmAlgHash TpmAlgHash.\r
+\r
+**/\r
+VOID\r
+SetConfigInfo (\r
+ IN OUT TCG2_CONFIGURATION_INFO *Tcg2ConfigInfo,\r
+ IN UINT32 TpmAlgHash\r
+ )\r
+{\r
+ switch (TpmAlgHash) {\r
+ case TPM_ALG_SHA1:\r
+ Tcg2ConfigInfo->Sha1Supported = TRUE;\r
+ break;\r
+ case TPM_ALG_SHA256:\r
+ Tcg2ConfigInfo->Sha256Supported = TRUE;\r
+ break;\r
+ case TPM_ALG_SHA384:\r
+ Tcg2ConfigInfo->Sha384Supported = TRUE;\r
+ break;\r
+ case TPM_ALG_SHA512:\r
+ Tcg2ConfigInfo->Sha512Supported = TRUE;\r
+ break;\r
+ case TPM_ALG_SM3_256:\r
+ Tcg2ConfigInfo->Sm3Supported = TRUE;\r
+ break;\r
+ }\r
+}\r
+\r
/**\r
Fill Buffer With TCG2EventLogFormat.\r
\r
UINTN Index;\r
TPML_PCR_SELECTION Pcrs;\r
CHAR16 TempBuffer[1024];\r
+ TCG2_CONFIGURATION_INFO Tcg2ConfigInfo;\r
\r
DriverHandle = NULL;\r
ConfigAccess = &PrivateData->ConfigAccess;\r
break;\r
}\r
\r
+ ZeroMem (&Tcg2ConfigInfo, sizeof(Tcg2ConfigInfo));\r
Status = Tpm2GetCapabilityPcrs (&Pcrs);\r
if (EFI_ERROR (Status)) {\r
HiiSetString (PrivateData->HiiHandle, STRING_TOKEN (STR_TPM2_ACTIVE_HASH_ALGO_CONTENT), L"[Unknown]", NULL);\r
TempBuffer[0] = 0;\r
for (Index = 0; Index < Pcrs.count; Index++) {\r
AppendBufferWithTpmAlgHash (TempBuffer, sizeof(TempBuffer), Pcrs.pcrSelections[Index].hash);\r
+ SetConfigInfo (&Tcg2ConfigInfo, Pcrs.pcrSelections[Index].hash);\r
}\r
HiiSetString (PrivateData->HiiHandle, STRING_TOKEN (STR_TPM2_SUPPORTED_HASH_ALGO_CONTENT), TempBuffer, NULL);\r
}\r
FillBufferWithBootHashAlg (TempBuffer, sizeof(TempBuffer), PrivateData->ProtocolCapability.ActivePcrBanks);\r
HiiSetString (PrivateData->HiiHandle, STRING_TOKEN (STR_TCG2_ACTIVE_PCR_BANKS_CONTENT), TempBuffer, NULL);\r
\r
+ //\r
+ // Set ConfigInfo, to control the check box.\r
+ //\r
+ Status = gRT->SetVariable (\r
+ TCG2_STORAGE_INFO_NAME,\r
+ &gTcg2ConfigFormSetGuid,\r
+ EFI_VARIABLE_BOOTSERVICE_ACCESS,\r
+ sizeof(Tcg2ConfigInfo),\r
+ &Tcg2ConfigInfo\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ DEBUG ((EFI_D_ERROR, "Tcg2ConfigDriver: Fail to set TCG2_STORAGE_INFO_NAME\n"));\r
+ }\r
return EFI_SUCCESS; \r
}\r
\r
#define EFI_TCG2_EVENT_LOG_FORMAT_ALL (EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2 | EFI_TCG2_EVENT_LOG_FORMAT_TCG_2)\r
\r
#define TCG2_CONFIGURATION_VARSTORE_ID 0x0001\r
+#define TCG2_CONFIGURATION_INFO_VARSTORE_ID 0x0002\r
#define TCG2_CONFIGURATION_FORM_ID 0x0001\r
\r
#define KEY_TPM_DEVICE 0x2000\r
UINT8 TpmDevice;\r
} TCG2_CONFIGURATION;\r
\r
+typedef struct {\r
+ UINT8 Sha1Supported;\r
+ UINT8 Sha256Supported;\r
+ UINT8 Sha384Supported;\r
+ UINT8 Sha512Supported;\r
+ UINT8 Sm3Supported;\r
+} TCG2_CONFIGURATION_INFO;\r
+\r
//\r
// Variable saved for S3, TPM detected, only valid in S3 path.\r
// This variable is ReadOnly.\r
UINT8 TpmDeviceDetected;\r
} TCG2_DEVICE_DETECTION;\r
\r
-#define TCG2_STORAGE_NAME L"TCG2_CONFIGURATION"\r
+#define TCG2_STORAGE_NAME L"TCG2_CONFIGURATION"\r
+#define TCG2_STORAGE_INFO_NAME L"TCG2_CONFIGURATION_INFO"\r
#define TCG2_DEVICE_DETECTION_NAME L"TCG2_DEVICE_DETECTION"\r
\r
#define TPM_INSTANCE_ID_LIST { \\r