2 This library abstract TPM2 hash calculation.
3 The platform can choose multiply hash, while caller just need invoke these API.
4 Then all hash value will be returned and/or extended.
6 Copyright (c) 2013 - 2016, Intel Corporation. All rights reserved. <BR>
7 This program and the accompanying materials
8 are licensed and made available under the terms and conditions of the BSD License
9 which accompanies this distribution. The full text of the license may be found at
10 http://opensource.org/licenses/bsd-license.php
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
21 #include <Protocol/Hash.h>
23 typedef UINTN HASH_HANDLE
;
28 @param HashHandle Hash handle.
30 @retval EFI_SUCCESS Hash sequence start and HandleHandle returned.
31 @retval EFI_OUT_OF_RESOURCES No enough resource to start hash.
36 OUT HASH_HANDLE
*HashHandle
40 Update hash sequence data.
42 @param HashHandle Hash handle.
43 @param DataToHash Data to be hashed.
44 @param DataToHashLen Data size.
46 @retval EFI_SUCCESS Hash sequence updated.
51 IN HASH_HANDLE HashHandle
,
53 IN UINTN DataToHashLen
57 Hash sequence complete and extend to PCR.
59 @param HashHandle Hash handle.
60 @param PcrIndex PCR to be extended.
61 @param DataToHash Data to be hashed.
62 @param DataToHashLen Data size.
63 @param DigestList Digest list.
65 @retval EFI_SUCCESS Hash sequence complete and DigestList is returned.
69 HashCompleteAndExtend (
70 IN HASH_HANDLE HashHandle
,
71 IN TPMI_DH_PCR PcrIndex
,
73 IN UINTN DataToHashLen
,
74 OUT TPML_DIGEST_VALUES
*DigestList
78 Hash data and extend to PCR.
80 @param PcrIndex PCR to be extended.
81 @param DataToHash Data to be hashed.
82 @param DataToHashLen Data size.
83 @param DigestList Digest list.
85 @retval EFI_SUCCESS Hash data and DigestList is returned.
90 IN TPMI_DH_PCR PcrIndex
,
92 IN UINTN DataToHashLen
,
93 OUT TPML_DIGEST_VALUES
*DigestList
99 @param HashHandle Hash handle.
101 @retval EFI_SUCCESS Hash sequence start and HandleHandle returned.
102 @retval EFI_OUT_OF_RESOURCES No enough resource to start hash.
106 (EFIAPI
*HASH_INIT
) (
107 OUT HASH_HANDLE
*HashHandle
111 Update hash sequence data.
113 @param HashHandle Hash handle.
114 @param DataToHash Data to be hashed.
115 @param DataToHashLen Data size.
117 @retval EFI_SUCCESS Hash sequence updated.
121 (EFIAPI
*HASH_UPDATE
) (
122 IN HASH_HANDLE HashHandle
,
124 IN UINTN DataToHashLen
128 Complete hash sequence complete.
130 @param HashHandle Hash handle.
131 @param DigestList Digest list.
133 @retval EFI_SUCCESS Hash sequence complete and DigestList is returned.
137 (EFIAPI
*HASH_FINAL
) (
138 IN HASH_HANDLE HashHandle
,
139 OUT TPML_DIGEST_VALUES
*DigestList
142 #define HASH_ALGORITHM_SHA1_GUID EFI_HASH_ALGORITHM_SHA1_GUID
143 #define HASH_ALGORITHM_SHA256_GUID EFI_HASH_ALGORITHM_SHA256_GUID
144 #define HASH_ALGORITHM_SHA384_GUID EFI_HASH_ALGORITHM_SHA384_GUID
145 #define HASH_ALGORITHM_SHA512_GUID EFI_HASH_ALGORITHM_SHA512_GUID
150 HASH_UPDATE HashUpdate
;
151 HASH_FINAL HashFinal
;
155 This service register Hash.
157 @param HashInterface Hash interface
159 @retval EFI_SUCCESS This hash interface is registered successfully.
160 @retval EFI_UNSUPPORTED System does not support register this interface.
161 @retval EFI_ALREADY_STARTED System already register this interface.
165 RegisterHashInterfaceLib (
166 IN HASH_INTERFACE
*HashInterface