提交 d8f81072 编写于 作者: M Marvin Häuser

OcBmLib: Add password processing status

上级 99432f24
......@@ -41,6 +41,7 @@ typedef struct OC_HOTKEY_CONTEXT_ OC_HOTKEY_CONTEXT;
#define OC_MENU_RESET_NVRAM_ENTRY L"Reset NVRAM"
#define OC_MENU_UEFI_SHELL_ENTRY L"UEFI Shell"
#define OC_MENU_PASSWORD_REQUEST L"Password: "
#define OC_MENU_PASSWORD_PROCESSING L"Verifying password..."
#define OC_MENU_PASSWORD_RETRY_LIMIT L"Password retry limit exceeded."
#define OC_MENU_CHOOSE_OS L"Choose the Operating System: "
#define OC_MENU_SHOW_AUXILIARY L"Show Auxiliary"
......
......@@ -628,6 +628,7 @@ OcShowSimplePasswordRequest (
UINT8 Index;
OC_PICKER_KEY_INFO PickerKeyInfo;
UINT8 SpaceIndex;
Privilege = Context->PrivilegeContext;
......@@ -680,7 +681,6 @@ OcShowSimplePasswordRequest (
}
if (PickerKeyInfo.UnicodeChar == CHAR_CARRIAGE_RETURN) {
gST->ConOut->ClearScreen (gST->ConOut);
//
// RETURN finalizes the input.
//
......@@ -739,6 +739,25 @@ OcShowSimplePasswordRequest (
OcPlayAudioFile (Context, AppleVoiceOverAudioFileBeep, TRUE);
++PwIndex;
}
//
// Output password processing status.
//
gST->ConOut->SetCursorPosition (
gST->ConOut,
0,
gST->ConOut->Mode->CursorRow
);
gST->ConOut->OutputString (gST->ConOut, OC_MENU_PASSWORD_PROCESSING);
//
// Clear remaining password prompt status.
//
for (
SpaceIndex = L_STR_LEN (OC_MENU_PASSWORD_PROCESSING);
SpaceIndex < L_STR_LEN (OC_MENU_PASSWORD_REQUEST) + PwIndex;
++SpaceIndex
) {
gST->ConOut->OutputString (gST->ConOut, L" ");
}
Result = OcVerifyPasswordSha512 (
Password,
......@@ -749,9 +768,24 @@ OcShowSimplePasswordRequest (
);
SecureZeroMem (Password, PwIndex);
//
// Clear password processing status.
//
gST->ConOut->SetCursorPosition (
gST->ConOut,
0,
gST->ConOut->Mode->CursorRow
);
for (SpaceIndex = 0; SpaceIndex < L_STR_LEN (OC_MENU_PASSWORD_PROCESSING); ++SpaceIndex) {
gST->ConOut->OutputString (gST->ConOut, L" ");
}
gST->ConOut->SetCursorPosition (
gST->ConOut,
0,
gST->ConOut->Mode->CursorRow
);
if (Result) {
gST->ConOut->ClearScreen (gST->ConOut);
Privilege->CurrentLevel = Level;
OcPlayAudioFile (Context, OcVoiceOverAudioFilePasswordAccepted, TRUE);
return EFI_SUCCESS;
......@@ -761,9 +795,7 @@ OcShowSimplePasswordRequest (
}
}
gST->ConOut->ClearScreen (gST->ConOut);
gST->ConOut->OutputString (gST->ConOut, OC_MENU_PASSWORD_RETRY_LIMIT);
gST->ConOut->OutputString (gST->ConOut, L"\r\n");
gST->ConOut->OutputString (gST->ConOut, OC_MENU_PASSWORD_RETRY_LIMIT L"\r\n");
OcPlayAudioFile (Context, OcVoiceOverAudioFilePasswordRetryLimit, TRUE);
DEBUG ((DEBUG_WARN, "OCB: User failed to verify password %d times running\n", OC_PASSWORD_MAX_RETRIES));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册