#include <Library/PcdLib.h>\r
#include <Library/UefiLib.h>\r
#include <Library/ReportStatusCodeLib.h>\r
-\r
-#include "TpmComm.h"\r
+#include <Library/Tpm12CommandLib.h>\r
+#include <Library/BaseCryptLib.h>\r
\r
#define TCG_DXE_DATA_FROM_THIS(this) \\r
BASE_CR (this, TCG_DXE_DATA, TcgProtocol)\r
return EFI_SUCCESS;\r
}\r
\r
+/**\r
+Single function calculates SHA1 digest value for all raw data. It\r
+combines Sha1Init(), Sha1Update() and Sha1Final().\r
+\r
+@param[in] Data Raw data to be digested.\r
+@param[in] DataLen Size of the raw data.\r
+@param[out] Digest Pointer to a buffer that stores the final digest.\r
+\r
+@retval EFI_SUCCESS Always successfully calculate the final digest.\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+TpmCommHashAll (\r
+ IN CONST UINT8 *Data,\r
+ IN UINTN DataLen,\r
+ OUT TPM_DIGEST *Digest\r
+ )\r
+{\r
+ VOID *Sha1Ctx;\r
+ UINTN CtxSize;\r
+\r
+ CtxSize = Sha1GetContextSize ();\r
+ Sha1Ctx = AllocatePool (CtxSize);\r
+ ASSERT (Sha1Ctx != NULL);\r
+\r
+ Sha1Init (Sha1Ctx);\r
+ Sha1Update (Sha1Ctx, Data, DataLen);\r
+ Sha1Final (Sha1Ctx, (UINT8 *)Digest);\r
+\r
+ FreePool (Sha1Ctx);\r
+\r
+ return EFI_SUCCESS;\r
+}\r
+\r
/**\r
This service abstracts the capability to do a hash operation on a data buffer.\r
\r
}\r
}\r
\r
+/**\r
+Add a new entry to the Event Log.\r
+\r
+@param[in, out] EventLogPtr Pointer to the Event Log data.\r
+@param[in, out] LogSize Size of the Event Log.\r
+@param[in] MaxSize Maximum size of the Event Log.\r
+@param[in] NewEventHdr Pointer to a TCG_PCR_EVENT_HDR data structure.\r
+@param[in] NewEventData Pointer to the new event data.\r
+\r
+@retval EFI_SUCCESS The new event log entry was added.\r
+@retval EFI_OUT_OF_RESOURCES No enough memory to log the new event.\r
+\r
+**/\r
+EFI_STATUS\r
+TpmCommLogEvent (\r
+ IN OUT UINT8 **EventLogPtr,\r
+ IN OUT UINTN *LogSize,\r
+ IN UINTN MaxSize,\r
+ IN TCG_PCR_EVENT_HDR *NewEventHdr,\r
+ IN UINT8 *NewEventData\r
+ )\r
+{\r
+ UINTN NewLogSize;\r
+\r
+ //\r
+ // Prevent Event Overflow\r
+ //\r
+ if (NewEventHdr->EventSize > (UINTN)(~0) - sizeof (*NewEventHdr)) {\r
+ return EFI_OUT_OF_RESOURCES;\r
+ }\r
+\r
+ NewLogSize = sizeof (*NewEventHdr) + NewEventHdr->EventSize;\r
+ if (NewLogSize > MaxSize - *LogSize) {\r
+ return EFI_OUT_OF_RESOURCES;\r
+ }\r
+\r
+ *EventLogPtr += *LogSize;\r
+ *LogSize += NewLogSize;\r
+ CopyMem (*EventLogPtr, NewEventHdr, sizeof (*NewEventHdr));\r
+ CopyMem (\r
+ *EventLogPtr + sizeof (*NewEventHdr),\r
+ NewEventData,\r
+ NewEventHdr->EventSize\r
+ );\r
+ return EFI_SUCCESS;\r
+}\r
+\r
/**\r
Add a new entry to the Event Log.\r
\r
IN UINT8 *TpmOutputParameterBlock\r
)\r
{\r
- TCG_DXE_DATA *TcgData;\r
-\r
if (TpmInputParameterBlock == NULL || \r
TpmOutputParameterBlock == NULL || \r
TpmInputParameterBlockSize == 0 ||\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
- TcgData = TCG_DXE_DATA_FROM_THIS (This);\r
-\r
- return TisPcExecute (\r
- "%r%/%r",\r
+ return Tpm12SubmitCommand (\r
+ TpmInputParameterBlockSize,\r
TpmInputParameterBlock,\r
- (UINTN) TpmInputParameterBlockSize,\r
- TpmOutputParameterBlock,\r
- (UINTN) TpmOutputParameterBlockSize\r
+ &TpmOutputParameterBlockSize,\r
+ TpmOutputParameterBlock\r
);\r
}\r
\r
}\r
}\r
\r
- Status = TpmCommExtend (\r
+ Status = Tpm12Extend (\r
&NewEventHdr->Digest,\r
NewEventHdr->PCRIndex,\r
NULL\r
**/\r
EFI_STATUS\r
GetTpmStatus (\r
- OUT BOOLEAN *TPMDeactivatedFlag\r
+ OUT BOOLEAN *TPMDeactivatedFlag\r
)\r
{\r
- EFI_STATUS Status;\r
- TPM_STCLEAR_FLAGS VFlags;\r
+ EFI_STATUS Status;\r
+ TPM_STCLEAR_FLAGS VolatileFlags;\r
\r
- Status = TpmCommGetFlags (\r
- TPM_CAP_FLAG_VOLATILE,\r
- &VFlags,\r
- sizeof (VFlags)\r
- );\r
+ Status = Tpm12GetCapabilityFlagVolatile (&VolatileFlags);\r
if (!EFI_ERROR (Status)) {\r
- *TPMDeactivatedFlag = VFlags.deactivated;\r
+ *TPMDeactivatedFlag = VolatileFlags.deactivated;\r
}\r
\r
return Status;\r
\r
[Sources]\r
TcgDxe.c\r
- TisDxe.c\r
- TpmComm.c\r
- TpmComm.h\r
\r
[Packages]\r
MdePkg/MdePkg.dec\r
UefiLib\r
PcdLib\r
ReportStatusCodeLib\r
+ Tpm12CommandLib\r
\r
[Guids]\r
gEfiGlobalVariableGuid ## SOMETIMES_CONSUMES ## Variable:L"BootXXXX"\r
+++ /dev/null
-/** @file \r
- TIS (TPM Interface Specification) functions used by TPM Dxe driver.\r
- \r
-Copyright (c) 2005 - 2016, 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
-\r
-**/\r
-\r
-#include <IndustryStandard/Tpm12.h>\r
-#include <Library/TimerLib.h>\r
-#include <Library/Tpm12DeviceLib.h>\r
-#include <Library/DebugLib.h>\r
-#include <Library/BaseLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
-\r
-//\r
-// Max TPM command/reponse length\r
-//\r
-#define TPMCMDBUFLENGTH SIZE_1KB\r
-\r
-STATIC UINT8 TpmCommandBuf[TPMCMDBUFLENGTH];\r
-STATIC UINT8 TpmResponseBuf[TPMCMDBUFLENGTH];\r
-\r
-/**\r
- Format TPM command data according to the format control character.\r
-\r
- @param[in] FmtChar Format control character. \r
- @param[in, out] ap List of arguments. \r
- @param[in] TpmBuffer Buffer for TPM command data. \r
- @param[out] DataLength TPM command data length. \r
- \r
- @retval EFI_SUCCESS Operation completed successfully.\r
- @retval EFI_INVALID_PARAMETER Invalid format control character.\r
- @retval EFI_BUFFER_TOO_SMALL Buffer too small for command data.\r
-\r
-**/\r
-EFI_STATUS\r
-TisPcSendV (\r
- IN UINT8 FmtChar,\r
- IN OUT VA_LIST *ap,\r
- UINT8 *TpmBuffer,\r
- UINT32 *DataLength\r
- )\r
-{\r
- UINT8 DataByte;\r
- UINT16 DataWord;\r
- UINT32 DataDword;\r
- TPM_RQU_COMMAND_HDR TpmCmdHdr;\r
- TPM_RQU_COMMAND_HDR *TpmCmdPtr;\r
- UINTN Size;\r
- UINT8 *Raw;\r
-\r
- switch (FmtChar) {\r
-\r
- case 'b':\r
- DataByte = VA_ARG (*ap, UINT8);\r
- Raw = &DataByte;\r
- Size = sizeof (DataByte);\r
- break;\r
-\r
- case 'w':\r
- DataWord = VA_ARG (*ap, UINT16);\r
- DataWord = SwapBytes16 (DataWord);\r
- Raw = (UINT8*)&DataWord;\r
- Size = sizeof (DataWord);\r
- break;\r
-\r
- case 'd':\r
- DataDword = VA_ARG (*ap, UINT32);\r
- DataDword = SwapBytes32 (DataDword);\r
- Raw = (UINT8*)&DataDword;\r
- Size = sizeof (DataDword);\r
- break;\r
-\r
- case 'h':\r
- TpmCmdPtr = VA_ARG (*ap, TPM_RQU_COMMAND_HDR*);\r
- TpmCmdHdr.tag = SwapBytes16 (TpmCmdPtr->tag);\r
- TpmCmdHdr.paramSize = SwapBytes32 (TpmCmdPtr->paramSize);\r
- TpmCmdHdr.ordinal = SwapBytes32 (TpmCmdPtr->ordinal);\r
- Raw = (UINT8*) &TpmCmdHdr;\r
- Size = sizeof (TpmCmdHdr);\r
- break;\r
-\r
- case 'r':\r
- Raw = VA_ARG (*ap, UINT8*);\r
- Size = VA_ARG (*ap, UINTN);\r
- break;\r
-\r
- case '\0':\r
- return EFI_INVALID_PARAMETER;\r
-\r
- default:\r
- return EFI_INVALID_PARAMETER;\r
- }\r
-\r
- //\r
- // Check input to avoid overflow.\r
- //\r
- if ((UINT32) (~0)- *DataLength < (UINT32)Size) {\r
- return EFI_INVALID_PARAMETER;\r
- }\r
-\r
- if(*DataLength + (UINT32) Size > TPMCMDBUFLENGTH) {\r
- return EFI_BUFFER_TOO_SMALL;\r
- }\r
- CopyMem (TpmBuffer + *DataLength, Raw, Size);\r
- *DataLength += (UINT32) Size;\r
- return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
- Format reponse data according to the format control character.\r
-\r
- @param[in] FmtChar Format control character. \r
- @param[in, out] ap List of arguments. \r
- @param[out] TpmBuffer Buffer for reponse data. \r
- @param[in, out] DataIndex Data offset in reponse data buffer. \r
- @param[in] RespSize Response data length. \r
- @param[out] DataFinished Reach the end of Response data. \r
- \r
- @retval EFI_SUCCESS Operation completed successfully.\r
- @retval EFI_INVALID_PARAMETER Invalid format control character.\r
- @retval EFI_BUFFER_TOO_SMALL Buffer too small for command data.\r
-\r
-**/\r
-EFI_STATUS\r
-TisPcReceiveV (\r
- IN UINT8 FmtChar,\r
- IN OUT VA_LIST *ap,\r
- OUT UINT8 *TpmBuffer,\r
- IN OUT UINT32 *DataIndex,\r
- IN UINT32 RespSize,\r
- OUT BOOLEAN *DataFinished\r
- )\r
-{\r
- UINT8 *Raw;\r
- TPM_RSP_COMMAND_HDR *TpmRspPtr;\r
- UINTN Size;\r
-\r
- Raw = VA_ARG (*ap, UINT8*);\r
- switch (FmtChar) {\r
-\r
- case 'b':\r
- Size = sizeof (UINT8);\r
- break;\r
-\r
- case 'w':\r
- Size = sizeof (UINT16);\r
- break;\r
-\r
- case 'd':\r
- Size = sizeof (UINT32);\r
- break;\r
-\r
- case 'h':\r
- Size = sizeof (*TpmRspPtr);\r
- break;\r
-\r
- case 'r':\r
- Size = VA_ARG (*ap, UINTN);\r
- //\r
- // If overflowed, which means Size is big enough for Response data. \r
- // skip this check. Copy the whole data \r
- //\r
- if ((UINT32) (~0)- *DataIndex >= (UINT32)Size) {\r
- if(*DataIndex + (UINT32) Size <= RespSize) {\r
- break;\r
- }\r
- }\r
-\r
- *DataFinished = TRUE;\r
- if (*DataIndex >= RespSize) {\r
- return EFI_SUCCESS;\r
- }\r
- CopyMem (Raw, TpmBuffer + *DataIndex, RespSize - *DataIndex);\r
- *DataIndex += RespSize - *DataIndex;\r
- return EFI_SUCCESS;\r
-\r
- case '\0':\r
- return EFI_INVALID_PARAMETER;\r
-\r
- default:\r
- return EFI_WARN_UNKNOWN_GLYPH;\r
- }\r
-\r
- if(*DataIndex + (UINT32) Size > RespSize) {\r
- *DataFinished = TRUE;\r
- return EFI_SUCCESS;\r
- }\r
-\r
- if( *DataIndex + (UINT32) Size > TPMCMDBUFLENGTH )\r
- return EFI_BUFFER_TOO_SMALL;\r
-\r
- CopyMem (Raw, TpmBuffer + *DataIndex, Size);\r
- *DataIndex += (UINT32) Size;\r
-\r
- switch (FmtChar) {\r
-\r
- case 'w':\r
- *(UINT16*)Raw = SwapBytes16 (*(UINT16*) Raw);\r
- break;\r
-\r
- case 'd':\r
- *(UINT32*)Raw = SwapBytes32 (*(UINT32*) Raw);\r
- break;\r
-\r
- case 'h':\r
- TpmRspPtr = (TPM_RSP_COMMAND_HDR*) Raw;\r
- TpmRspPtr->tag = SwapBytes16 (TpmRspPtr->tag);\r
- TpmRspPtr->paramSize = SwapBytes32 (TpmRspPtr->paramSize);\r
- TpmRspPtr->returnCode = SwapBytes32 (TpmRspPtr->returnCode);\r
- break;\r
- }\r
- return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
- Send formatted command to TPM for execution and return formatted data from response.\r
-\r
- @param[in] TisReg TPM Handle. \r
- @param[in] Fmt Format control string. \r
- @param[in] ... The variable argument list.\r
- \r
- @retval EFI_SUCCESS Operation completed successfully.\r
- @retval EFI_TIMEOUT The register can't run into the expected status in time.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-TisPcExecute (\r
- IN CONST CHAR8 *Fmt,\r
- ...\r
- )\r
-{\r
- EFI_STATUS Status;\r
- VA_LIST Ap;\r
- UINT32 BufSize;\r
- UINT32 ResponseSize;\r
- BOOLEAN DataFinished;\r
-\r
- VA_START (Ap, Fmt);\r
-\r
- //\r
- // Put the formatted command to the TpmCommandBuf\r
- //\r
- BufSize = 0;\r
- while (*Fmt != '\0') {\r
- if (*Fmt == '%') Fmt++;\r
- if (*Fmt == '/') break;\r
- Status = TisPcSendV (*Fmt, &Ap, TpmCommandBuf, &BufSize);\r
- if (EFI_ERROR( Status )) {\r
- goto Error;\r
- }\r
- Fmt++;\r
- }\r
-\r
- //\r
- // Send the command to TPM\r
- //\r
- ZeroMem (TpmResponseBuf, sizeof (TpmResponseBuf));\r
- ResponseSize = sizeof (TpmResponseBuf);\r
- Status = Tpm12SubmitCommand (BufSize, TpmCommandBuf, &ResponseSize, TpmResponseBuf);\r
- if (EFI_ERROR (Status)) {\r
- goto Error;\r
- }\r
- Fmt++;\r
-\r
- //\r
- // Get the formatted data from the TpmResponseBuf.\r
- //\r
- BufSize =0;\r
- DataFinished = FALSE;\r
- while (*Fmt != '\0') {\r
- if (*Fmt == '%') {\r
- Fmt++;\r
- }\r
- Status = TisPcReceiveV (*Fmt, &Ap, TpmResponseBuf, &BufSize, ResponseSize, &DataFinished);\r
- if (EFI_ERROR (Status)) {\r
- goto Error;\r
- }\r
- if (DataFinished) {\r
- VA_END (Ap);\r
- return EFI_SUCCESS;\r
- }\r
- Fmt++;\r
- }\r
-\r
-Error:\r
- VA_END (Ap);\r
- return Status;\r
-}\r
-\r
+++ /dev/null
-/** @file \r
- Utility functions used by TPM Dxe driver.\r
-\r
-Copyright (c) 2005 - 2016, 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
-\r
-**/\r
-\r
-#include <IndustryStandard/Tpm12.h>\r
-#include <IndustryStandard/UefiTcgPlatform.h>\r
-#include <Library/DebugLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
-#include <Library/MemoryAllocationLib.h>\r
-#include <Library/BaseCryptLib.h>\r
-\r
-#include "TpmComm.h"\r
-\r
-/**\r
- Extend a TPM PCR.\r
-\r
- @param[in] DigestToExtend The 160 bit value representing the event to be recorded. \r
- @param[in] PcrIndex The PCR to be updated.\r
- @param[out] NewPcrValue New PCR value after extend. \r
- \r
- @retval EFI_SUCCESS Operation completed successfully.\r
- @retval EFI_DEVICE_ERROR The command was unsuccessful.\r
-\r
-**/\r
-EFI_STATUS\r
-TpmCommExtend (\r
- IN TPM_DIGEST *DigestToExtend,\r
- IN TPM_PCRINDEX PcrIndex,\r
- OUT TPM_DIGEST *NewPcrValue\r
- )\r
-{\r
- EFI_STATUS Status;\r
- TPM_DIGEST NewValue;\r
- TPM_RQU_COMMAND_HDR CmdHdr;\r
- TPM_RSP_COMMAND_HDR RspHdr;\r
-\r
- if (NewPcrValue == NULL) {\r
- NewPcrValue = &NewValue;\r
- }\r
-\r
- CmdHdr.tag = TPM_TAG_RQU_COMMAND;\r
- CmdHdr.paramSize =\r
- sizeof (CmdHdr) + sizeof (PcrIndex) + sizeof (*DigestToExtend);\r
- CmdHdr.ordinal = TPM_ORD_Extend;\r
- Status = TisPcExecute (\r
- "%h%d%r%/%h%r",\r
- &CmdHdr,\r
- PcrIndex,\r
- DigestToExtend,\r
- (UINTN)sizeof (*DigestToExtend),\r
- &RspHdr,\r
- NewPcrValue,\r
- (UINTN)sizeof (*NewPcrValue)\r
- );\r
- if (EFI_ERROR (Status)) {\r
- return Status;\r
- }\r
- if (RspHdr.returnCode != 0) {\r
- return EFI_DEVICE_ERROR;\r
- }\r
- return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
- Get TPM capability flags.\r
-\r
- @param[in] FlagSubcap Flag subcap. \r
- @param[out] FlagBuffer Pointer to the buffer for returned flag structure.\r
- @param[in] FlagSize Size of the buffer. \r
- \r
- @retval EFI_SUCCESS Operation completed successfully.\r
- @retval EFI_DEVICE_ERROR The command was unsuccessful.\r
-\r
-**/\r
-EFI_STATUS\r
-TpmCommGetFlags (\r
- IN UINT32 FlagSubcap,\r
- OUT VOID *FlagBuffer,\r
- IN UINTN FlagSize\r
- )\r
-{\r
- EFI_STATUS Status;\r
- TPM_RQU_COMMAND_HDR CmdHdr;\r
- TPM_RSP_COMMAND_HDR RspHdr;\r
- UINT32 Size;\r
-\r
- CmdHdr.tag = TPM_TAG_RQU_COMMAND;\r
- CmdHdr.paramSize = sizeof (CmdHdr) + sizeof (UINT32) * 3;\r
- CmdHdr.ordinal = TPM_ORD_GetCapability;\r
-\r
- Status = TisPcExecute (\r
- "%h%d%d%d%/%h%d%r",\r
- &CmdHdr,\r
- TPM_CAP_FLAG,\r
- sizeof (FlagSubcap),\r
- FlagSubcap,\r
- &RspHdr,\r
- &Size,\r
- FlagBuffer,\r
- FlagSize\r
- );\r
- if (EFI_ERROR (Status)) {\r
- return Status;\r
- }\r
- if (RspHdr.returnCode != 0) {\r
- return EFI_DEVICE_ERROR;\r
- }\r
- return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
- Add a new entry to the Event Log.\r
-\r
- @param[in, out] EventLogPtr Pointer to the Event Log data. \r
- @param[in, out] LogSize Size of the Event Log. \r
- @param[in] MaxSize Maximum size of the Event Log.\r
- @param[in] NewEventHdr Pointer to a TCG_PCR_EVENT_HDR data structure. \r
- @param[in] NewEventData Pointer to the new event data. \r
- \r
- @retval EFI_SUCCESS The new event log entry was added.\r
- @retval EFI_OUT_OF_RESOURCES No enough memory to log the new event.\r
-\r
-**/\r
-EFI_STATUS\r
-TpmCommLogEvent (\r
- IN OUT UINT8 **EventLogPtr,\r
- IN OUT UINTN *LogSize,\r
- IN UINTN MaxSize,\r
- IN TCG_PCR_EVENT_HDR *NewEventHdr,\r
- IN UINT8 *NewEventData\r
- )\r
-{\r
- UINTN NewLogSize;\r
-\r
- //\r
- // Prevent Event Overflow\r
- //\r
- if (NewEventHdr->EventSize > (UINTN)(~0) - sizeof (*NewEventHdr)) {\r
- return EFI_OUT_OF_RESOURCES;\r
- }\r
-\r
- NewLogSize = sizeof (*NewEventHdr) + NewEventHdr->EventSize;\r
- if (NewLogSize > MaxSize - *LogSize) {\r
- return EFI_OUT_OF_RESOURCES;\r
- }\r
-\r
- *EventLogPtr += *LogSize;\r
- *LogSize += NewLogSize;\r
- CopyMem (*EventLogPtr, NewEventHdr, sizeof (*NewEventHdr));\r
- CopyMem (\r
- *EventLogPtr + sizeof (*NewEventHdr),\r
- NewEventData,\r
- NewEventHdr->EventSize\r
- );\r
- return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
- Single function calculates SHA1 digest value for all raw data. It\r
- combines Sha1Init(), Sha1Update() and Sha1Final().\r
-\r
- @param[in] Data Raw data to be digested.\r
- @param[in] DataLen Size of the raw data.\r
- @param[out] Digest Pointer to a buffer that stores the final digest.\r
-\r
- @retval EFI_SUCCESS Always successfully calculate the final digest.\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-TpmCommHashAll (\r
- IN CONST UINT8 *Data,\r
- IN UINTN DataLen,\r
- OUT TPM_DIGEST *Digest\r
- )\r
-{\r
- VOID *Sha1Ctx;\r
- UINTN CtxSize;\r
-\r
- CtxSize = Sha1GetContextSize ();\r
- Sha1Ctx = AllocatePool (CtxSize);\r
- ASSERT (Sha1Ctx != NULL);\r
-\r
- Sha1Init (Sha1Ctx);\r
- Sha1Update (Sha1Ctx, Data, DataLen);\r
- Sha1Final (Sha1Ctx, (UINT8 *)Digest);\r
-\r
- FreePool (Sha1Ctx);\r
-\r
- return EFI_SUCCESS;\r
-}\r
+++ /dev/null
-/** @file \r
- Definitions and function prototypes used by TPM DXE driver.\r
-\r
-Copyright (c) 2005 - 2016, 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
-\r
-**/\r
-\r
-#ifndef _TPM_COMM_H_\r
-#define _TPM_COMM_H_\r
-\r
-/**\r
- Add a new entry to the Event Log.\r
-\r
- @param[in, out] EventLogPtr Pointer to the Event Log data. \r
- @param[in, out] LogSize Size of the Event Log. \r
- @param[in] MaxSize Maximum size of the Event Log.\r
- @param[in] NewEventHdr Pointer to a TCG_PCR_EVENT_HDR data structure. \r
- @param[in] NewEventData Pointer to the new event data. \r
- \r
- @retval EFI_SUCCESS The new event log entry was added.\r
- @retval EFI_OUT_OF_RESOURCES No enough memory to log the new event.\r
-\r
-**/\r
-EFI_STATUS\r
-TpmCommLogEvent (\r
- IN OUT UINT8 **EventLogPtr,\r
- IN OUT UINTN *LogSize,\r
- IN UINTN MaxSize,\r
- IN TCG_PCR_EVENT_HDR *NewEventHdr,\r
- IN UINT8 *NewEventData\r
- );\r
-\r
-/**\r
- Extend a TPM PCR.\r
-\r
- @param[in] DigestToExtend The 160 bit value representing the event to be recorded. \r
- @param[in] PcrIndex The PCR to be updated.\r
- @param[out] NewPcrValue New PCR value after extend. \r
- \r
- @retval EFI_SUCCESS Operation completed successfully.\r
- @retval EFI_DEVICE_ERROR The command was unsuccessful.\r
-\r
-**/\r
-EFI_STATUS\r
-TpmCommExtend (\r
- IN TPM_DIGEST *DigestToExtend,\r
- IN TPM_PCRINDEX PcrIndex,\r
- OUT TPM_DIGEST *NewPcrValue\r
- );\r
-\r
-/**\r
- Get TPM capability flags.\r
-\r
- @param[in] FlagSubcap Flag subcap. \r
- @param[out] FlagBuffer Pointer to the buffer for returned flag structure.\r
- @param[in] FlagSize Size of the buffer. \r
- \r
- @retval EFI_SUCCESS Operation completed successfully.\r
- @retval EFI_DEVICE_ERROR The command was unsuccessful.\r
-\r
-**/\r
-EFI_STATUS\r
-TpmCommGetFlags (\r
- IN UINT32 FlagSubcap,\r
- OUT VOID *Buffer,\r
- IN UINTN Size\r
- );\r
-\r
-/**\r
- Send formatted command to TPM for execution and return formatted data from response.\r
-\r
- @param[in] TisReg TPM Handle. \r
- @param[in] Fmt Format control string. \r
- @param[in] ... The variable argument list.\r
-\r
- @retval EFI_SUCCESS Operation completed successfully.\r
- @retval EFI_TIMEOUT The register can't run into the expected status in time.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-TisPcExecute (\r
- IN CONST CHAR8 *Fmt,\r
- ...\r
- );\r
-\r
-/**\r
- Single function calculates SHA1 digest value for all raw data. It\r
- combines Sha1Init(), Sha1Update() and Sha1Final().\r
-\r
- @param[in] Data Raw data to be digested.\r
- @param[in] DataLen Size of the raw data.\r
- @param[out] Digest Pointer to a buffer that stores the final digest.\r
-\r
- @retval EFI_SUCCESS Always successfully calculate the final digest.\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-TpmCommHashAll (\r
- IN CONST UINT8 *Data,\r
- IN UINTN DataLen,\r
- OUT TPM_DIGEST *Digest\r
- );\r
-\r
-#endif // _TPM_COMM_H_\r