]> git.proxmox.com Git - mirror_edk2.git/blobdiff - SecurityPkg/Tcg/Tcg2Config/Tcg2ConfigImpl.c
SecurityPkg: Add TPM PTP detection in TPM12 device lib.
[mirror_edk2.git] / SecurityPkg / Tcg / Tcg2Config / Tcg2ConfigImpl.c
index 245376966ea36d2b17c4def5443f1fb5b684ecd0..0d2956074a40554a9125411ea4ab3b068c8d15c6 100644 (file)
@@ -386,6 +386,38 @@ FillBufferWithBootHashAlg (
   }\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
@@ -471,6 +503,7 @@ InstallTcg2ConfigForm (
   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
@@ -531,6 +564,7 @@ InstallTcg2ConfigForm (
     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
@@ -547,6 +581,7 @@ InstallTcg2ConfigForm (
     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
@@ -569,6 +604,19 @@ InstallTcg2ConfigForm (
   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