alder_lake_bios/Insyde/InsydeModulePkg/Universal/UserInterface/SecureBootMgrDxe/EnrollHash.h

134 lines
4.3 KiB
C

/** @file
;******************************************************************************
;* Copyright (c) 2012 - 2017, Insyde Software Corp. All Rights Reserved.
;*
;* You may not reproduce, distribute, publish, display, perform, modify, adapt,
;* transmit, broadcast, present, recite, release, license or otherwise exploit
;* any part of this publication in any form, by any means, without the prior
;* written permission of Insyde Software Corporation.
;*
;******************************************************************************
*/
#ifndef _ENROLL_HASH_H_
#define _ENROLL_HASH_H_
#include "SecureBootMgr.h"
#include "SecureBootVar.h"
#include "SecureBootMisc.h"
#include <Protocol/LoadFile.h>
#include <Guid/FileSystemVolumeLabelInfo.h>
#include <Guid/WinCertificate.h>
#include <Guid/ImageAuthentication.h>
#define EM_MENU_ENTRY_SIGNATURE SIGNATURE_32 ('E', 'M', 'E', 'T')
#define HASH_LINK_LIST_SIGNATURE SIGNATURE_32 ('H', 'A', 'L', 'L')
#define EM_FILE_CONTEXT_SELECT 0x1
#define ENROLL_FILE_OPTION_OFFSET 0x8000
#define ENROLL_FILE_OPTION_MASK 0x7FFF
#define EM_UPDATE_DATA_SIZE 0x100000
#define EM_FILE_SYSTEM 0x0001
#define EM_DIRECTORY 0x0002
#define EM_UNKNOWN_CONTEXT 0x0003
#define EM_FILE_FORMAT_EFI 0x0001
#define EM_FILE_FORMAT_CER 0x0002
#define EM_FILE_FORMAT_SHA256 0x0003
#define EM_FILE_FORMAT_SHA512 0x0004
#define HASHALG_MD5 0x00000000
#define HASHALG_SHA1 0x00000001
#define HASHALG_SHA224 0x00000002
#define HASHALG_SHA256 0x00000003
#define HASHALG_SHA384 0x00000004
#define HASHALG_SHA512 0x00000005
#define HASHALG_MAX 0x00000006
typedef struct {
UINTN Signature;
LIST_ENTRY Head;
UINTN MenuNumber;
} ENROLL_MENU_OPTION;
typedef struct {
UINTN Signature;
LIST_ENTRY Link;
UINTN OptionNumber;
UINT16 *DisplayString;
UINT16 *HelpString;
EFI_STRING_ID DisplayStringToken;
EFI_STRING_ID HelpStringToken;
UINTN ContextSelection;
VOID *VariableContext;
} ENROLL_MENU_ENTRY;
typedef struct {
EFI_HANDLE Handle;
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
EFI_FILE_HANDLE FHandle;
UINT16 *FileName;
EFI_FILE_SYSTEM_VOLUME_LABEL *Info;
BOOLEAN IsRoot;
BOOLEAN IsDir;
BOOLEAN IsRemovableMedia;
BOOLEAN IsLoadFile;
BOOLEAN IsBootLegacy;
} EM_FILE_CONTEXT;
typedef struct {
WIN_CERTIFICATE Hdr;
UINT8 CertData[1];
} WIN_CERTIFICATE_EFI_PKCS;
typedef struct {
EFI_GUID *Index;
CHAR16 *Name; ///< Name for Hash Algorithm
UINTN DigestLength; ///< Digest Length
UINT8 *OidValue; ///< Hash Algorithm OID ASN.1 Value
UINTN OidLength; ///< Length of Hash OID Value
} HASH_TABLE;
typedef struct {
UINTN Signature;
LIST_ENTRY Link;
UINTN ShaType;
UINTN HashSize;
UINT8 Hash[32];
} HASH_LINK_LIST;
EFI_STATUS
InitializeEnrollMenu (
IN SECURE_BOOT_MANAGER_CALLBACK_DATA *CallbackData
);
BOOLEAN
UpdateEmFileExplorer (
IN SECURE_BOOT_MANAGER_CALLBACK_DATA *CallbackData,
IN UINT16 KeyValue
);
typedef struct {
EFI_HANDLE Handle;
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
EFI_FILE_HANDLE FHandle;
UINT16 *FileName;
EFI_FILE_SYSTEM_VOLUME_LABEL *Info;
BOOLEAN IsRoot;
BOOLEAN IsDir;
BOOLEAN IsRemovableMedia;
BOOLEAN IsLoadFile;
BOOLEAN IsBootLegacy;
} BM_FILE_CONTEXT;
extern ENROLL_MENU_OPTION mSecureBootFsOptionMenu;
extern ENROLL_MENU_OPTION mSecureBootDirectoryMenu;
extern STRING_DEPOSITORY *mSecureBootFileOptionStrDepository;
#endif