123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- /** @file
- This library abstract TPM2 hash calculation.
- The platform can choose multiply hash, while caller just need invoke these API.
- Then all hash value will be returned and/or extended.
- Copyright (c) 2013 - 2016, Intel Corporation. All rights reserved. <BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #ifndef _HASH_LIB_H_
- #define _HASH_LIB_H_
- #include <Uefi.h>
- #include <Protocol/Hash.h>
- #include <IndustryStandard/Tpm20.h>
- typedef UINTN HASH_HANDLE;
- /**
- Start hash sequence.
- @param HashHandle Hash handle.
- @retval EFI_SUCCESS Hash sequence start and HandleHandle returned.
- @retval EFI_OUT_OF_RESOURCES No enough resource to start hash.
- **/
- EFI_STATUS
- EFIAPI
- HashStart (
- OUT HASH_HANDLE *HashHandle
- );
- /**
- Update hash sequence data.
- @param HashHandle Hash handle.
- @param DataToHash Data to be hashed.
- @param DataToHashLen Data size.
- @retval EFI_SUCCESS Hash sequence updated.
- **/
- EFI_STATUS
- EFIAPI
- HashUpdate (
- IN HASH_HANDLE HashHandle,
- IN VOID *DataToHash,
- IN UINTN DataToHashLen
- );
- /**
- Hash sequence complete and extend to PCR.
- @param HashHandle Hash handle.
- @param PcrIndex PCR to be extended.
- @param DataToHash Data to be hashed.
- @param DataToHashLen Data size.
- @param DigestList Digest list.
- @retval EFI_SUCCESS Hash sequence complete and DigestList is returned.
- **/
- EFI_STATUS
- EFIAPI
- HashCompleteAndExtend (
- IN HASH_HANDLE HashHandle,
- IN TPMI_DH_PCR PcrIndex,
- IN VOID *DataToHash,
- IN UINTN DataToHashLen,
- OUT TPML_DIGEST_VALUES *DigestList
- );
- /**
- Hash data and extend to PCR.
- @param PcrIndex PCR to be extended.
- @param DataToHash Data to be hashed.
- @param DataToHashLen Data size.
- @param DigestList Digest list.
- @retval EFI_SUCCESS Hash data and DigestList is returned.
- **/
- EFI_STATUS
- EFIAPI
- HashAndExtend (
- IN TPMI_DH_PCR PcrIndex,
- IN VOID *DataToHash,
- IN UINTN DataToHashLen,
- OUT TPML_DIGEST_VALUES *DigestList
- );
- /**
- Start hash sequence.
- @param HashHandle Hash handle.
- @retval EFI_SUCCESS Hash sequence start and HandleHandle returned.
- @retval EFI_OUT_OF_RESOURCES No enough resource to start hash.
- **/
- typedef
- EFI_STATUS
- (EFIAPI *HASH_INIT) (
- OUT HASH_HANDLE *HashHandle
- );
- /**
- Update hash sequence data.
- @param HashHandle Hash handle.
- @param DataToHash Data to be hashed.
- @param DataToHashLen Data size.
- @retval EFI_SUCCESS Hash sequence updated.
- **/
- typedef
- EFI_STATUS
- (EFIAPI *HASH_UPDATE) (
- IN HASH_HANDLE HashHandle,
- IN VOID *DataToHash,
- IN UINTN DataToHashLen
- );
- /**
- Complete hash sequence complete.
- @param HashHandle Hash handle.
- @param DigestList Digest list.
- @retval EFI_SUCCESS Hash sequence complete and DigestList is returned.
- **/
- typedef
- EFI_STATUS
- (EFIAPI *HASH_FINAL) (
- IN HASH_HANDLE HashHandle,
- OUT TPML_DIGEST_VALUES *DigestList
- );
- #define HASH_ALGORITHM_SHA1_GUID EFI_HASH_ALGORITHM_SHA1_GUID
- #define HASH_ALGORITHM_SHA256_GUID EFI_HASH_ALGORITHM_SHA256_GUID
- #define HASH_ALGORITHM_SHA384_GUID EFI_HASH_ALGORITHM_SHA384_GUID
- #define HASH_ALGORITHM_SHA512_GUID EFI_HASH_ALGORITHM_SHA512_GUID
- typedef struct {
- EFI_GUID HashGuid;
- HASH_INIT HashInit;
- HASH_UPDATE HashUpdate;
- HASH_FINAL HashFinal;
- } HASH_INTERFACE;
- /**
- This service register Hash.
- @param HashInterface Hash interface
- @retval EFI_SUCCESS This hash interface is registered successfully.
- @retval EFI_UNSUPPORTED System does not support register this interface.
- @retval EFI_ALREADY_STARTED System already register this interface.
- **/
- EFI_STATUS
- EFIAPI
- RegisterHashInterfaceLib (
- IN HASH_INTERFACE *HashInterface
- );
- #endif
|