]> git.proxmox.com Git - mirror_edk2.git/blame - SecurityPkg/Library/Tpm12CommandLib/Tpm12Pcr.c
SecurityPkg: Apply uncrustify changes
[mirror_edk2.git] / SecurityPkg / Library / Tpm12CommandLib / Tpm12Pcr.c
CommitLineData
83b9662f
MK
1/** @file\r
2 Implement TPM1.2 PCR related commands.\r
3\r
4Copyright (c) 2016, Intel Corporation. All rights reserved. <BR>\r
289b714b 5SPDX-License-Identifier: BSD-2-Clause-Patent\r
83b9662f
MK
6\r
7**/\r
8\r
9#include <PiPei.h>\r
10#include <Library/Tpm12CommandLib.h>\r
11#include <Library/BaseLib.h>\r
12#include <Library/DebugLib.h>\r
13#include <Library/BaseMemoryLib.h>\r
14#include <Library/Tpm12DeviceLib.h>\r
15\r
16#pragma pack(1)\r
17\r
18typedef struct {\r
c411b485
MK
19 TPM_RQU_COMMAND_HDR Hdr;\r
20 TPM_PCRINDEX PcrIndex;\r
21 TPM_DIGEST TpmDigest;\r
83b9662f
MK
22} TPM_CMD_EXTEND;\r
23\r
24typedef struct {\r
c411b485
MK
25 TPM_RSP_COMMAND_HDR Hdr;\r
26 TPM_DIGEST TpmDigest;\r
83b9662f
MK
27} TPM_RSP_EXTEND;\r
28\r
29#pragma pack()\r
30\r
31/**\r
32Extend a TPM PCR.\r
33\r
34@param[in] DigestToExtend The 160 bit value representing the event to be recorded.\r
35@param[in] PcrIndex The PCR to be updated.\r
36@param[out] NewPcrValue New PCR value after extend.\r
37\r
38@retval EFI_SUCCESS Operation completed successfully.\r
39@retval EFI_TIMEOUT The register can't run into the expected status in time.\r
40@retval EFI_BUFFER_TOO_SMALL Response data buffer is too small.\r
41@retval EFI_DEVICE_ERROR Unexpected device behavior.\r
42\r
43**/\r
44EFI_STATUS\r
45EFIAPI\r
46Tpm12Extend (\r
47 IN TPM_DIGEST *DigestToExtend,\r
48 IN TPM_PCRINDEX PcrIndex,\r
49 OUT TPM_DIGEST *NewPcrValue\r
50 )\r
51{\r
52 EFI_STATUS Status;\r
53 TPM_CMD_EXTEND Command;\r
54 TPM_RSP_EXTEND Response;\r
55 UINT32 Length;\r
56\r
57 //\r
58 // send Tpm command TPM_ORD_Extend\r
59 //\r
60 Command.Hdr.tag = SwapBytes16 (TPM_TAG_RQU_COMMAND);\r
61 Command.Hdr.paramSize = SwapBytes32 (sizeof (Command));\r
62 Command.Hdr.ordinal = SwapBytes32 (TPM_ORD_Extend);\r
63 Command.PcrIndex = SwapBytes32 (PcrIndex);\r
64 CopyMem (&Command.TpmDigest, DigestToExtend, sizeof (Command.TpmDigest));\r
65 Length = sizeof (Response);\r
66 Status = Tpm12SubmitCommand (sizeof (Command), (UINT8 *)&Command, &Length, (UINT8 *)&Response);\r
67 if (EFI_ERROR (Status)) {\r
68 return Status;\r
69 }\r
70\r
c411b485
MK
71 if (SwapBytes32 (Response.Hdr.returnCode) != TPM_SUCCESS) {\r
72 DEBUG ((DEBUG_ERROR, "Tpm12Extend: Response Code error! 0x%08x\r\n", SwapBytes32 (Response.Hdr.returnCode)));\r
950a3bc7
ZC
73 return EFI_DEVICE_ERROR;\r
74 }\r
75\r
83b9662f
MK
76 if (NewPcrValue != NULL) {\r
77 CopyMem (NewPcrValue, &Response.TpmDigest, sizeof (*NewPcrValue));\r
78 }\r
79\r
80 return Status;\r
81}\r