3#include <Library/BaseLib.h>
4#include <Library/DebugLib.h>
7#include <Library/ResetSystemLib.h>
8#include <Library/UefiBootServicesTableLib.h>
17#define PASSWORD_FIRST_DOT_SPACE 11U
22#define PASSWORD_LAST_DOT_SPACE 9U
23#define PASSWORD_INTER_DOT_SPACE 5U
27#define PASSWORD_ENTER_INTERNAL_OFFSET 25U
31#define PASSWORD_BOX_SPACE 30U
100 STATIC UINT32 LastOff = 0;
101 STATIC BOOLEAN Left = FALSE;
102 STATIC UINT8 Iteration = 0;
111 DeltaAdd = DeltaOrig - LastOff;
135 if (Iteration == 5) {
159 INITIALIZE_LIST_HEAD_VARIABLE (PwAnim.Link),
164 if (!IsNodeInList (&PwAnim.Link, &DrawContext->Animations)) {
166 InsertHeadList (&DrawContext->Animations, &PwAnim.Link);
198 Privilege = Context->PickerContext->PrivilegeContext;
200 Result = Context->PickerContext->VerifyPassword (
212 DrawContext->CursorOpacity = 0xFF;
217 if (Context->PickerContext->PickerAudioAssist) {
218 Context->PickerContext->PlayAudioFile (
219 Context->PickerContext,
230 if (Context->PickerContext->PickerAudioAssist) {
231 Context->PickerContext->PlayAudioFile (
232 Context->PickerContext,
241 if (Context->PickerContext->PickerAudioAssist) {
242 Context->PickerContext->PlayAudioFile (
243 Context->PickerContext,
265 DrawContext->CursorOpacity = 0;
277 DrawContext->CursorOpacity = 0;
297 if (KeyEvent->UnicodeChar == CHAR_CARRIAGE_RETURN) {
305 if (KeyEvent->UnicodeChar == CHAR_BACKSPACE) {
314 if (Context->PickerContext->PickerAudioAssist) {
315 Context->PickerContext->PlayAudioFile (
316 Context->PickerContext,
322 }
else if ( (KeyEvent->UnicodeChar != CHAR_NULL)
323 && (KeyEvent->UnicodeChar == (CHAR8)KeyEvent->UnicodeChar)
332 if (Context->PickerContext->PickerAudioAssist) {
333 Context->PickerContext->PlayAudioBeep (
334 Context->PickerContext,
367 DrawContext->GuiContext->AudioPlaybackTimeout = 0;
392 DrawContext->GuiContext->PickerContext->ToggleVoiceOver (
393 DrawContext->GuiContext->PickerContext,
509 (BoxImage->Height - DotImage->Height) / 2,
582 if (!Context->PickerContext->PickerAudioAssist) {
713 IN UINT64 CurrentTime
722 DrawContext->Screen.Opacity = Opacity;
764 UINT32 ImageMidOffset;
766 UINT32 EnterInternalOffset;
786 if (EnterImage->Height > BoxImage->Height) {
787 BoxOffset = (EnterImage->Height - BoxImage->Height) / 2;
791 EnterOffset = (BoxImage->Height - EnterImage->Height) / 2;
799 ImageMidOffset = (EnterImage->Height / 2) * EnterImage->Width;
801 FirstOffset = ImageMidOffset;
802 FirstOffset < ImageMidOffset + EnterImage->Width;
806 if (EnterImage->Buffer[FirstOffset].Reserved > 0) {
814 EnterInternalOffset = 0;
837 if (GuiContext->UsePasswordEaseIn) {
841 DrawContext->Screen.Opacity = 0;
851 if (GuiContext->PickerContext->PickerAudioAssist) {
852 GuiContext->PickerContext->PlayAudioFile (
853 GuiContext->PickerContext,
#define ARRAY_SIZE(Array)
#define APPLE_VOICE_OVER_AUDIO_FILE_BEEP
GUI_OBJ * InternalCommonViewPtrEvent(IN OUT GUI_OBJ *This, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *Context, IN INT64 BaseX, IN INT64 BaseY, IN CONST GUI_PTR_EVENT *Event)
GLOBAL_REMOVE_IF_UNREFERENCED GUI_OBJ_CLICKABLE mCommonShutDown
VOID CommonViewInitialize(IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *GuiContext, IN CONST GUI_VIEW_CONTEXT *ViewContext)
VOID InternalCommonViewDraw(IN OUT GUI_OBJ *This, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *Context, IN INT64 BaseX, IN INT64 BaseY, IN UINT32 OffsetX, IN UINT32 OffsetY, IN UINT32 Width, IN UINT32 Height, IN UINT8 Opacity)
VOID InternalCommonSimpleButtonDraw(IN OUT GUI_OBJ *This, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *Context, IN INT64 BaseX, IN INT64 BaseY, IN UINT32 OffsetX, IN UINT32 OffsetY, IN UINT32 Width, IN UINT32 Height, IN UINT8 Opacity)
GLOBAL_REMOVE_IF_UNREFERENCED GUI_OBJ_CLICKABLE mCommonRestart
GLOBAL_REMOVE_IF_UNREFERENCED GUI_INTERPOLATION mCommonIntroOpacityInterpol
VOID GuiDrawChildImage(IN CONST GUI_IMAGE *Image, IN UINT8 Opacity, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN INT64 ParentBaseX, IN INT64 ParentBaseY, IN INT64 ChildBaseX, IN INT64 ChildBaseY, IN UINT32 OffsetX, IN UINT32 OffsetY, IN UINT32 Width, IN UINT32 Height)
UINT8 InternalCommonSimpleButtonPtrEvent(IN OUT GUI_OBJ *This, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *Context, IN INT64 BaseX, IN INT64 BaseY, IN CONST GUI_PTR_EVENT *Event)
GUI_OBJ * InternalFocusKeyHandler(IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *Context, IN CONST GUI_KEY_EVENT *KeyEvent)
GLOBAL_REMOVE_IF_UNREFERENCED GUI_OBJ_CHILD mCommonActionButtonsContainer
CONST GUI_IMAGE * InternalGetCursorImage(IN BOOT_PICKER_GUI_CONTEXT *Context)
VOID GuiPointerReset(IN OUT GUI_POINTER_CONTEXT *Context)
VOID GuiPointerGetPosition(IN OUT GUI_POINTER_CONTEXT *Context, OUT GUI_PTR_POSITION *Position)
VOID GuiPointerSetPosition(IN OUT GUI_POINTER_CONTEXT *Context, IN CONST GUI_PTR_POSITION *Position)
VOID EFIAPI GuiKeyReset(IN OUT GUI_KEY_CONTEXT *Context)
#define OC_VOICE_OVER_AUDIO_FILE_PASSWORD_RETRY_LIMIT
#define OC_VOICE_OVER_AUDIO_FILE_PASSWORD_INCORRECT
#define OC_VOICE_OVER_AUDIO_FILE_ENTER_PASSWORD
#define OC_VOICE_OVER_AUDIO_FILE_PASSWORD_ACCEPTED
#define OC_VOICE_OVER_AUDIO_BASE_TYPE_APPLE
#define OC_VOICE_OVER_AUDIO_BASE_TYPE_OPEN_CORE
#define OC_PICKER_KEYS_FOR_TYPING
#define OC_ATTR_USE_REVERSED_UI
#define OC_VOICE_OVER_SILENCE_ERROR_MS
#define OC_VOICE_OVER_SIGNAL_ERROR_MS
#define OC_ATTR_USE_MINIMAL_UI
#define OC_VOICE_OVER_SIGNALS_ERROR
Password verification error or boot failure.
#define OC_INPUT_VOICE_OVER
Toggle VoiceOver (press CMD+F5)
#define OC_PASSWORD_MAX_LEN
#define OC_PASSWORD_MAX_RETRIES
VOID * SecureZeroMem(OUT VOID *Buffer, IN UINTN Length)
#define SECONDS_TO_MICROSECONDS(x)
VOID EFIAPI ResetWarm(VOID)
VOID GuiDrawToBuffer(IN CONST GUI_IMAGE *Image, IN UINT8 Opacity, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN INT64 BaseX, IN INT64 BaseY, IN UINT32 OffsetX, IN UINT32 OffsetY, IN UINT32 Width, IN UINT32 Height)
VOID GuiRequestDraw(IN UINT32 PosX, IN UINT32 PosY, IN UINT32 Width, IN UINT32 Height)
VOID GuiViewDeinitialize(IN OUT GUI_DRAWING_CONTEXT *DrawContext, OUT BOOT_PICKER_GUI_CONTEXT *GuiContext)
GUI_OBJ * GuiObjDelegatePtrEvent(IN OUT GUI_OBJ *This, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *Context, IN INT64 BaseX, IN INT64 BaseY, IN CONST GUI_PTR_EVENT *Event)
UINT32 GuiGetInterpolatedValue(IN CONST GUI_INTERPOLATION *Interpol, IN UINT64 CurrentTime)
VOID GuiObjDrawDelegate(IN OUT GUI_OBJ *This, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *Context, IN INT64 BaseX, IN INT64 BaseY, IN UINT32 OffsetX, IN UINT32 OffsetY, IN UINT32 Width, IN UINT32 Height, IN UINT8 Opacity)
BOOLEAN InternalPasswordAnimateIntro(IN BOOT_PICKER_GUI_CONTEXT *Context, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN UINT64 CurrentTime)
STATIC VOID InternalQueueIncorrectPassword(OUT GUI_DRAWING_CONTEXT *DrawContext)
GUI_POINTER_CONTEXT * mPointerContext
#define PASSWORD_ENTER_INTERNAL_OFFSET
VOID InternalPasswordBoxKeyEvent(IN OUT GUI_OBJ *This, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *Context, IN CONST GUI_KEY_EVENT *KeyEvent)
STATIC GUI_VIEW_CONTEXT mPasswordViewContext
GUI_OBJ_CLICKABLE mPasswordEnter
GUI_OBJ * InternalPasswordEnterPtrEvent(IN OUT GUI_OBJ *This, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *Context, IN INT64 BaseX, IN INT64 BaseY, IN CONST GUI_PTR_EVENT *Event)
GUI_OBJ * InternalPasswordViewPtrEvent(IN OUT GUI_OBJ *This, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *Context, IN INT64 BaseX, IN INT64 BaseY, IN CONST GUI_PTR_EVENT *Event)
VOID InternalPasswordBoxFocus(IN CONST GUI_OBJ *This, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOLEAN Focus)
GUI_OBJ_CHILD mPasswordBoxContainer
GUI_OBJ_CHILD mPasswordLock
VOID InternalPasswordLockDraw(IN OUT GUI_OBJ *This, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *Context, IN INT64 BaseX, IN INT64 BaseY, IN UINT32 OffsetX, IN UINT32 OffsetY, IN UINT32 Width, IN UINT32 Height, IN UINT8 Opacity)
STATIC GUI_INTERPOLATION mPasswordIncorrectInterpol
STATIC GUI_OBJ * mPasswordFocusListMinimal[]
#define PASSWORD_INTER_DOT_SPACE
EFI_STATUS PasswordViewInitialize(OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *GuiContext)
STATIC VOID InternalInitPasswordIncorrectInterpol(IN CONST GUI_DRAWING_CONTEXT *DrawContext, IN UINT64 StartTime)
#define PASSWORD_BOX_SPACE
GUI_PASSWORD_BOX mPasswordBox
STATIC GUI_OBJ * mPasswordFocusList[]
STATIC GUI_VIEW_CONTEXT mPasswordViewContextReversed
BOOLEAN InternalPasswordExitLoop(IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *Context)
STATIC GUI_OBJ_CHILD * mPasswordBoxContainerChildren[]
VOID InternalPasswordViewKeyEvent(IN OUT GUI_OBJ *This, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *Context, IN CONST GUI_KEY_EVENT *KeyEvent)
VOID InternalPasswordBoxDraw(IN OUT GUI_OBJ *This, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *Context, IN INT64 BaseX, IN INT64 BaseY, IN UINT32 OffsetX, IN UINT32 OffsetY, IN UINT32 Width, IN UINT32 Height, IN UINT8 Opacity)
STATIC GUI_VIEW_CONTEXT mPasswordViewContextMinimal
#define PASSWORD_FIRST_DOT_SPACE
STATIC VOID InternalRequestPasswordConfirmation(IN OUT GUI_DRAWING_CONTEXT *DrawContext)
GUI_KEY_CONTEXT * mKeyContext
STATIC GUI_OBJ_CHILD * mPasswordViewChildren[]
STATIC GUI_OBJ_CHILD * mPasswordViewChildrenMinimal[]
VOID PasswordViewDeinitialize(IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN OUT BOOT_PICKER_GUI_CONTEXT *GuiContext)
BOOLEAN InternalPasswordAnimateIncorrect(IN BOOT_PICKER_GUI_CONTEXT *Context, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN UINT64 CurrentTime)
#define PASSWORD_LAST_DOT_SPACE
STATIC GUI_OBJ * mPasswordFocusListReversed[]
BOOLEAN InternalConfirmPassword(IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN CONST BOOT_PICKER_GUI_CONTEXT *Context)
STATIC VOID InternalRedrawPaswordBox(VOID)
STATIC GUI_ANIMATION mPasswordIntroAnimation
STATIC UINT8 mPasswordNumTries
OC_PICKER_KEY_MAP KeyFilter
GUI_PASSWORD_INFO PasswordInfo
CHAR8 Password[OC_PASSWORD_MAX_LEN]