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