]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Include/Protocol/TcgService.h
Add TPM related definitions.
[mirror_edk2.git] / MdePkg / Include / Protocol / TcgService.h
CommitLineData
267669ba
LG
1/*++\r
2\r
3Copyright (c) 2006, Intel Corporation \r
4All rights reserved. This program and the accompanying materials \r
5are licensed and made available under the terms and conditions of the BSD License \r
6which accompanies this distribution. The full text of the license may be found at \r
7http://opensource.org/licenses/bsd-license.php \r
8 \r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
11\r
12Module Name:\r
13\r
14 TcgService.h\r
15\r
16Abstract:\r
17\r
18 TCG Service Protocol as defined in TCG_EFI_Protocol_1_20_Final\r
19\r
20 See http://trustedcomputinggroup.org for the latest specification\r
21\r
22--*/\r
23\r
24#ifndef _TCG_SERVICE_PROTOCOL_H_\r
25#define _TCG_SERVICE_PROTOCOL_H_\r
26\r
27#include <Uefi/UefiTcgPlatform.h>\r
28\r
29#define EFI_TCG_PROTOCOL_GUID \\r
30 {0xf541796d, 0xa62e, 0x4954, { 0xa7, 0x75, 0x95, 0x84, 0xf6, 0x1b, 0x9c, 0xdd } } \r
31\r
32typedef struct _EFI_TCG_PROTOCOL EFI_TCG_PROTOCOL;\r
33\r
34//\r
35// Set structure alignment to 1-byte\r
36//\r
37#pragma pack (push, 1)\r
38\r
39typedef struct {\r
40 UINT8 Major;\r
41 UINT8 Minor;\r
42 UINT8 RevMajor;\r
43 UINT8 RevMinor;\r
44} TCG_VERSION;\r
45\r
46typedef struct _TCG_EFI_BOOT_SERVICE_CAPABILITY {\r
47 UINT8 Size; // Size of this structure\r
48 TCG_VERSION StructureVersion; \r
49 TCG_VERSION ProtocolSpecVersion;\r
50 UINT8 HashAlgorithmBitmap; // Hash algorithms \r
51 // this protocol is capable of : 01=SHA-1\r
52 BOOLEAN TPMPresentFlag; // 00h = TPM not present\r
53 BOOLEAN TPMDeactivatedFlag; // 01h = TPM currently deactivated\r
54} TCG_EFI_BOOT_SERVICE_CAPABILITY;\r
55\r
56typedef UINT32 TCG_ALGORITHM_ID;\r
57\r
58//\r
59// Restore original structure alignment\r
60//\r
61#pragma pack (pop)\r
62\r
63typedef\r
64EFI_STATUS\r
65(EFIAPI *EFI_TCG_STATUS_CHECK) (\r
66 IN EFI_TCG_PROTOCOL *This,\r
67 OUT TCG_EFI_BOOT_SERVICE_CAPABILITY\r
68 *ProtocolCapability,\r
69 OUT UINT32 *TCGFeatureFlags,\r
70 OUT EFI_PHYSICAL_ADDRESS *EventLogLocation,\r
71 OUT EFI_PHYSICAL_ADDRESS *EventLogLastEntry\r
72 );\r
73\r
74typedef\r
75EFI_STATUS\r
76(EFIAPI *EFI_TCG_HASH_ALL) (\r
77 IN EFI_TCG_PROTOCOL *This,\r
78 IN UINT8 *HashData,\r
79 IN UINT64 HashDataLen,\r
80 IN TCG_ALGORITHM_ID AlgorithmId,\r
81 IN OUT UINT64 *HashedDataLen,\r
82 IN OUT UINT8 **HashedDataResult\r
83 );\r
84\r
85typedef\r
86EFI_STATUS\r
87(EFIAPI *EFI_TCG_LOG_EVENT) (\r
88 IN EFI_TCG_PROTOCOL *This,\r
89 IN TCG_PCR_EVENT *TCGLogData,\r
90 IN OUT UINT32 *EventNumber,\r
91 IN UINT32 Flags\r
92 );\r
93\r
94typedef\r
95EFI_STATUS\r
96(EFIAPI *EFI_TCG_PASS_THROUGH_TO_TPM) (\r
97 IN EFI_TCG_PROTOCOL *This,\r
98 IN UINT32 TpmInputParamterBlockSize,\r
99 IN UINT8 *TpmInputParamterBlock,\r
100 IN UINT32 TpmOutputParameterBlockSize,\r
101 IN UINT8 *TpmOutputParameterBlock\r
102 );\r
103\r
104typedef\r
105EFI_STATUS\r
106(EFIAPI *EFI_TCG_HASH_LOG_EXTEND_EVENT) (\r
107 IN EFI_TCG_PROTOCOL *This,\r
108 IN UINT8 *HashData,\r
109 IN UINT64 HashDataLen,\r
110 IN TCG_ALGORITHM_ID AlgorithmId,\r
111 IN OUT TCG_PCR_EVENT *TCGLogData,\r
112 IN OUT UINT32 *EventNumber,\r
113 OUT EFI_PHYSICAL_ADDRESS *EventLogLastEntry\r
114 );\r
115\r
116typedef struct _EFI_TCG_PROTOCOL {\r
117 EFI_TCG_STATUS_CHECK StatusCheck;\r
118 EFI_TCG_HASH_ALL HashAll;\r
119 EFI_TCG_LOG_EVENT LogEvent;\r
120 EFI_TCG_PASS_THROUGH_TO_TPM PassThroughToTpm;\r
121 EFI_TCG_HASH_LOG_EXTEND_EVENT HashLogExtendEvent;\r
122} EFI_TCG_PROTOCOL;\r
123\r
124extern EFI_GUID gEfiTcgProtocolGuid;\r
125\r
126#endif\r