SecurityPkg[all]  0.98
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
HashLib.h File Reference

Data Structures

struct  HASH_INTERFACE
 

Macros

#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
 
#define HASH_ALGORITHM_SM3_256_GUID
 

Typedefs

typedef UINTN HASH_HANDLE
 
typedef IN VOID * DataToHash
 
typedef IN VOID IN UINTN DataToHashLen
 
typedef OUT TPML_DIGEST_VALUES * DigestList
 

Functions

EFI_STATUS EFIAPI HashStart (OUT HASH_HANDLE *HashHandle)
 
EFI_STATUS EFIAPI HashUpdate (IN HASH_HANDLE HashHandle, IN VOID *DataToHash, IN UINTN DataToHashLen)
 
EFI_STATUS EFIAPI HashCompleteAndExtend (IN HASH_HANDLE HashHandle, IN TPMI_DH_PCR PcrIndex, IN VOID *DataToHash, IN UINTN DataToHashLen, OUT TPML_DIGEST_VALUES *DigestList)
 
EFI_STATUS EFIAPI HashAndExtend (IN TPMI_DH_PCR PcrIndex, IN VOID *DataToHash, IN UINTN DataToHashLen, OUT TPML_DIGEST_VALUES *DigestList)
 
typedef EFI_STATUS (EFIAPI *HASH_INIT)(OUT HASH_HANDLE *HashHandle)
 
EFI_STATUS EFIAPI RegisterHashInterfaceLib (IN HASH_INTERFACE *HashInterface)
 

Detailed Description

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.
SPDX-License-Identifier: BSD-2-Clause-Patent

Macro Definition Documentation

#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
#define HASH_ALGORITHM_SM3_256_GUID
Value:
{ \
0x251C7818, 0x0DBF, 0xE619, { 0x7F, 0xC2, 0xD6, 0xAC, 0x43, 0x42, 0x7D, 0xA3 } \
}

Typedef Documentation

typedef IN VOID* DataToHash
typedef IN VOID IN UINTN DataToHashLen
typedef OUT TPML_DIGEST_VALUES* DigestList
typedef UINTN HASH_HANDLE

Function Documentation

typedef EFI_STATUS ( EFIAPI *  HASH_FINAL)

Start hash sequence.

Parameters
HashHandleHash handle.
Return values
EFI_SUCCESSHash sequence start and HandleHandle returned.
EFI_OUT_OF_RESOURCESNo enough resource to start hash.

Update hash sequence data.

Parameters
HashHandleHash handle.
DataToHashData to be hashed.
DataToHashLenData size.
Return values
EFI_SUCCESSHash sequence updated.

Complete hash sequence complete.

Parameters
HashHandleHash handle.
DigestListDigest list.
Return values
EFI_SUCCESSHash sequence complete and DigestList is returned.
EFI_STATUS EFIAPI HashAndExtend ( IN TPMI_DH_PCR  PcrIndex,
IN VOID *  DataToHash,
IN UINTN  DataToHashLen,
OUT TPML_DIGEST_VALUES *  DigestList 
)

Hash data and extend to PCR.

Parameters
PcrIndexPCR to be extended.
DataToHashData to be hashed.
DataToHashLenData size.
DigestListDigest list.
Return values
EFI_SUCCESSHash data 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 sequence complete and extend to PCR.

Parameters
HashHandleHash handle.
PcrIndexPCR to be extended.
DataToHashData to be hashed.
DataToHashLenData size.
DigestListDigest list.
Return values
EFI_SUCCESSHash sequence complete and DigestList is returned.
EFI_STATUS EFIAPI HashStart ( OUT HASH_HANDLE HashHandle)

Start hash sequence.

Parameters
HashHandleHash handle.
Return values
EFI_SUCCESSHash sequence start and HandleHandle returned.
EFI_OUT_OF_RESOURCESNo enough resource to start hash.
EFI_STATUS EFIAPI HashUpdate ( IN HASH_HANDLE  HashHandle,
IN VOID *  DataToHash,
IN UINTN  DataToHashLen 
)

Update hash sequence data.

Parameters
HashHandleHash handle.
DataToHashData to be hashed.
DataToHashLenData size.
Return values
EFI_SUCCESSHash sequence updated.
EFI_STATUS EFIAPI RegisterHashInterfaceLib ( IN HASH_INTERFACE HashInterface)

This service register Hash.

Parameters
HashInterfaceHash interface
Return values
EFI_SUCCESSThis hash interface is registered successfully.
EFI_UNSUPPORTEDSystem does not support register this interface.
EFI_ALREADY_STARTEDSystem already register this interface.