VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/FirmwareNew/SecurityPkg/Include/Library/HashLib.h

Last change on this file was 99404, checked in by vboxsync, 2 years ago

Devices/EFI/FirmwareNew: Update to edk2-stable202302 and make it build, bugref:4643

  • Property svn:eol-style set to native
File size: 3.9 KB
Line 
1/** @file
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.
5
6Copyright (c) 2013 - 2016, Intel Corporation. All rights reserved. <BR>
7SPDX-License-Identifier: BSD-2-Clause-Patent
8
9**/
10
11#ifndef _HASH_LIB_H_
12#define _HASH_LIB_H_
13
14#include <Uefi.h>
15#include <Protocol/Hash.h>
16#include <IndustryStandard/Tpm20.h>
17typedef UINTN HASH_HANDLE;
18
19/**
20 Start hash sequence.
21
22 @param HashHandle Hash handle.
23
24 @retval EFI_SUCCESS Hash sequence start and HandleHandle returned.
25 @retval EFI_OUT_OF_RESOURCES No enough resource to start hash.
26**/
27EFI_STATUS
28EFIAPI
29HashStart (
30 OUT HASH_HANDLE *HashHandle
31 );
32
33/**
34 Update hash sequence data.
35
36 @param HashHandle Hash handle.
37 @param DataToHash Data to be hashed.
38 @param DataToHashLen Data size.
39
40 @retval EFI_SUCCESS Hash sequence updated.
41**/
42EFI_STATUS
43EFIAPI
44HashUpdate (
45 IN HASH_HANDLE HashHandle,
46 IN VOID *DataToHash,
47 IN UINTN DataToHashLen
48 );
49
50/**
51 Hash sequence complete and extend to PCR.
52
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.
58
59 @retval EFI_SUCCESS Hash sequence complete and DigestList is returned.
60**/
61EFI_STATUS
62EFIAPI
63HashCompleteAndExtend (
64 IN HASH_HANDLE HashHandle,
65 IN TPMI_DH_PCR PcrIndex,
66 IN VOID *DataToHash,
67 IN UINTN DataToHashLen,
68 OUT TPML_DIGEST_VALUES *DigestList
69 );
70
71/**
72 Hash data and extend to PCR.
73
74 @param PcrIndex PCR to be extended.
75 @param DataToHash Data to be hashed.
76 @param DataToHashLen Data size.
77 @param DigestList Digest list.
78
79 @retval EFI_SUCCESS Hash data and DigestList is returned.
80**/
81EFI_STATUS
82EFIAPI
83HashAndExtend (
84 IN TPMI_DH_PCR PcrIndex,
85 IN VOID *DataToHash,
86 IN UINTN DataToHashLen,
87 OUT TPML_DIGEST_VALUES *DigestList
88 );
89
90/**
91 Start hash sequence.
92
93 @param HashHandle Hash handle.
94
95 @retval EFI_SUCCESS Hash sequence start and HandleHandle returned.
96 @retval EFI_OUT_OF_RESOURCES No enough resource to start hash.
97**/
98typedef
99EFI_STATUS
100(EFIAPI *HASH_INIT)(
101 OUT HASH_HANDLE *HashHandle
102 );
103
104/**
105 Update hash sequence data.
106
107 @param HashHandle Hash handle.
108 @param DataToHash Data to be hashed.
109 @param DataToHashLen Data size.
110
111 @retval EFI_SUCCESS Hash sequence updated.
112**/
113typedef
114EFI_STATUS
115(EFIAPI *HASH_UPDATE)(
116 IN HASH_HANDLE HashHandle,
117 IN VOID *DataToHash,
118 IN UINTN DataToHashLen
119 );
120
121/**
122 Complete hash sequence complete.
123
124 @param HashHandle Hash handle.
125 @param DigestList Digest list.
126
127 @retval EFI_SUCCESS Hash sequence complete and DigestList is returned.
128**/
129typedef
130EFI_STATUS
131(EFIAPI *HASH_FINAL)(
132 IN HASH_HANDLE HashHandle,
133 OUT TPML_DIGEST_VALUES *DigestList
134 );
135
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 \
141 { \
142 0x251C7818, 0x0DBF, 0xE619, { 0x7F, 0xC2, 0xD6, 0xAC, 0x43, 0x42, 0x7D, 0xA3 } \
143 }
144
145typedef struct {
146 EFI_GUID HashGuid;
147 HASH_INIT HashInit;
148 HASH_UPDATE HashUpdate;
149 HASH_FINAL HashFinal;
150} HASH_INTERFACE;
151
152/**
153 This service register Hash.
154
155 @param HashInterface Hash interface
156
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.
160**/
161EFI_STATUS
162EFIAPI
163RegisterHashInterfaceLib (
164 IN HASH_INTERFACE *HashInterface
165 );
166
167#endif
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette