summaryrefslogtreecommitdiff
path: root/SecurityPkg/Library/Tpm12CommandLib/Tpm12Startup.c
diff options
context:
space:
mode:
Diffstat (limited to 'SecurityPkg/Library/Tpm12CommandLib/Tpm12Startup.c')
-rw-r--r--SecurityPkg/Library/Tpm12CommandLib/Tpm12Startup.c69
1 files changed, 23 insertions, 46 deletions
diff --git a/SecurityPkg/Library/Tpm12CommandLib/Tpm12Startup.c b/SecurityPkg/Library/Tpm12CommandLib/Tpm12Startup.c
index afbe02e382..bc10e4586a 100644
--- a/SecurityPkg/Library/Tpm12CommandLib/Tpm12Startup.c
+++ b/SecurityPkg/Library/Tpm12CommandLib/Tpm12Startup.c
@@ -12,8 +12,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
-#include <Uefi.h>
-#include <IndustryStandard/Tpm12.h>
+#include <PiPei.h>
#include <Library/BaseMemoryLib.h>
#include <Library/BaseLib.h>
#include <Library/Tpm12DeviceLib.h>
@@ -25,18 +24,6 @@ typedef struct {
TPM_STARTUP_TYPE TpmSt;
} TPM_CMD_START_UP;
-typedef struct {
- TPM_RSP_COMMAND_HDR Hdr;
-} TPM_RSP_START_UP;
-
-typedef struct {
- TPM_RQU_COMMAND_HDR Hdr;
-} TPM_CMD_SAVE_STATE;
-
-typedef struct {
- TPM_RSP_COMMAND_HDR Hdr;
-} TPM_RSP_SAVE_STATE;
-
#pragma pack()
/**
@@ -50,32 +37,27 @@ typedef struct {
EFI_STATUS
EFIAPI
Tpm12Startup (
- IN TPM_STARTUP_TYPE TpmSt
+ IN TPM_STARTUP_TYPE TpmSt
)
{
- EFI_STATUS Status;
- UINT32 TpmRecvSize;
- UINT32 TpmSendSize;
- TPM_CMD_START_UP SendBuffer;
- TPM_RSP_START_UP RecvBuffer;
- UINT32 ReturnCode;
+ EFI_STATUS Status;
+ TPM_CMD_START_UP Command;
+ TPM_RSP_COMMAND_HDR Response;
+ UINT32 Length;
//
// send Tpm command TPM_ORD_Startup
//
- TpmRecvSize = sizeof (TPM_RSP_START_UP);
- TpmSendSize = sizeof (TPM_CMD_START_UP);
- SendBuffer.Hdr.tag = SwapBytes16 (TPM_TAG_RQU_COMMAND);
- SendBuffer.Hdr.paramSize = SwapBytes32 (TpmSendSize);
- SendBuffer.Hdr.ordinal = SwapBytes32 (TPM_ORD_Startup);
- SendBuffer.TpmSt = SwapBytes16 (TpmSt);
-
- Status = Tpm12SubmitCommand (TpmSendSize, (UINT8 *)&SendBuffer, &TpmRecvSize, (UINT8 *)&RecvBuffer);
+ Command.Hdr.tag = SwapBytes16 (TPM_TAG_RQU_COMMAND);
+ Command.Hdr.paramSize = SwapBytes32 (sizeof (Command));
+ Command.Hdr.ordinal = SwapBytes32 (TPM_ORD_Startup);
+ Command.TpmSt = SwapBytes16 (TpmSt);
+ Length = sizeof (Response);
+ Status = Tpm12SubmitCommand (sizeof (Command), (UINT8 *)&Command, &Length, (UINT8 *)&Response);
if (EFI_ERROR (Status)) {
return Status;
}
- ReturnCode = SwapBytes32(RecvBuffer.Hdr.returnCode);
- switch (ReturnCode) {
+ switch (SwapBytes32(Response.returnCode)) {
case TPM_SUCCESS:
case TPM_INVALID_POSTINIT:
// In warm reset, TPM may response TPM_INVALID_POSTINIT
@@ -97,28 +79,23 @@ Tpm12SaveState (
VOID
)
{
- EFI_STATUS Status;
- UINT32 TpmRecvSize;
- UINT32 TpmSendSize;
- TPM_CMD_SAVE_STATE SendBuffer;
- TPM_RSP_SAVE_STATE RecvBuffer;
- UINT32 ReturnCode;
+ EFI_STATUS Status;
+ TPM_RQU_COMMAND_HDR Command;
+ TPM_RSP_COMMAND_HDR Response;
+ UINT32 Length;
//
// send Tpm command TPM_ORD_SaveState
//
- TpmRecvSize = sizeof (TPM_RSP_SAVE_STATE);
- TpmSendSize = sizeof (TPM_CMD_SAVE_STATE);
- SendBuffer.Hdr.tag = SwapBytes16 (TPM_TAG_RQU_COMMAND);
- SendBuffer.Hdr.paramSize = SwapBytes32 (TpmSendSize);
- SendBuffer.Hdr.ordinal = SwapBytes32 (TPM_ORD_SaveState);
-
- Status = Tpm12SubmitCommand (TpmSendSize, (UINT8 *)&SendBuffer, &TpmRecvSize, (UINT8 *)&RecvBuffer);
+ Command.tag = SwapBytes16 (TPM_TAG_RQU_COMMAND);
+ Command.paramSize = SwapBytes32 (sizeof (Command));
+ Command.ordinal = SwapBytes32 (TPM_ORD_SaveState);
+ Length = sizeof (Response);
+ Status = Tpm12SubmitCommand (sizeof (Command), (UINT8 *)&Command, &Length, (UINT8 *)&Response);
if (EFI_ERROR (Status)) {
return Status;
}
- ReturnCode = SwapBytes32(RecvBuffer.Hdr.returnCode);
- switch (ReturnCode) {
+ switch (SwapBytes32 (Response.returnCode)) {
case TPM_SUCCESS:
return EFI_SUCCESS;
default: