diff options
Diffstat (limited to 'Core/EM/TCG2/Common/Protocol')
-rw-r--r-- | Core/EM/TCG2/Common/Protocol/TcgService/TcgService.c | 66 | ||||
-rw-r--r-- | Core/EM/TCG2/Common/Protocol/TcgService/TcgService.h | 171 | ||||
-rw-r--r-- | Core/EM/TCG2/Common/Protocol/TcgService/TcgTcmService.c | 75 | ||||
-rw-r--r-- | Core/EM/TCG2/Common/Protocol/TcgService/TcgTcmService.h | 167 | ||||
-rw-r--r-- | Core/EM/TCG2/Common/Protocol/TcgService_Protocol.cif | 11 | ||||
-rw-r--r-- | Core/EM/TCG2/Common/Protocol/TpmDevice/TpmDevice.c | 60 | ||||
-rw-r--r-- | Core/EM/TCG2/Common/Protocol/TpmDevice/TpmDevice.h | 197 | ||||
-rw-r--r-- | Core/EM/TCG2/Common/Protocol/TpmDevice_Protocol.cif | 9 |
8 files changed, 756 insertions, 0 deletions
diff --git a/Core/EM/TCG2/Common/Protocol/TcgService/TcgService.c b/Core/EM/TCG2/Common/Protocol/TcgService/TcgService.c new file mode 100644 index 0000000..afa983b --- /dev/null +++ b/Core/EM/TCG2/Common/Protocol/TcgService/TcgService.c @@ -0,0 +1,66 @@ +/*++ + + Copyright (c) 2006, Intel Corporation + All rights reserved. This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + + Abstract: + + TcgService Protocol GUID as defined in TCG_EFI_Protocol_1_20_Final + + See http://trustedcomputinggroup.org for the latest specification + + --*/ +//************************************************************************* +// $Header: /Alaska/SOURCE/Modules/TCG2/CommonHeaders/TcgService_Protocol/TcgService/TcgService.c 1 4/21/14 2:15p Fredericko $ +// +// $Revision: 1 $ +// +// $Date: 4/21/14 2:15p $ +//************************************************************************* +// Revision History +// ---------------- +// $Log: /Alaska/SOURCE/Modules/TCG2/CommonHeaders/TcgService_Protocol/TcgService/TcgService.c $ +// +// 1 4/21/14 2:15p Fredericko +// +// 1 10/08/13 12:00p Fredericko +// Initial Check-In for Tpm-Next module +// +// 1 7/10/13 5:58p Fredericko +// [TAG] EIP120969 +// [Category] New Feature +// [Description] TCG (TPM20) +// +// 2 5/20/10 8:44a Fredericko +// Included File Header +// Included File Revision History +// EIP 37653 +// +//************************************************************************* +//************************************************************************* +//<AMI_FHDR_START> +// +// Name: TcgService.c +// +// Description: +// Defines Tcg Protocol guid +// +//<AMI_FHDR_END> +//************************************************************************* + +#include <Tiano.h> + +#include EFI_PROTOCOL_DEFINITION( TcgService ) + +EFI_GUID gEfiTcgProtocolGuid = EFI_TCG_PROTOCOL_GUID; + +EFI_GUID_STRING( &gEfiTcgServiceProtocolGuid, + "TcgService", + "TCG Services Protocol" ); diff --git a/Core/EM/TCG2/Common/Protocol/TcgService/TcgService.h b/Core/EM/TCG2/Common/Protocol/TcgService/TcgService.h new file mode 100644 index 0000000..f6f3960 --- /dev/null +++ b/Core/EM/TCG2/Common/Protocol/TcgService/TcgService.h @@ -0,0 +1,171 @@ +/*++ + + Copyright (c) 2006, Intel Corporation + All rights reserved. This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + Abstract: + + TCG Service Protocol as defined in TCG_EFI_Protocol_1_20_Final + + See http://trustedcomputinggroup.org for the latest specification + + --*/ +//************************************************************************* +// $Header: /Alaska/SOURCE/Modules/TCG2/CommonHeaders/TcgService_Protocol/TcgService/TcgService.h 1 4/21/14 2:15p Fredericko $ +// +// $Revision: 1 $ +// +// $Date: 4/21/14 2:15p $ +//************************************************************************* +// Revision History +// ---------------- +// $Log: /Alaska/SOURCE/Modules/TCG2/CommonHeaders/TcgService_Protocol/TcgService/TcgService.h $ +// +// 1 4/21/14 2:15p Fredericko +// +// 1 10/08/13 12:00p Fredericko +// Initial Check-In for Tpm-Next module +// +// 1 7/10/13 5:58p Fredericko +// [TAG] EIP120969 +// [Category] New Feature +// [Description] TCG (TPM20) +// +// 6 3/29/11 3:01p Fredericko +// +// 5 3/28/11 3:22p Fredericko +// [TAG] EIP 54642 +// [Category] Improvement +// [Description] 1. Checkin Files related to TCG function override +// 2. Include TCM and TPM auto detection +// [Files] Affects all TCG files +// +// 4 5/20/10 8:44a Fredericko +// Included File Header +// Included File Revision History +// EIP 37653 +// +//************************************************************************* +//************************************************************************* +//<AMI_FHDR_START> +// +// Name: TcgService.h +// +// Description: +// Header file for TcgService.c [Protocol] +// +//<AMI_FHDR_END> +//************************************************************************* +#ifndef _TCG_SERVICE_PROTOCOL_H_ +#define _TCG_SERVICE_PROTOCOL_H_ + +#include "TcgEfiTpm.h" + +#define EFI_TCG_PROTOCOL_GUID \ + {0xf541796d, 0xa62e, 0x4954, 0xa7, 0x75, 0x95, 0x84, 0xf6, 0x1b, 0x9c, 0xdd} + +#define TSS_EVENT_DATA_MAX_SIZE 256 + +EFI_FORWARD_DECLARATION( EFI_TCG_PROTOCOL ); + +// +// Set structure alignment to 1-byte +// +#pragma pack (push, 1) + +typedef struct +{ + UINT8 Major; + UINT8 Minor; + UINT8 RevMajor; + UINT8 RevMinor; +} TCG_VERSION; + +typedef struct _TCG_EFI_BOOT_SERVICE_CAPABILITY +{ + UINT8 Size; // Size of this structure + TCG_VERSION StructureVersion; + TCG_VERSION ProtocolSpecVersion; + UINT8 HashAlgorithmBitmap; // Hash algorithms + // this protocol is capable of : 01=SHA-1 + BOOLEAN TPMPresentFlag; // 00h = TPM not present + BOOLEAN TPMDeactivatedFlag; // 01h = TPM currently deactivated +} TCG_EFI_BOOT_SERVICE_CAPABILITY; + +typedef UINT32 TCG_ALGORITHM_ID; +// +// Restore original structure alignment +// +#pragma pack (pop) + +typedef +EFI_STATUS +(EFIAPI * EFI_TCG_STATUS_CHECK)( + IN EFI_TCG_PROTOCOL *This, + OUT TCG_EFI_BOOT_SERVICE_CAPABILITY + *ProtocolCapability, + OUT UINT32 *TCGFeatureFlags, + OUT EFI_PHYSICAL_ADDRESS *EventLogLocation, + OUT EFI_PHYSICAL_ADDRESS *EventLogLastEntry + ); + +typedef +EFI_STATUS +(EFIAPI * EFI_TCG_HASH_ALL)( + IN EFI_TCG_PROTOCOL *This, + IN UINT8 *HashData, + IN UINT64 HashDataLen, + IN TCG_ALGORITHM_ID AlgorithmId, + IN OUT UINT64 *HashedDataLen, + IN OUT UINT8 **HashedDataResult + ); + +typedef +EFI_STATUS +(EFIAPI * EFI_TCG_LOG_EVENT)( + IN EFI_TCG_PROTOCOL *This, + IN TCG_PCR_EVENT *TCGLogData, + IN OUT UINT32 *EventNumber, + IN UINT32 Flags + ); + +typedef +EFI_STATUS +(EFIAPI * EFI_TCG_PASS_THROUGH_TO_TPM)( + IN EFI_TCG_PROTOCOL *This, + IN UINT32 TpmInputParamterBlockSize, + IN UINT8 *TpmInputParamterBlock, + IN UINT32 TpmOutputParameterBlockSize, + IN UINT8 *TpmOutputParameterBlock + ); + +typedef +EFI_STATUS +(EFIAPI * EFI_TCG_HASH_LOG_EXTEND_EVENT)( + IN EFI_TCG_PROTOCOL *This, + IN EFI_PHYSICAL_ADDRESS HashData, + IN UINT64 HashDataLen, + IN TCG_ALGORITHM_ID AlgorithmId, + IN OUT TCG_PCR_EVENT *TCGLogData, + IN OUT UINT32 *EventNumber, + OUT EFI_PHYSICAL_ADDRESS *EventLogLastEntry + ); + +typedef struct _EFI_TCG_PROTOCOL +{ + EFI_TCG_STATUS_CHECK StatusCheck; + EFI_TCG_HASH_ALL HashAll; + EFI_TCG_LOG_EVENT LogEvent; + EFI_TCG_PASS_THROUGH_TO_TPM PassThroughToTpm; + EFI_TCG_HASH_LOG_EXTEND_EVENT HashLogExtendEvent; +} EFI_TCG_PROTOCOL; + +extern EFI_GUID gEfiTcgProtocolGuid; + +#endif diff --git a/Core/EM/TCG2/Common/Protocol/TcgService/TcgTcmService.c b/Core/EM/TCG2/Common/Protocol/TcgService/TcgTcmService.c new file mode 100644 index 0000000..fcf3611 --- /dev/null +++ b/Core/EM/TCG2/Common/Protocol/TcgService/TcgTcmService.c @@ -0,0 +1,75 @@ +/*++ + + Copyright (c) 2006, Intel Corporation + All rights reserved. This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + + Abstract: + + TcgService Protocol GUID as defined in TCG_EFI_Protocol_1_20_Final + + See http://trustedcomputinggroup.org for the latest specification + + --*/ +//************************************************************************* +// $Header: /Alaska/SOURCE/Modules/TCG2/CommonHeaders/TcgService_Protocol/TcgService/TcgTcmService.c 1 4/21/14 2:15p Fredericko $ +// +// $Revision: 1 $ +// +// $Date: 4/21/14 2:15p $ +//************************************************************************* +// Revision History +// ---------------- +// $Log: /Alaska/SOURCE/Modules/TCG2/CommonHeaders/TcgService_Protocol/TcgService/TcgTcmService.c $ +// +// 1 4/21/14 2:15p Fredericko +// +// 1 10/08/13 12:00p Fredericko +// Initial Check-In for Tpm-Next module +// +// 1 7/10/13 5:58p Fredericko +// [TAG] EIP120969 +// [Category] New Feature +// [Description] TCG (TPM20) +// +// 2 3/29/11 3:03p Fredericko +// +// 1 3/28/11 3:20p Fredericko +// [TAG] EIP 54642 +// [Category] Improvement +// [Description] 1. Checkin Files related to TCG function override +// 2. Include TCM and TPM auto detection +// [Files] Affects all TCG files +// +// 2 5/20/10 8:44a Fredericko +// Included File Header +// Included File Revision History +// EIP 37653 +// +//************************************************************************* +//************************************************************************* +//<AMI_FHDR_START> +// +// Name: TcgService.c +// +// Description: +// Defines Tcg Protocol guid +// +//<AMI_FHDR_END> +//************************************************************************* + +#include <Tiano.h> + +#include EFI_PROTOCOL_DEFINITION( TcgTcmService ) + +EFI_GUID gEfiTcgProtocolGuid = EFI_TCG_PROTOCOL_GUID; + +EFI_GUID_STRING( &gEfiTcgServiceProtocolGuid, + "TcgTcmService", + "TCM Services Protocol" ); diff --git a/Core/EM/TCG2/Common/Protocol/TcgService/TcgTcmService.h b/Core/EM/TCG2/Common/Protocol/TcgService/TcgTcmService.h new file mode 100644 index 0000000..829b40b --- /dev/null +++ b/Core/EM/TCG2/Common/Protocol/TcgService/TcgTcmService.h @@ -0,0 +1,167 @@ +/*++ + + Copyright (c) 2006, Intel Corporation + All rights reserved. This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + Abstract: + + TCG Service Protocol as defined in TCG_EFI_Protocol_1_20_Final + + See http://trustedcomputinggroup.org for the latest specification + + --*/ +//************************************************************************* +// $Header: /Alaska/SOURCE/Modules/TCG2/CommonHeaders/TcgService_Protocol/TcgService/TcgTcmService.h 1 4/21/14 2:15p Fredericko $ +// +// $Revision: 1 $ +// +// $Date: 4/21/14 2:15p $ +//************************************************************************* +// Revision History +// ---------------- +// $Log: /Alaska/SOURCE/Modules/TCG2/CommonHeaders/TcgService_Protocol/TcgService/TcgTcmService.h $ +// +// 1 4/21/14 2:15p Fredericko +// +// 1 10/08/13 12:00p Fredericko +// Initial Check-In for Tpm-Next module +// +// 1 7/10/13 5:58p Fredericko +// [TAG] EIP120969 +// [Category] New Feature +// [Description] TCG (TPM20) +// +// 2 3/29/11 3:02p Fredericko +// +// 1 3/28/11 3:20p Fredericko +// [TAG] EIP 54642 +// [Category] Improvement +// [Description] 1. Checkin Files related to TCG function override +// 2. Include TCM and TPM auto detection +// [Files] Affects all TCG files +// +// 4 5/20/10 8:44a Fredericko +// Included File Header +// Included File Revision History +// EIP 37653 +// +//************************************************************************* +//************************************************************************* +//<AMI_FHDR_START> +// +// Name: TcgService.h +// +// Description: +// Header file for TcgService.c [Protocol] +// +//<AMI_FHDR_END> +//************************************************************************* +#ifndef _TCG_TCM_SERVICE_PROTOCOL_H_ +#define _TCG_TCM_SERVICE_PROTOCOL_H_ + +#include "TcgEfiTpm.h" + +#define EFI_TCG_PROTOCOL_GUID \ + {0xf541796d, 0xa62e, 0x4954, 0xa7, 0x75, 0x95, 0x84, 0xf6, 0x1b, 0x9c, 0xdd} + +#define TSS_EVENT_DATA_MAX_SIZE 256 + +EFI_FORWARD_DECLARATION( EFI_TCM_PROTOCOL ); +// Set structure alignment to 1-byte +// +#pragma pack (push, 1) + +typedef struct +{ + UINT8 Major; + UINT8 Minor; + UINT8 RevMajor; + UINT8 RevMinor; +} TCM_VERSION; + +typedef struct _TCM_EFI_BOOT_SERVICE_CAPABILITY +{ + UINT8 Size; // Size of this structure + TCM_VERSION StructureVersion; + TCM_VERSION ProtocolSpecVersion; + UINT8 HashAlgorithmBitmap; // Hash algorithms + // this protocol is capable of : 01=SHA-1 + BOOLEAN TPMPresentFlag; // 00h = TPM not present + BOOLEAN TPMDeactivatedFlag; // 01h = TPM currently deactivated +} TCM_EFI_BOOT_SERVICE_CAPABILITY; + +typedef UINT32 TCG_ALGORITHM_ID; + +#pragma pack (pop) + +typedef +EFI_STATUS +(EFIAPI * EFI_TCM_STATUS_CHECK)( + IN EFI_TCM_PROTOCOL *This, + OUT TCM_EFI_BOOT_SERVICE_CAPABILITY + *ProtocolCapability, + OUT UINT32 *TCGFeatureFlags, + OUT EFI_PHYSICAL_ADDRESS *EventLogLocation, + OUT EFI_PHYSICAL_ADDRESS *EventLogLastEntry + ); + +typedef +EFI_STATUS +(EFIAPI * EFI_TCM_HASH_ALL)( + IN EFI_TCM_PROTOCOL *This, + IN UINT8 *HashData, + IN UINT64 HashDataLen, + IN TCG_ALGORITHM_ID AlgorithmId, + IN OUT UINT64 *HashedDataLen, + IN OUT UINT8 **HashedDataResult + ); + +typedef +EFI_STATUS +(EFIAPI * EFI_TCM_LOG_EVENT)( + IN EFI_TCM_PROTOCOL *This, + IN TCM_PCR_EVENT *TCGLogData, + IN OUT UINT32 *EventNumber, + IN UINT32 Flags + ); + +typedef +EFI_STATUS +(EFIAPI * EFI_TCM_PASS_THROUGH_TO_TPM)( + IN EFI_TCM_PROTOCOL *This, + IN UINT32 TpmInputParamterBlockSize, + IN UINT8 *TpmInputParamterBlock, + IN UINT32 TpmOutputParameterBlockSize, + IN UINT8 *TpmOutputParameterBlock + ); + +typedef +EFI_STATUS +(EFIAPI * EFI_TCM_HASH_LOG_EXTEND_EVENT)( + IN EFI_TCM_PROTOCOL *This, + IN EFI_PHYSICAL_ADDRESS HashData, + IN UINT64 HashDataLen, + IN TCG_ALGORITHM_ID AlgorithmId, + IN OUT TCM_PCR_EVENT *TCGLogData, + IN OUT UINT32 *EventNumber, + OUT EFI_PHYSICAL_ADDRESS *EventLogLastEntry + ); + +typedef struct _EFI_TCM_PROTOCOL +{ + EFI_TCM_STATUS_CHECK StatusCheck; + EFI_TCM_HASH_ALL HashAll; + EFI_TCM_LOG_EVENT LogEvent; + EFI_TCM_PASS_THROUGH_TO_TPM PassThroughToTpm; + EFI_TCM_HASH_LOG_EXTEND_EVENT HashLogExtendEvent; +} EFI_TCM_PROTOCOL; + +extern EFI_GUID gEfiTcgProtocolGuid; + +#endif diff --git a/Core/EM/TCG2/Common/Protocol/TcgService_Protocol.cif b/Core/EM/TCG2/Common/Protocol/TcgService_Protocol.cif new file mode 100644 index 0000000..a4e469a --- /dev/null +++ b/Core/EM/TCG2/Common/Protocol/TcgService_Protocol.cif @@ -0,0 +1,11 @@ +<component> + name = "TcgService_Protocol" + category = ModulePart + LocalRoot = "Core\EM\TCG2\Common\Protocol\" + RefName = "TcgService_Protocol" +[files] +"TcgService\TcgService.c" +"TcgService\TcgService.h" +"TcgService\TcgTcmService.h" +"TcgService\TcgTcmService.c" +<endComponent> diff --git a/Core/EM/TCG2/Common/Protocol/TpmDevice/TpmDevice.c b/Core/EM/TCG2/Common/Protocol/TpmDevice/TpmDevice.c new file mode 100644 index 0000000..4251fb2 --- /dev/null +++ b/Core/EM/TCG2/Common/Protocol/TpmDevice/TpmDevice.c @@ -0,0 +1,60 @@ +/*++ + + Copyright (c) 1999 - 2002 Intel Corporation. All rights reserved + This software and associated documentation (if any) is furnished + under a license and may only be used or copied in accordance + with the terms of the license. Except as permitted by such + license, no part of this software or documentation may be + reproduced, stored in a retrieval system, or transmitted in any + form or by any means without the express written consent of + Intel Corporation. + + + Abstract: + + --*/ +//************************************************************************* +// $Header: /Alaska/SOURCE/Modules/TCG2/CommonHeaders/TpmDevice_Protocol/TpmDevice/TpmDevice.c 1 4/21/14 2:15p Fredericko $ +// +// $Revision: 1 $ +// +// $Date: 4/21/14 2:15p $ +//************************************************************************* +// Revision History +// ---------------- +// $Log: /Alaska/SOURCE/Modules/TCG2/CommonHeaders/TpmDevice_Protocol/TpmDevice/TpmDevice.c $ +// +// 1 4/21/14 2:15p Fredericko +// +// 1 10/08/13 12:01p Fredericko +// Initial Check-In for Tpm-Next module +// +// 1 7/10/13 5:59p Fredericko +// [TAG] EIP120969 +// [Category] New Feature +// [Description] TCG (TPM20) +// +// 2 5/20/10 8:46a Fredericko +// Included File Header +// Included File Revision History +// EIP 37653 +// +//************************************************************************* +//************************************************************************* +//<AMI_FHDR_START> +// +// Name: TpmDevice.c +// +// Description: +// Defines Tpm Device Protocol GUID +// +//<AMI_FHDR_END> +//************************************************************************* +#include "Efi.h" +#include EFI_PROTOCOL_DEFINITION( TpmDevice ) + +EFI_GUID gEfiTpmDeviceProtocolGuid = EFI_TPM_DEVICE_PROTOCOL_GUID; + +EFI_GUID_STRING( &gEfiTpmDeviceProtocolGuid, + "TPM DXE Driver Protocol", + "TPM DXE Driver Protocol" ); diff --git a/Core/EM/TCG2/Common/Protocol/TpmDevice/TpmDevice.h b/Core/EM/TCG2/Common/Protocol/TpmDevice/TpmDevice.h new file mode 100644 index 0000000..9b9108f --- /dev/null +++ b/Core/EM/TCG2/Common/Protocol/TpmDevice/TpmDevice.h @@ -0,0 +1,197 @@ +/*++ + + Copyright (c) 2005 Intel Corporation. All rights reserved + This software and associated documentation (if any) is furnished + under a license and may only be used or copied in accordance + with the terms of the license. Except as permitted by such + license, no part of this software or documentation may be + reproduced, stored in a retrieval system, or transmitted in any + form or by any means without the express written consent of + Intel Corporation. + + + Abstract: + + + --*/ +//************************************************************************* +// $Header: /Alaska/SOURCE/Modules/TCG2/CommonHeaders/TpmDevice_Protocol/TpmDevice/TpmDevice.h 1 4/21/14 2:15p Fredericko $ +// +// $Revision: 1 $ +// +// $Date: 4/21/14 2:15p $ +//************************************************************************* +// Revision History +// ---------------- +// $Log: /Alaska/SOURCE/Modules/TCG2/CommonHeaders/TpmDevice_Protocol/TpmDevice/TpmDevice.h $ +// +// 1 4/21/14 2:15p Fredericko +// +// 1 10/08/13 12:01p Fredericko +// Initial Check-In for Tpm-Next module +// +// 1 7/10/13 5:59p Fredericko +// [TAG] EIP120969 +// [Category] New Feature +// [Description] TCG (TPM20) +// +// 7 3/29/11 3:10p Fredericko +// +// 6 3/28/11 3:27p Fredericko +// [TAG] EIP 54642 +// [Category] Improvement +// [Description] 1. Checkin Files related to TCG function override +// 2. Include TCM and TPM auto detection +// [Files] Affects all TCG files +// +// 5 5/20/10 8:47a Fredericko +// Included File Header +// Included File Revision History +// EIP 37653 +// +//************************************************************************* +//************************************************************************* +//<AMI_FHDR_START> +// +// Name: TpmDevice.h +// +// Description: +// Header file for TpmDevice.c[Protocol] +// +//<AMI_FHDR_END> +//************************************************************************* +#ifndef _EFI_TPM_DEVICE_H_ +#define _EFI_TPM_DEVICE_H_ + +#include "TcgEfiTpm.h" +#include "TcgEFI12.h" +#include "TCGMisc.h" +#include "TcgCommon.h" + +#define EFI_TPM_DEVICE_PROTOCOL_GUID \ + { 0xde161cfe, 0x1e60, 0x42a1, 0x8c, 0xc3, 0xee, 0x7e, 0xf0, 0x73, 0x52,\ + 0x12 } + + +EFI_FORWARD_DECLARATION( EFI_TPM_DEVICE_PROTOCOL ); + + +typedef +EFI_STATUS +(EFIAPI * EFI_TPM_MP_INIT)( + IN EFI_TPM_DEVICE_PROTOCOL *This + ); + +/*++ + + Routine Description: + This service Open the TPM interface + + Arguments: + This - A pointer to the EFI_TPM_MP_DRIVER_PROTOCOL. + + Returns: + EFI_SUCCESS - Operation completed successfully + EFI_DEVICE_ERROR - The command was unsuccessful + EFI_NOT_FOUND - The component was not running + + --*/ + +typedef +EFI_STATUS +(EFIAPI * EFI_TPM_MP_CLOSE)( + IN EFI_TPM_DEVICE_PROTOCOL *This + ); +/*++ + + Routine Description: + This service close the TPM interface and deactivate TPM + + Arguments: + This - A pointer to the EFI_TPM_MP_DRIVER_PROTOCOL. + + Returns: + EFI_SUCCESS - Operation completed successfully + EFI_DEVICE_ERROR - The command was unsuccessful + EFI_NOT_FOUND - The component was not running + + --*/ + +typedef +EFI_STATUS +(EFIAPI * EFI_TPM_MP_GET_STATUS_INFO)( + IN EFI_TPM_DEVICE_PROTOCOL *This + ); +/*++ + + Routine Description: + This service get the current status infomation of TPM + + Arguments: + This - A pointer to the EFI_TPM_MP_DRIVER_PROTOCOL. + ReqStatusType - Requested type of status information, driver or device. + Status - Pointer to the returned status. + + Returns: + EFI_SUCCESS - Operation completed successfully + EFI_DEVICE_ERROR - The command was unsuccessful + EFI_INVALID_PARAMETER - One or more of the parameters are incorrect + EFI_BUFFER_TOO_SMALL - The receive buffer is too small + EFI_NOT_FOUND - The component was not running + + --*/ + + +typedef +EFI_STATUS +(EFIAPI * EFI_TPM_MP_TRANSMIT)( + IN EFI_TPM_DEVICE_PROTOCOL *This, + IN UINTN NoInBuffers, + IN TPM_TRANSMIT_BUFFER *InBuffers, + IN UINTN NoOutBuffers, + IN OUT TPM_TRANSMIT_BUFFER *OutBuffers + ); +/*++ + + Routine Description: + This service transmit data to the TPM and get response from TPM + + Arguments: + This - A pointer to the EFI_TPM_MP_DRIVER_PROTOCOL. + + Returns: + EFI_SUCCESS - Operation completed successfully + EFI_DEVICE_ERROR - The command was unsuccessful + EFI_INVALID_PARAMETER - One or more of the parameters are incorrect + EFI_BUFFER_TOO_SMALL - The receive buffer is too small + EFI_NOT_FOUND - The component was not running + + --*/ + + +void Prepare2Thunkproc ( + UINT32 TcgOffset, + UINT16 TcgSelector ); + +void TcmDxeCallMPDriver ( + IN UINTN CFuncID, + TPMTransmitEntryStruct *CData, + UINT32* OUT CRetVal ); + +void TpmDxeCallMPDriver ( + IN UINTN CFuncID, + TPMTransmitEntryStruct *CData, + UINT32* OUT CRetVal ); + + +typedef struct _EFI_TPM_DEVICE_PROTOCOL +{ + EFI_TPM_MP_INIT Init; + EFI_TPM_MP_CLOSE Close; + EFI_TPM_MP_GET_STATUS_INFO GetStatusInfo; + EFI_TPM_MP_TRANSMIT Transmit; +} EFI_TPM_DEVICE_PROTOCOL; + +extern EFI_GUID gEfiTpmDeviceProtocolGuid; + +#endif diff --git a/Core/EM/TCG2/Common/Protocol/TpmDevice_Protocol.cif b/Core/EM/TCG2/Common/Protocol/TpmDevice_Protocol.cif new file mode 100644 index 0000000..f24c11c --- /dev/null +++ b/Core/EM/TCG2/Common/Protocol/TpmDevice_Protocol.cif @@ -0,0 +1,9 @@ +<component> + name = "TpmDevice_Protocol" + category = ModulePart + LocalRoot = "Core\EM\TCG2\Common\Protocol\" + RefName = "TpmDevice_Protocol" +[files] +"TpmDevice\TpmDevice.c" +"TpmDevice\TpmDevice.h" +<endComponent>
\ No newline at end of file |