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