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 SPDX-License-Identifier: BSD-2-Clause-Patent
15 #include <Protocol/Hash.h>
16 #include <IndustryStandard/Tpm20.h>
17 typedef UINTN HASH_HANDLE
;
22 @param HashHandle Hash handle.
24 @retval EFI_SUCCESS Hash sequence start and HandleHandle returned.
25 @retval EFI_OUT_OF_RESOURCES No enough resource to start hash.
30 OUT HASH_HANDLE
*HashHandle
34 Update hash sequence data.
36 @param HashHandle Hash handle.
37 @param DataToHash Data to be hashed.
38 @param DataToHashLen Data size.
40 @retval EFI_SUCCESS Hash sequence updated.
45 IN HASH_HANDLE HashHandle
,
47 IN UINTN DataToHashLen
51 Hash sequence complete and extend to PCR.
53 @param HashHandle Hash handle.
54 @param PcrIndex PCR to be extended.
55 @param DataToHash Data to be hashed.
56 @param DataToHashLen Data size.
57 @param DigestList Digest list.
59 @retval EFI_SUCCESS Hash sequence complete and DigestList is returned.
63 HashCompleteAndExtend (
64 IN HASH_HANDLE HashHandle
,
65 IN TPMI_DH_PCR PcrIndex
,
67 IN UINTN DataToHashLen
,
68 OUT TPML_DIGEST_VALUES
*DigestList
72 Hash data and extend to PCR.
74 @param PcrIndex PCR to be extended.
75 @param DataToHash Data to be hashed.
76 @param DataToHashLen Data size.
77 @param DigestList Digest list.
79 @retval EFI_SUCCESS Hash data and DigestList is returned.
84 IN TPMI_DH_PCR PcrIndex
,
86 IN UINTN DataToHashLen
,
87 OUT TPML_DIGEST_VALUES
*DigestList
93 @param HashHandle Hash handle.
95 @retval EFI_SUCCESS Hash sequence start and HandleHandle returned.
96 @retval EFI_OUT_OF_RESOURCES No enough resource to start hash.
100 (EFIAPI
*HASH_INIT
) (
101 OUT HASH_HANDLE
*HashHandle
105 Update hash sequence data.
107 @param HashHandle Hash handle.
108 @param DataToHash Data to be hashed.
109 @param DataToHashLen Data size.
111 @retval EFI_SUCCESS Hash sequence updated.
115 (EFIAPI
*HASH_UPDATE
) (
116 IN HASH_HANDLE HashHandle
,
118 IN UINTN DataToHashLen
122 Complete hash sequence complete.
124 @param HashHandle Hash handle.
125 @param DigestList Digest list.
127 @retval EFI_SUCCESS Hash sequence complete and DigestList is returned.
131 (EFIAPI
*HASH_FINAL
) (
132 IN HASH_HANDLE HashHandle
,
133 OUT TPML_DIGEST_VALUES
*DigestList
136 #define HASH_ALGORITHM_SHA1_GUID EFI_HASH_ALGORITHM_SHA1_GUID
137 #define HASH_ALGORITHM_SHA256_GUID EFI_HASH_ALGORITHM_SHA256_GUID
138 #define HASH_ALGORITHM_SHA384_GUID EFI_HASH_ALGORITHM_SHA384_GUID
139 #define HASH_ALGORITHM_SHA512_GUID EFI_HASH_ALGORITHM_SHA512_GUID
140 #define HASH_ALGORITHM_SM3_256_GUID \
142 0x251C7818, 0x0DBF, 0xE619, { 0x7F, 0xC2, 0xD6, 0xAC, 0x43, 0x42, 0x7D, 0xA3 } \
148 HASH_UPDATE HashUpdate
;
149 HASH_FINAL HashFinal
;
153 This service register Hash.
155 @param HashInterface Hash interface
157 @retval EFI_SUCCESS This hash interface is registered successfully.
158 @retval EFI_UNSUPPORTED System does not support register this interface.
159 @retval EFI_ALREADY_STARTED System already register this interface.
163 RegisterHashInterfaceLib (
164 IN HASH_INTERFACE
*HashInterface