REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the SecurityPkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Jian J Wang <jian.j.wang@intel.com>
		
			
				
	
	
		
			168 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			168 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @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
 | 
						|
#define HASH_ALGORITHM_SM3_256_GUID \
 | 
						|
  { \
 | 
						|
    0x251C7818, 0x0DBF, 0xE619, { 0x7F, 0xC2, 0xD6, 0xAC, 0x43, 0x42, 0x7D, 0xA3 } \
 | 
						|
  }
 | 
						|
 | 
						|
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
 |