1 /** @file 2 PPI to describe stored hash digest for FVs. 3 4 Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> 5 SPDX-License-Identifier: BSD-2-Clause-Patent 6 7 **/ 8 9 #ifndef __PEI_FIRMWARE_VOLUME_INFO_STORED_HASH_FV_H__ 10 #define __PEI_FIRMWARE_VOLUME_INFO_STORED_HASH_FV_H__ 11 12 #include <Ppi/FirmwareVolumeInfoPrehashedFV.h> 13 14 // {7F5E4E31-81B1-47E5-9E21-1E4B5BC2F61D} 15 #define EDKII_PEI_FIRMWARE_VOLUME_INFO_STORED_HASH_FV_PPI_GUID \ 16 {0x7f5e4e31, 0x81b1, 0x47e5, {0x9e, 0x21, 0x1e, 0x4b, 0x5b, 0xc2, 0xf6, 0x1d}} 17 18 // 19 // Hashed FV flags. 20 // 21 #define HASHED_FV_FLAG_REPORT_FV_INFO_PPI 0x0000000000000001 22 #define HASHED_FV_FLAG_REPORT_FV_HOB 0x0000000000000002 23 #define HASHED_FV_FLAG_VERIFIED_BOOT 0x0000000000000010 24 #define HASHED_FV_FLAG_MEASURED_BOOT 0x0000000000000020 25 #define HASHED_FV_FLAG_SKIP_ALL 0xFFFFFFFFFFFFFF00 26 #define HASHED_FV_FLAG_SKIP_BOOT_MODE(Mode) LShiftU64 (0x100, (Mode)) 27 28 // 29 // FV hash flags 30 // 31 #define FV_HASH_FLAG_BOOT_MODE(Mode) LShiftU64 (0x100, (Mode)) 32 33 typedef struct _EDKII_PEI_FIRMWARE_VOLUME_INFO_STORED_HASH_FV_PPI 34 EDKII_PEI_FIRMWARE_VOLUME_INFO_STORED_HASH_FV_PPI; 35 36 typedef struct _HASHED_FV_INFO { 37 UINT64 Base; 38 UINT64 Length; 39 UINT64 Flag; 40 } HASHED_FV_INFO; 41 42 typedef struct _FV_HASH_INFO { 43 UINT64 HashFlag; 44 UINT16 HashAlgoId; 45 UINT16 HashSize; 46 UINT8 Hash[64]; 47 } FV_HASH_INFO; 48 49 // 50 // PPI used to convey FVs and hash information of a specific platform. Only one 51 // instance of this PPI is allowed in the platform. 52 // 53 struct _EDKII_PEI_FIRMWARE_VOLUME_INFO_STORED_HASH_FV_PPI { 54 FV_HASH_INFO HashInfo; 55 UINTN FvNumber; 56 HASHED_FV_INFO FvInfo[1]; 57 }; 58 59 extern EFI_GUID gEdkiiPeiFirmwareVolumeInfoStoredHashFvPpiGuid; 60 61 #endif 62 63