mirror of https://github.com/acidanthera/audk.git
123 lines
3.3 KiB
C
123 lines
3.3 KiB
C
/** @file
|
|
Definitions for OBB FVs verification.
|
|
|
|
Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
|
|
**/
|
|
|
|
#ifndef __FV_REPORT_PEI_H__
|
|
#define __FV_REPORT_PEI_H__
|
|
|
|
#include <PiPei.h>
|
|
|
|
#include <IndustryStandard/Tpm20.h>
|
|
|
|
#include <Ppi/FirmwareVolumeInfoStoredHashFv.h>
|
|
#include <Ppi/FirmwareVolumeShadowPpi.h>
|
|
|
|
#include <Library/PeiServicesLib.h>
|
|
#include <Library/PcdLib.h>
|
|
#include <Library/HobLib.h>
|
|
#include <Library/DebugLib.h>
|
|
#include <Library/BaseMemoryLib.h>
|
|
#include <Library/MemoryAllocationLib.h>
|
|
#include <Library/BaseCryptLib.h>
|
|
#include <Library/ReportStatusCodeLib.h>
|
|
|
|
#define HASH_INFO_PTR(PreHashedFvPpi) \
|
|
(HASH_INFO *)((UINT8 *)(PreHashedFvPpi) + sizeof (EDKII_PEI_FIRMWARE_VOLUME_INFO_PREHASHED_FV_PPI))
|
|
|
|
#define HASH_VALUE_PTR(HashInfo) \
|
|
(VOID *)((UINT8 *)(HashInfo) + sizeof (HASH_INFO))
|
|
|
|
/**
|
|
Computes the message digest of a input data buffer.
|
|
|
|
This function performs message digest of a given data buffer, and places
|
|
the digest value into the specified memory.
|
|
|
|
If this interface is not supported, then return FALSE.
|
|
|
|
@param[in] Data Pointer to the buffer containing the data to be hashed.
|
|
@param[in] DataSize Size of Data buffer in bytes.
|
|
@param[out] HashValue Pointer to a buffer that receives digest value.
|
|
|
|
@retval TRUE The digest computation succeeded.
|
|
@retval FALSE The digest computation failed.
|
|
|
|
**/
|
|
typedef
|
|
BOOLEAN
|
|
(EFIAPI *HASH_ALL_METHOD)(
|
|
IN CONST VOID *Data,
|
|
IN UINTN DataSize,
|
|
OUT UINT8 *HashValue
|
|
);
|
|
|
|
/**
|
|
Initializes user-supplied memory as hash context for subsequent use.
|
|
|
|
@param[out] HashContext Pointer to hash context being initialized.
|
|
|
|
@retval TRUE Hash context initialization succeeded.
|
|
@retval FALSE Hash context initialization failed.
|
|
@retval FALSE This interface is not supported.
|
|
|
|
**/
|
|
typedef
|
|
BOOLEAN
|
|
(EFIAPI *HASH_INIT_METHOD)(
|
|
OUT VOID *HashContext
|
|
);
|
|
|
|
/**
|
|
Digests the input data and updates hash context.
|
|
|
|
@param[in, out] HashContext Pointer to the hash context.
|
|
@param[in] Data Pointer to the buffer containing the data to be hashed.
|
|
@param[in] DataSize Size of Data buffer in bytes.
|
|
|
|
@retval TRUE Hash data digest succeeded.
|
|
@retval FALSE Hash data digest failed.
|
|
@retval FALSE This interface is not supported.
|
|
|
|
**/
|
|
typedef
|
|
BOOLEAN
|
|
(EFIAPI *HASH_UPDATE_METHOD)(
|
|
IN OUT VOID *HashContext,
|
|
IN CONST VOID *Data,
|
|
IN UINTN DataSize
|
|
);
|
|
|
|
/**
|
|
Completes computation of the hash digest value.
|
|
|
|
@param[in, out] HashContext Pointer to the hash context.
|
|
@param[out] HashValue Pointer to a buffer that receives the hash digest
|
|
value.
|
|
|
|
@retval TRUE Hash digest computation succeeded.
|
|
@retval FALSE Hash digest computation failed.
|
|
@retval FALSE This interface is not supported.
|
|
|
|
**/
|
|
typedef
|
|
BOOLEAN
|
|
(EFIAPI *HASH_FINAL_METHOD)(
|
|
IN OUT VOID *HashContext,
|
|
OUT UINT8 *HashValue
|
|
);
|
|
|
|
typedef struct {
|
|
UINT16 HashAlgId;
|
|
UINTN HashSize;
|
|
HASH_INIT_METHOD HashInit;
|
|
HASH_UPDATE_METHOD HashUpdate;
|
|
HASH_FINAL_METHOD HashFinal;
|
|
HASH_ALL_METHOD HashAll;
|
|
} HASH_ALG_INFO;
|
|
|
|
#endif //__FV_REPORT_PEI_H__
|