]> git.proxmox.com Git - mirror_edk2.git/blame - SecurityPkg/Library/Tpm2CommandLib/Tpm2Context.c
SecurityPkg: Change use of EFI_D_* to DEBUG_*
[mirror_edk2.git] / SecurityPkg / Library / Tpm2CommandLib / Tpm2Context.c
CommitLineData
967eacca
JY
1/** @file\r
2 Implement TPM2 Context related command.\r
3\r
b3548d32 4Copyright (c) 2014 - 2018, Intel Corporation. All rights reserved. <BR>\r
289b714b 5SPDX-License-Identifier: BSD-2-Clause-Patent\r
967eacca
JY
6\r
7**/\r
8\r
9#include <IndustryStandard/UefiTcgPlatform.h>\r
10#include <Library/Tpm2CommandLib.h>\r
11#include <Library/Tpm2DeviceLib.h>\r
12#include <Library/BaseMemoryLib.h>\r
13#include <Library/BaseLib.h>\r
14#include <Library/DebugLib.h>\r
15\r
16#pragma pack(1)\r
17\r
18typedef struct {\r
19 TPM2_COMMAND_HEADER Header;\r
20 TPMI_DH_CONTEXT FlushHandle;\r
21} TPM2_FLUSH_CONTEXT_COMMAND;\r
22\r
23typedef struct {\r
24 TPM2_RESPONSE_HEADER Header;\r
25} TPM2_FLUSH_CONTEXT_RESPONSE;\r
26\r
27#pragma pack()\r
28\r
29/**\r
30 This command causes all context associated with a loaded object or session to be removed from TPM memory.\r
31\r
32 @param[in] FlushHandle The handle of the item to flush.\r
b3548d32 33\r
967eacca
JY
34 @retval EFI_SUCCESS Operation completed successfully.\r
35 @retval EFI_DEVICE_ERROR The command was unsuccessful.\r
36**/\r
37EFI_STATUS\r
38EFIAPI\r
39Tpm2FlushContext (\r
40 IN TPMI_DH_CONTEXT FlushHandle\r
41 )\r
42{\r
43 EFI_STATUS Status;\r
44 TPM2_FLUSH_CONTEXT_COMMAND SendBuffer;\r
45 TPM2_FLUSH_CONTEXT_RESPONSE RecvBuffer;\r
46 UINT32 SendBufferSize;\r
47 UINT32 RecvBufferSize;\r
48\r
49 //\r
50 // Construct command\r
51 //\r
52 SendBuffer.Header.tag = SwapBytes16(TPM_ST_NO_SESSIONS);\r
53 SendBuffer.Header.commandCode = SwapBytes32(TPM_CC_FlushContext);\r
54\r
55 SendBuffer.FlushHandle = SwapBytes32 (FlushHandle);\r
b3548d32 56\r
967eacca
JY
57 SendBufferSize = (UINT32) sizeof (SendBuffer);\r
58 SendBuffer.Header.paramSize = SwapBytes32 (SendBufferSize);\r
59\r
60 //\r
61 // send Tpm command\r
62 //\r
63 RecvBufferSize = sizeof (RecvBuffer);\r
64 Status = Tpm2SubmitCommand (SendBufferSize, (UINT8 *)&SendBuffer, &RecvBufferSize, (UINT8 *)&RecvBuffer);\r
65 if (EFI_ERROR (Status)) {\r
66 return Status;\r
67 }\r
68\r
69 if (RecvBufferSize < sizeof (TPM2_RESPONSE_HEADER)) {\r
e905fbb0 70 DEBUG ((DEBUG_ERROR, "Tpm2FlushContext - RecvBufferSize Error - %x\n", RecvBufferSize));\r
967eacca
JY
71 return EFI_DEVICE_ERROR;\r
72 }\r
73 if (SwapBytes32(RecvBuffer.Header.responseCode) != TPM_RC_SUCCESS) {\r
e905fbb0 74 DEBUG ((DEBUG_ERROR, "Tpm2FlushContext - responseCode - %x\n", SwapBytes32(RecvBuffer.Header.responseCode)));\r
967eacca
JY
75 return EFI_DEVICE_ERROR;\r
76 }\r
77\r
78 return EFI_SUCCESS;\r
79}\r