]> git.proxmox.com Git - mirror_edk2.git/blobdiff - SecurityPkg/Library/Tpm2CommandLib/Tpm2Miscellaneous.c
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / SecurityPkg / Library / Tpm2CommandLib / Tpm2Miscellaneous.c
index 914ad7f70befa68d7fcced16cb1d2313a23cfbdb..6f6ac1e2d075fff66fecd9342bae66c7e4bfb888 100644 (file)
@@ -1,14 +1,8 @@
 /** @file\r
-  Implement TPM2 Miscellanenous related command.\r
+  Implement TPM2 Miscellaneous related command.\r
 \r
-Copyright (c) 2013, Intel Corporation. All rights reserved. <BR>\r
-This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution.  The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+Copyright (c) 2013 - 2016, Intel Corporation. All rights reserved. <BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
@@ -30,9 +24,9 @@ typedef struct {
 } TPM2_SET_ALGORITHM_SET_COMMAND;\r
 \r
 typedef struct {\r
-  TPM2_RESPONSE_HEADER       Header;\r
-  UINT32                     AuthSessionSize;\r
-  TPMS_AUTH_RESPONSE         AuthSession;\r
+  TPM2_RESPONSE_HEADER    Header;\r
+  UINT32                  AuthSessionSize;\r
+  TPMS_AUTH_RESPONSE      AuthSession;\r
 } TPM2_SET_ALGORITHM_SET_RESPONSE;\r
 \r
 #pragma pack()\r
@@ -52,24 +46,24 @@ typedef struct {
 EFI_STATUS\r
 EFIAPI\r
 Tpm2SetAlgorithmSet (\r
-  IN  TPMI_RH_PLATFORM          AuthHandle,\r
-  IN  TPMS_AUTH_COMMAND         *AuthSession,\r
-  IN  UINT32                    AlgorithmSet\r
+  IN  TPMI_RH_PLATFORM   AuthHandle,\r
+  IN  TPMS_AUTH_COMMAND  *AuthSession,\r
+  IN  UINT32             AlgorithmSet\r
   )\r
 {\r
-  EFI_STATUS                                 Status;\r
-  TPM2_SET_ALGORITHM_SET_COMMAND             SendBuffer;\r
-  TPM2_SET_ALGORITHM_SET_RESPONSE            RecvBuffer;\r
-  UINT32                                     SendBufferSize;\r
-  UINT32                                     RecvBufferSize;\r
-  UINT8                                      *Buffer;\r
-  UINT32                                     SessionInfoSize;\r
+  EFI_STATUS                       Status;\r
+  TPM2_SET_ALGORITHM_SET_COMMAND   SendBuffer;\r
+  TPM2_SET_ALGORITHM_SET_RESPONSE  RecvBuffer;\r
+  UINT32                           SendBufferSize;\r
+  UINT32                           RecvBufferSize;\r
+  UINT8                            *Buffer;\r
+  UINT32                           SessionInfoSize;\r
 \r
   //\r
   // Construct command\r
   //\r
-  SendBuffer.Header.tag = SwapBytes16(TPM_ST_SESSIONS);\r
-  SendBuffer.Header.commandCode = SwapBytes32(TPM_CC_SetAlgorithmSet);\r
+  SendBuffer.Header.tag         = SwapBytes16 (TPM_ST_SESSIONS);\r
+  SendBuffer.Header.commandCode = SwapBytes32 (TPM_CC_SetAlgorithmSet);\r
 \r
   SendBuffer.AuthHandle = SwapBytes32 (AuthHandle);\r
 \r
@@ -79,36 +73,45 @@ Tpm2SetAlgorithmSet (
   Buffer = (UINT8 *)&SendBuffer.AuthSession;\r
 \r
   // sessionInfoSize\r
-  SessionInfoSize = CopyAuthSessionCommand (AuthSession, Buffer);\r
-  Buffer += SessionInfoSize;\r
-  SendBuffer.AuthSessionSize = SwapBytes32(SessionInfoSize);\r
+  SessionInfoSize            = CopyAuthSessionCommand (AuthSession, Buffer);\r
+  Buffer                    += SessionInfoSize;\r
+  SendBuffer.AuthSessionSize = SwapBytes32 (SessionInfoSize);\r
 \r
   //\r
   // Real data\r
   //\r
-  WriteUnaligned32 ((UINT32 *)Buffer, SwapBytes32(AlgorithmSet));\r
-  Buffer += sizeof(UINT32);\r
+  WriteUnaligned32 ((UINT32 *)Buffer, SwapBytes32 (AlgorithmSet));\r
+  Buffer += sizeof (UINT32);\r
 \r
-  SendBufferSize = (UINT32)((UINTN)Buffer - (UINTN)&SendBuffer);\r
+  SendBufferSize              = (UINT32)((UINTN)Buffer - (UINTN)&SendBuffer);\r
   SendBuffer.Header.paramSize = SwapBytes32 (SendBufferSize);\r
 \r
   //\r
   // send Tpm command\r
   //\r
   RecvBufferSize = sizeof (RecvBuffer);\r
-  Status = Tpm2SubmitCommand (SendBufferSize, (UINT8 *)&SendBuffer, &RecvBufferSize, (UINT8 *)&RecvBuffer);\r
+  Status         = Tpm2SubmitCommand (SendBufferSize, (UINT8 *)&SendBuffer, &RecvBufferSize, (UINT8 *)&RecvBuffer);\r
   if (EFI_ERROR (Status)) {\r
-    return Status;\r
+    goto Done;\r
   }\r
 \r
   if (RecvBufferSize < sizeof (TPM2_RESPONSE_HEADER)) {\r
-    DEBUG ((EFI_D_ERROR, "Tpm2SetAlgorithmSet - RecvBufferSize Error - %x\n", RecvBufferSize));\r
-    return EFI_DEVICE_ERROR;\r
+    DEBUG ((DEBUG_ERROR, "Tpm2SetAlgorithmSet - RecvBufferSize Error - %x\n", RecvBufferSize));\r
+    Status = EFI_DEVICE_ERROR;\r
+    goto Done;\r
   }\r
-  if (SwapBytes32(RecvBuffer.Header.responseCode) != TPM_RC_SUCCESS) {\r
-    DEBUG ((EFI_D_ERROR, "Tpm2SetAlgorithmSet - responseCode - %x\n", SwapBytes32(RecvBuffer.Header.responseCode)));\r
-    return EFI_DEVICE_ERROR;\r
+\r
+  if (SwapBytes32 (RecvBuffer.Header.responseCode) != TPM_RC_SUCCESS) {\r
+    DEBUG ((DEBUG_ERROR, "Tpm2SetAlgorithmSet - responseCode - %x\n", SwapBytes32 (RecvBuffer.Header.responseCode)));\r
+    Status = EFI_DEVICE_ERROR;\r
+    goto Done;\r
   }\r
 \r
-  return EFI_SUCCESS;\r
+Done:\r
+  //\r
+  // Clear AuthSession Content\r
+  //\r
+  ZeroMem (&SendBuffer, sizeof (SendBuffer));\r
+  ZeroMem (&RecvBuffer, sizeof (RecvBuffer));\r
+  return Status;\r
 }\r