SecureBootConfig: Clear PK and reset

Signed-off-by: Tim Crawford <tcrawford@system76.com>
This commit is contained in:
Tim Crawford
2023-01-27 16:09:57 -07:00
committed by Jeremy Soller
parent 2f21eddfb8
commit c1a7127e01
2 changed files with 17 additions and 34 deletions

View File

@ -107,7 +107,7 @@ formset
help = STRING_TOKEN(STR_NULL), help = STRING_TOKEN(STR_NULL),
text = STRING_TOKEN(STR_DELETE_KEYS_SELECTION), text = STRING_TOKEN(STR_DELETE_KEYS_SELECTION),
flags = INTERACTIVE, flags = INTERACTIVE,
key = KEY_DELETE_KEYS; key = KEY_SECURE_BOOT_DELETE_PK;
goto SECUREBOOT_CONFIGURATION_FORM_ID, goto SECUREBOOT_CONFIGURATION_FORM_ID,
prompt = STRING_TOKEN(STR_CANCEL), prompt = STRING_TOKEN(STR_CANCEL),

View File

@ -4519,26 +4519,7 @@ SecureBootCallback (
break; break;
case KEY_SECURE_BOOT_DELETE_PK: case KEY_SECURE_BOOT_DELETE_PK:
if (Value->u8) { Status = DeletePlatformKey();
CreatePopUp (
EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE,
&Key,
L"Are you sure you want to delete PK? Secure boot will be disabled!",
L"Press 'Y' to delete PK and exit, 'N' to discard change and return",
NULL
);
if (Key.UnicodeChar == 'y' || Key.UnicodeChar == 'Y') {
Status = DeletePlatformKey ();
if (EFI_ERROR (Status)) {
CreatePopUp (
EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE,
&Key,
L"Only Physical Presence User could delete PK in custom mode!",
NULL
);
}
}
}
break; break;
case KEY_DELETE_KEK: case KEY_DELETE_KEK:
@ -4859,19 +4840,21 @@ SecureBootCallback (
*ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_APPLY; *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_APPLY;
break; break;
case KEY_SECURE_BOOT_DELETE_PK: case KEY_SECURE_BOOT_DELETE_PK:
GetVariable2 (EFI_SETUP_MODE_NAME, &gEfiGlobalVariableGuid, (VOID**)&SetupMode, NULL); //GetVariable2 (EFI_SETUP_MODE_NAME, &gEfiGlobalVariableGuid, (VOID**)&SetupMode, NULL);
if (SetupMode == NULL || (*SetupMode) == SETUP_MODE) { //if (SetupMode == NULL || (*SetupMode) == SETUP_MODE) {
IfrNvData->DeletePk = TRUE; // IfrNvData->DeletePk = TRUE;
IfrNvData->HasPk = FALSE; // IfrNvData->HasPk = FALSE;
*ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT; // *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;
} else { //} else {
IfrNvData->DeletePk = FALSE; // IfrNvData->DeletePk = FALSE;
IfrNvData->HasPk = TRUE; // IfrNvData->HasPk = TRUE;
*ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_APPLY; // *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_APPLY;
} //}
if (SetupMode != NULL) { //if (SetupMode != NULL) {
FreePool (SetupMode); // FreePool (SetupMode);
} //}
// XXX: Is this safe?
gRT->ResetSystem(EfiResetCold, Status, 0, NULL);
break; break;
//case KEY_SECURE_BOOT_RESET_TO_DEFAULT: //case KEY_SECURE_BOOT_RESET_TO_DEFAULT:
case KEY_RESTORE_KEYS: case KEY_RESTORE_KEYS: