]> git.proxmox.com Git - mirror_edk2.git/blame - SecurityPkg/HddPassword/HddPasswordDxe.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / SecurityPkg / HddPassword / HddPasswordDxe.h
CommitLineData
e8959f81
HW
1/** @file\r
2\r
3 Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>\r
3571e136 4 Copyright (c) Microsoft Corporation.<BR>\r
e8959f81 5\r
289b714b 6 SPDX-License-Identifier: BSD-2-Clause-Patent\r
e8959f81
HW
7\r
8**/\r
9\r
10#ifndef _HDD_PASSWORD_DXE_H_\r
11#define _HDD_PASSWORD_DXE_H_\r
12\r
13#include <Uefi.h>\r
14\r
15#include <IndustryStandard/Atapi.h>\r
16#include <IndustryStandard/Pci.h>\r
17#include <Protocol/AtaPassThru.h>\r
18#include <Protocol/PciIo.h>\r
19#include <Protocol/HiiConfigAccess.h>\r
20#include <Protocol/VariableLock.h>\r
21\r
22#include <Guid/MdeModuleHii.h>\r
23#include <Guid/EventGroup.h>\r
24#include <Guid/S3StorageDeviceInitList.h>\r
25\r
26#include <Library/DebugLib.h>\r
27#include <Library/BaseLib.h>\r
28#include <Library/BaseMemoryLib.h>\r
29#include <Library/UefiRuntimeServicesTableLib.h>\r
30#include <Library/UefiDriverEntryPoint.h>\r
31#include <Library/UefiBootServicesTableLib.h>\r
32#include <Library/DxeServicesTableLib.h>\r
33#include <Library/MemoryAllocationLib.h>\r
34#include <Library/UefiHiiServicesLib.h>\r
35#include <Library/HiiLib.h>\r
36#include <Library/DevicePathLib.h>\r
37#include <Library/PrintLib.h>\r
38#include <Library/UefiLib.h>\r
39#include <Library/LockBoxLib.h>\r
40#include <Library/S3BootScriptLib.h>\r
41#include <Library/PciLib.h>\r
42#include <Library/BaseCryptLib.h>\r
43\r
44#include "HddPasswordCommon.h"\r
45#include "HddPasswordHiiDataStruc.h"\r
46\r
47//\r
48// This is the generated IFR binary data for each formset defined in VFR.\r
49// This data array is ready to be used as input of HiiAddPackages() to\r
50// create a packagelist (which contains Form packages, String packages, etc).\r
51//\r
52extern UINT8 HddPasswordBin[];\r
53\r
54//\r
55// This is the generated String package data for all .UNI files.\r
56// This data array is ready to be used as input of HiiAddPackages() to\r
57// create a packagelist (which contains Form packages, String packages, etc).\r
58//\r
59extern UINT8 HddPasswordDxeStrings[];\r
60\r
c411b485 61#define HDD_PASSWORD_DXE_PRIVATE_SIGNATURE SIGNATURE_32 ('H', 'D', 'D', 'P')\r
e8959f81
HW
62\r
63typedef struct _HDD_PASSWORD_CONFIG_FORM_ENTRY {\r
64 LIST_ENTRY Link;\r
65 EFI_HANDLE Controller;\r
66 UINTN Bus;\r
67 UINTN Device;\r
68 UINTN Function;\r
69 UINT16 Port;\r
70 UINT16 PortMultiplierPort;\r
71 EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
72 CHAR16 HddString[64];\r
73 CHAR8 Password[HDD_PASSWORD_MAX_LENGTH];\r
74 EFI_STRING_ID TitleToken;\r
75 EFI_STRING_ID TitleHelpToken;\r
76\r
77 HDD_PASSWORD_CONFIG IfrData;\r
78 EFI_ATA_PASS_THRU_PROTOCOL *AtaPassThru;\r
79} HDD_PASSWORD_CONFIG_FORM_ENTRY;\r
80\r
81typedef struct _HDD_PASSWORD_DXE_PRIVATE_DATA {\r
c411b485
MK
82 UINTN Signature;\r
83 EFI_HANDLE DriverHandle;\r
84 EFI_HII_HANDLE HiiHandle;\r
85 EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess;\r
86 HDD_PASSWORD_CONFIG_FORM_ENTRY *Current;\r
e8959f81
HW
87} HDD_PASSWORD_DXE_PRIVATE_DATA;\r
88\r
89#define HDD_PASSWORD_DXE_PRIVATE_FROM_THIS(a) CR (a, HDD_PASSWORD_DXE_PRIVATE_DATA, ConfigAccess, HDD_PASSWORD_DXE_PRIVATE_SIGNATURE)\r
90\r
c411b485 91#define PASSWORD_SALT_SIZE 32\r
e8959f81
HW
92\r
93#define HDD_PASSWORD_REQUEST_VARIABLE_NAME L"HddPasswordRequest"\r
94\r
95//\r
96// It needs to be locked before EndOfDxe.\r
97//\r
c411b485 98#define HDD_PASSWORD_VARIABLE_NAME L"HddPassword"\r
e8959f81
HW
99\r
100#pragma pack(1)\r
101\r
102typedef struct {\r
c411b485
MK
103 HDD_PASSWORD_DEVICE Device;\r
104 HDD_PASSWORD_REQUEST Request;\r
e8959f81
HW
105} HDD_PASSWORD_REQUEST_VARIABLE;\r
106\r
107//\r
108// It will be used to validate HDD password when the device is at frozen state.\r
109//\r
110typedef struct {\r
c411b485
MK
111 HDD_PASSWORD_DEVICE Device;\r
112 UINT8 PasswordHash[SHA256_DIGEST_SIZE];\r
113 UINT8 PasswordSalt[PASSWORD_SALT_SIZE];\r
e8959f81
HW
114} HDD_PASSWORD_VARIABLE;\r
115\r
116///\r
117/// HII specific Vendor Device Path definition.\r
118///\r
119typedef struct {\r
c411b485
MK
120 VENDOR_DEVICE_PATH VendorDevicePath;\r
121 EFI_DEVICE_PATH_PROTOCOL End;\r
e8959f81
HW
122} HII_VENDOR_DEVICE_PATH;\r
123\r
124#pragma pack()\r
125\r
126//\r
127// Time out value for ATA pass through protocol\r
128//\r
c411b485 129#define ATA_TIMEOUT EFI_TIMER_PERIOD_SECONDS (3)\r
e8959f81
HW
130\r
131typedef struct {\r
c411b485
MK
132 UINT32 Address;\r
133 S3_BOOT_SCRIPT_LIB_WIDTH Width;\r
e8959f81
HW
134} HDD_HC_PCI_REGISTER_SAVE;\r
135\r
136#endif\r