OpenCore  1.0.4
OpenCore Bootloader
Loading...
Searching...
No Matches
Password.c
Go to the documentation of this file.
1#include <Uefi.h>
2
3#include <Library/BaseLib.h>
4#include <Library/DebugLib.h>
6#include <Library/OcMiscLib.h>
7#include <Library/ResetSystemLib.h>
8#include <Library/UefiBootServicesTableLib.h>
9
10#include "../OpenCanopy.h"
11#include "../GuiApp.h"
12#include "../GuiIo.h"
13#include "BootPicker.h"
14
15#include "Common.h"
16
17#define PASSWORD_FIRST_DOT_SPACE 11U
18//
19// Due to the embedded ENTER button of the 'Modern' theme, the last dot needs
20// less padding.
21//
22#define PASSWORD_LAST_DOT_SPACE 9U
23#define PASSWORD_INTER_DOT_SPACE 5U
24//
25// Offset the ENTER button is offset into the right end of the password prompt.
26//
27#define PASSWORD_ENTER_INTERNAL_OFFSET 25U
28//
29// Space between the password lock and the password box.
30//
31#define PASSWORD_BOX_SPACE 30U
32
33typedef struct {
34 CHAR8 Password[OC_PASSWORD_MAX_LEN];
37
44
46
51
52// FIXME: Create one context for drawing, pointers, and keys.
54
57 0,
58 3,
59 0,
60 0,
61 0
62};
63
69
75
79
80STATIC UINT8 mPasswordNumTries = 0;
81
82STATIC
83VOID
85 IN CONST GUI_DRAWING_CONTEXT *DrawContext,
86 IN UINT64 StartTime
87 )
88{
90 mPasswordIncorrectInterpol.EndValue = 20 * DrawContext->Scale;
91}
92
93BOOLEAN
95 IN BOOT_PICKER_GUI_CONTEXT *Context,
96 IN OUT GUI_DRAWING_CONTEXT *DrawContext,
97 IN UINT64 CurrentTime
98 )
99{
100 STATIC UINT32 LastOff = 0;
101 STATIC BOOLEAN Left = FALSE;
102 STATIC UINT8 Iteration = 0;
103
104 UINT32 DeltaOrig;
105 UINT32 DeltaAdd;
106
107 DeltaOrig = GuiGetInterpolatedValue (
109 CurrentTime
110 );
111 DeltaAdd = DeltaOrig - LastOff;
112 LastOff = DeltaOrig;
113
114 if (Left) {
121 );
122 } else {
128 );
130 }
131
133 LastOff = 0;
134
135 if (Iteration == 5) {
136 Iteration = 0;
138 return TRUE;
139 }
140
141 mPasswordIncorrectInterpol.StartTime = CurrentTime + 1;
142 ++Iteration;
143 //
144 // Left/Right start toggles between tries.
145 //
146 Left = !Left;
147 }
148
149 return FALSE;
150}
151
152STATIC
153VOID
155 OUT GUI_DRAWING_CONTEXT *DrawContext
156 )
157{
158 STATIC GUI_ANIMATION PwAnim = {
159 INITIALIZE_LIST_HEAD_VARIABLE (PwAnim.Link),
160 NULL,
162 };
163
164 if (!IsNodeInList (&PwAnim.Link, &DrawContext->Animations)) {
165 InternalInitPasswordIncorrectInterpol (DrawContext, DrawContext->FrameTime);
166 InsertHeadList (&DrawContext->Animations, &PwAnim.Link);
167 }
168}
169
170STATIC
171VOID
183
184BOOLEAN
186 IN OUT GUI_DRAWING_CONTEXT *DrawContext,
187 IN CONST BOOT_PICKER_GUI_CONTEXT *Context
188 )
189{
190 BOOLEAN Result;
191 CONST OC_PRIVILEGE_CONTEXT *Privilege;
192 GUI_PTR_POSITION PtrPosition;
193
194 if (mPointerContext != NULL) {
196 }
197
198 Privilege = Context->PickerContext->PrivilegeContext;
199
200 Result = Context->PickerContext->VerifyPassword (
201 (CONST UINT8 *)mPasswordBox.PasswordInfo.Password,
203 Privilege
204 );
205
207 if (mPointerContext != NULL) {
210 }
211
212 DrawContext->CursorOpacity = 0xFF;
213
215
216 if (Result) {
217 if (Context->PickerContext->PickerAudioAssist) {
218 Context->PickerContext->PlayAudioFile (
219 Context->PickerContext,
222 TRUE
223 );
224 }
225
227 return TRUE;
228 }
229
230 if (Context->PickerContext->PickerAudioAssist) {
231 Context->PickerContext->PlayAudioFile (
232 Context->PickerContext,
235 TRUE
236 );
237 }
238
241 if (Context->PickerContext->PickerAudioAssist) {
242 Context->PickerContext->PlayAudioFile (
243 Context->PickerContext,
246 TRUE
247 );
248 DEBUG ((DEBUG_WARN, "OCB: User failed to verify password %d times running\n", OC_PASSWORD_MAX_RETRIES));
249 }
250
251 //
252 // Hide all UI except the password lock when retries have been exceeded.
253 //
256
263 );
264
265 DrawContext->CursorOpacity = 0;
266 }
267
268 return FALSE;
269}
270
271STATIC
272VOID
288
289VOID
291 IN OUT GUI_OBJ *This,
292 IN OUT GUI_DRAWING_CONTEXT *DrawContext,
293 IN BOOT_PICKER_GUI_CONTEXT *Context,
294 IN CONST GUI_KEY_EVENT *KeyEvent
295 )
296{
297 if (KeyEvent->UnicodeChar == CHAR_CARRIAGE_RETURN) {
298 //
299 // RETURN finalizes the input.
300 //
302 return;
303 }
304
305 if (KeyEvent->UnicodeChar == CHAR_BACKSPACE) {
306 //
307 // Delete the last entered character, if such exists.
308 //
312 }
313
314 if (Context->PickerContext->PickerAudioAssist) {
315 Context->PickerContext->PlayAudioFile (
316 Context->PickerContext,
319 TRUE
320 );
321 }
322 } else if ( (KeyEvent->UnicodeChar != CHAR_NULL)
323 && (KeyEvent->UnicodeChar == (CHAR8)KeyEvent->UnicodeChar)
325 {
328 } else {
329 //
330 // Only ASCII characters are supported.
331 //
332 if (Context->PickerContext->PickerAudioAssist) {
333 Context->PickerContext->PlayAudioBeep (
334 Context->PickerContext,
338 );
339 }
340
341 return;
342 }
343
347 ASSERT (mPasswordBoxContainer.Obj.OffsetX + mPasswordBoxContainer.Obj.Width <= DrawContext->Screen.Width);
348 ASSERT (mPasswordBoxContainer.Obj.OffsetX + mPasswordBoxContainer.Obj.Height <= DrawContext->Screen.Height);
354 );
355}
356
357VOID
359 IN CONST GUI_OBJ *This,
360 IN OUT GUI_DRAWING_CONTEXT *DrawContext,
361 IN BOOLEAN Focus
362 )
363{
364 if (Focus) {
366
367 DrawContext->GuiContext->AudioPlaybackTimeout = 0;
368 DrawContext->GuiContext->VoAction = CanopyVoFocusPassword;
369 } else {
371 }
372
374}
375
376VOID
378 IN OUT GUI_OBJ *This,
379 IN OUT GUI_DRAWING_CONTEXT *DrawContext,
380 IN BOOT_PICKER_GUI_CONTEXT *Context,
381 IN CONST GUI_KEY_EVENT *KeyEvent
382 )
383{
384 //
385 // Disable input when maximum password retries have been reached.
386 //
388 return;
389 }
390
391 if (KeyEvent->OcKeyCode == OC_INPUT_VOICE_OVER) {
392 DrawContext->GuiContext->PickerContext->ToggleVoiceOver (
393 DrawContext->GuiContext->PickerContext,
396 );
397 return;
398 }
399
401 DrawContext,
402 Context,
403 KeyEvent
404 );
405}
406
407GUI_OBJ *
409 IN OUT GUI_OBJ *This,
410 IN OUT GUI_DRAWING_CONTEXT *DrawContext,
411 IN BOOT_PICKER_GUI_CONTEXT *Context,
412 IN INT64 BaseX,
413 IN INT64 BaseY,
414 IN CONST GUI_PTR_EVENT *Event
415 )
416{
417 //
418 // Disable input when maximum password retries have been reached.
419 //
421 return NULL;
422 }
423
425 This,
426 DrawContext,
427 Context,
428 BaseX,
429 BaseY,
430 Event
431 );
432}
433
434VOID
436 IN OUT GUI_OBJ *This,
437 IN OUT GUI_DRAWING_CONTEXT *DrawContext,
438 IN BOOT_PICKER_GUI_CONTEXT *Context,
439 IN INT64 BaseX,
440 IN INT64 BaseY,
441 IN UINT32 OffsetX,
442 IN UINT32 OffsetY,
443 IN UINT32 Width,
444 IN UINT32 Height,
445 IN UINT8 Opacity
446 )
447{
449 &Context->Icons[ICON_LOCK][ICON_TYPE_BASE],
450 Opacity,
451 DrawContext,
452 BaseX,
453 BaseY,
454 OffsetX,
455 OffsetY,
456 Width,
457 Height
458 );
459}
460
461VOID
463 IN OUT GUI_OBJ *This,
464 IN OUT GUI_DRAWING_CONTEXT *DrawContext,
465 IN BOOT_PICKER_GUI_CONTEXT *Context,
466 IN INT64 BaseX,
467 IN INT64 BaseY,
468 IN UINT32 OffsetX,
469 IN UINT32 OffsetY,
470 IN UINT32 Width,
471 IN UINT32 Height,
472 IN UINT8 Opacity
473 )
474{
475 CONST GUI_IMAGE *BoxImage;
476 CONST GUI_IMAGE *DotImage;
477 UINT8 DotIndex;
478
479 BoxImage = &Context->Icons[ICON_PASSWORD][ICON_TYPE_BASE];
480 DotImage = &Context->Icons[ICON_DOT][ICON_TYPE_BASE];
481
483 BoxImage,
484 Opacity,
485 DrawContext,
486 BaseX,
487 BaseY,
488 OffsetX,
489 OffsetY,
490 Width,
491 Height
492 );
493 //
494 // Selective drawing is unlikely worth it.
495 //
496 for (
497 DotIndex = 0;
499 ++DotIndex
500 )
501 {
503 DotImage,
504 Opacity,
505 DrawContext,
506 BaseX,
507 BaseY,
508 DotIndex * (DotImage->Width + PASSWORD_INTER_DOT_SPACE * DrawContext->Scale) + PASSWORD_FIRST_DOT_SPACE * DrawContext->Scale,
509 (BoxImage->Height - DotImage->Height) / 2,
510 OffsetX,
511 OffsetY,
512 Width,
513 Height
514 );
515 }
516}
517
518GUI_OBJ *
520 IN OUT GUI_OBJ *This,
521 IN OUT GUI_DRAWING_CONTEXT *DrawContext,
522 IN BOOT_PICKER_GUI_CONTEXT *Context,
523 IN INT64 BaseX,
524 IN INT64 BaseY,
525 IN CONST GUI_PTR_EVENT *Event
526 )
527{
528 UINT8 Result;
529
531 This,
532 DrawContext,
533 Context,
534 BaseX,
535 BaseY,
536 Event
537 );
538 switch (Result) {
539 case CommonPtrNotHit:
540 {
541 return NULL;
542 }
543
544 case CommonPtrAction:
545 {
547 //
548 // Falthrough to 'hit' case.
549 //
550 }
551
552 case CommonPtrHit:
553 {
554 break;
555 }
556 }
557
558 return This;
559}
560
561BOOLEAN
563 IN OUT GUI_DRAWING_CONTEXT *DrawContext,
564 IN BOOT_PICKER_GUI_CONTEXT *Context
565 )
566{
567 BOOLEAN Confirmed;
568
569 ASSERT (Context != NULL);
570 //
571 // This is done here to have one more draw loop iteration to flush hiding
572 // the UI elements.
573 //
575 gBS->Stall (SECONDS_TO_MICROSECONDS (5));
576 ResetWarm ();
577 }
578
581
582 if (!Context->PickerContext->PickerAudioAssist) {
583 InternalQueueIncorrectPassword (DrawContext);
584 }
585
586 Confirmed = InternalConfirmPassword (DrawContext, Context);
588 return Confirmed;
589 }
590
591 return FALSE;
592}
593
599
604
616
628
640
641GLOBAL_REMOVE_IF_UNREFERENCED GUI_OBJ_CHILD mPasswordLock = {
642 {
643 0, 0, 0, 0, 0xFF,
645 NULL,
647 NULL,
648 0,
649 NULL
650 },
651 NULL
652};
653
654GLOBAL_REMOVE_IF_UNREFERENCED GUI_PASSWORD_BOX mPasswordBox = {
655 {
656 {
657 0, 0, 0, 0, 0xFF,
659 NULL,
661 NULL,
662 0,
663 NULL
664 },
666 },
667 {
668 { '\0' }, 0
669 },
670 FALSE,
671 0
672};
673
674GLOBAL_REMOVE_IF_UNREFERENCED GUI_OBJ_CLICKABLE mPasswordEnter = {
675 {
676 {
677 0, 0, 0, 0, 0xFF,
679 NULL,
681 NULL,
682 0,
683 NULL
684 },
686 },
687 0,
688 0
689};
690
695
708
709BOOLEAN
711 IN BOOT_PICKER_GUI_CONTEXT *Context,
712 IN OUT GUI_DRAWING_CONTEXT *DrawContext,
713 IN UINT64 CurrentTime
714 )
715{
716 UINT8 Opacity;
717
718 Opacity = (UINT8)GuiGetInterpolatedValue (
720 CurrentTime
721 );
722 DrawContext->Screen.Opacity = Opacity;
723
725 (UINT32)mPasswordLock.Obj.OffsetX,
726 (UINT32)mPasswordLock.Obj.OffsetY,
729 );
735 );
741 );
742
744}
745
747 INITIALIZE_LIST_HEAD_VARIABLE (mPasswordIntroAnimation.Link),
748 NULL,
750};
751
752EFI_STATUS
754 OUT GUI_DRAWING_CONTEXT *DrawContext,
755 IN BOOT_PICKER_GUI_CONTEXT *GuiContext
756 )
757{
758 CONST GUI_IMAGE *LockImage;
759 CONST GUI_IMAGE *BoxImage;
760 CONST GUI_IMAGE *DotImage;
761 CONST GUI_IMAGE *EnterImage;
762 UINT32 EnterOffset;
763 UINT32 BoxOffset;
764 UINT32 ImageMidOffset;
765 UINT32 FirstOffset;
766 UINT32 EnterInternalOffset;
767
769
771 DrawContext,
772 GuiContext,
773 (GuiContext->PickerContext->PickerAttributes & OC_ATTR_USE_MINIMAL_UI) == 0
774 ? ((GuiContext->PickerContext->PickerAttributes & OC_ATTR_USE_REVERSED_UI) == 0
777 )
779 );
780
781 LockImage = &GuiContext->Icons[ICON_LOCK][ICON_TYPE_BASE];
782 BoxImage = &GuiContext->Icons[ICON_PASSWORD][ICON_TYPE_BASE];
783 DotImage = &GuiContext->Icons[ICON_DOT][ICON_TYPE_BASE];
784 EnterImage = &GuiContext->Icons[ICON_ENTER][ICON_TYPE_BASE];
785
786 if (EnterImage->Height > BoxImage->Height) {
787 BoxOffset = (EnterImage->Height - BoxImage->Height) / 2;
788 EnterOffset = 0;
789 } else {
790 BoxOffset = 0;
791 EnterOffset = (BoxImage->Height - EnterImage->Height) / 2;
792 }
793
794 mPasswordLock.Obj.Width = LockImage->Width;
795 mPasswordLock.Obj.Height = LockImage->Height;
796 mPasswordLock.Obj.OffsetX = (DrawContext->Screen.Width - mPasswordLock.Obj.Width) / 2;
797 mPasswordLock.Obj.OffsetY = (DrawContext->Screen.Height - mPasswordLock.Obj.Height) / 2;
798
799 ImageMidOffset = (EnterImage->Height / 2) * EnterImage->Width;
800 for (
801 FirstOffset = ImageMidOffset;
802 FirstOffset < ImageMidOffset + EnterImage->Width;
803 ++FirstOffset
804 )
805 {
806 if (EnterImage->Buffer[FirstOffset].Reserved > 0) {
807 break;
808 }
809 }
810
811 if (PASSWORD_ENTER_INTERNAL_OFFSET * DrawContext->Scale > FirstOffset - ImageMidOffset) {
812 EnterInternalOffset = PASSWORD_ENTER_INTERNAL_OFFSET * DrawContext->Scale - (FirstOffset - ImageMidOffset);
813 } else {
814 EnterInternalOffset = 0;
815 }
816
817 mPasswordBox.Hdr.Obj.Width = BoxImage->Width;
818 mPasswordBox.Hdr.Obj.Height = BoxImage->Height;
820 mPasswordBox.Hdr.Obj.OffsetY = BoxOffset;
822 (mPasswordBox.Hdr.Obj.Width - EnterInternalOffset - (PASSWORD_FIRST_DOT_SPACE + PASSWORD_LAST_DOT_SPACE - PASSWORD_INTER_DOT_SPACE) * DrawContext->Scale) / (DotImage->Width + PASSWORD_INTER_DOT_SPACE * DrawContext->Scale)
823 );
824
825 mPasswordEnter.Hdr.Obj.Width = EnterImage->Width;
826 mPasswordEnter.Hdr.Obj.Height = EnterImage->Height;
828 mPasswordEnter.Hdr.Obj.OffsetY = EnterOffset;
831
832 mPasswordBoxContainer.Obj.Width = BoxImage->Width + EnterImage->Width - PASSWORD_ENTER_INTERNAL_OFFSET * DrawContext->Scale;
833 mPasswordBoxContainer.Obj.Height = MAX (BoxImage->Height, EnterImage->Height);
834 mPasswordBoxContainer.Obj.OffsetX = (DrawContext->Screen.Width - mPasswordBox.Hdr.Obj.Width) / 2;
836
837 if (GuiContext->UsePasswordEaseIn) {
838 //
839 // Fade-in the entire screen.
840 //
841 DrawContext->Screen.Opacity = 0;
842
843 InsertHeadList (&DrawContext->Animations, &mPasswordIntroAnimation.Link);
844 }
845
846 //
847 // Action Buttons fade-in is handled by screen opacity.
848 //
850
851 if (GuiContext->PickerContext->PickerAudioAssist) {
852 GuiContext->PickerContext->PlayAudioFile (
853 GuiContext->PickerContext,
856 TRUE
857 );
858 }
859
860 return EFI_SUCCESS;
861}
862
863VOID
865 IN OUT GUI_DRAWING_CONTEXT *DrawContext,
866 IN OUT BOOT_PICKER_GUI_CONTEXT *GuiContext
867 )
868{
869 GuiViewDeinitialize (DrawContext, GuiContext);
870}
#define ARRAY_SIZE(Array)
Definition AppleMacEfi.h:34
#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)
Definition Common.c:249
GLOBAL_REMOVE_IF_UNREFERENCED GUI_OBJ_CLICKABLE mCommonShutDown
Definition Common.c:626
VOID CommonViewInitialize(IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *GuiContext, IN CONST GUI_VIEW_CONTEXT *ViewContext)
Definition Common.c:657
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)
Definition Common.c:189
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)
Definition Common.c:263
GLOBAL_REMOVE_IF_UNREFERENCED GUI_OBJ_CLICKABLE mCommonRestart
Definition Common.c:609
GLOBAL_REMOVE_IF_UNREFERENCED GUI_INTERPOLATION mCommonIntroOpacityInterpol
Definition Common.c:22
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)
Definition Common.c:37
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)
Definition Common.c:309
GUI_OBJ * InternalFocusKeyHandler(IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *Context, IN CONST GUI_KEY_EVENT *KeyEvent)
Definition Common.c:109
GLOBAL_REMOVE_IF_UNREFERENCED GUI_OBJ_CHILD mCommonActionButtonsContainer
Definition Common.c:643
@ CommonPtrHit
Definition Common.h:89
@ CommonPtrAction
Definition Common.h:88
@ CommonPtrNotHit
Definition Common.h:87
CONST GUI_IMAGE * InternalGetCursorImage(IN BOOT_PICKER_GUI_CONTEXT *Context)
Definition GuiApp.c:663
@ ICON_TYPE_BASE
Definition GuiApp.h:103
@ CanopyVoFocusPassword
Definition GuiApp.h:111
@ ICON_ENTER
Definition GuiApp.h:86
@ ICON_LOCK
Definition GuiApp.h:87
@ ICON_DOT
Definition GuiApp.h:85
@ ICON_PASSWORD
Definition GuiApp.h:84
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
Definition OcAudio.h:63
#define OC_VOICE_OVER_AUDIO_FILE_PASSWORD_INCORRECT
Definition OcAudio.h:62
#define OC_VOICE_OVER_AUDIO_FILE_ENTER_PASSWORD
Definition OcAudio.h:47
#define OC_VOICE_OVER_AUDIO_FILE_PASSWORD_ACCEPTED
Definition OcAudio.h:61
#define OC_VOICE_OVER_AUDIO_BASE_TYPE_APPLE
Definition OcAudio.h:37
#define OC_VOICE_OVER_AUDIO_BASE_TYPE_OPEN_CORE
Definition OcAudio.h:38
#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)
EFI_BOOT_SERVICES * gBS
#define OC_PASSWORD_MAX_LEN
Definition OcCryptoLib.h:89
#define OC_PASSWORD_MAX_RETRIES
Definition OcCryptoLib.h:94
VOID * SecureZeroMem(OUT VOID *Buffer, IN UINTN Length)
Definition SecureMem.c:73
#define SECONDS_TO_MICROSECONDS(x)
Definition OcMiscLib.h:30
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)
Definition OpenCanopy.c:354
VOID GuiRequestDraw(IN UINT32 PosX, IN UINT32 PosY, IN UINT32 Width, IN UINT32 Height)
Definition OpenCanopy.c:475
VOID GuiViewDeinitialize(IN OUT GUI_DRAWING_CONTEXT *DrawContext, OUT BOOT_PICKER_GUI_CONTEXT *GuiContext)
Definition OpenCanopy.c:977
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)
Definition OpenCanopy.c:226
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)
Definition OpenCanopy.c:137
@ GuiInterpolTypeLinear
Definition OpenCanopy.h:348
BOOLEAN InternalPasswordAnimateIntro(IN BOOT_PICKER_GUI_CONTEXT *Context, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN UINT64 CurrentTime)
Definition Password.c:710
STATIC VOID InternalQueueIncorrectPassword(OUT GUI_DRAWING_CONTEXT *DrawContext)
Definition Password.c:154
GUI_POINTER_CONTEXT * mPointerContext
Definition OpenCanopy.c:44
#define PASSWORD_ENTER_INTERNAL_OFFSET
Definition Password.c:27
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)
Definition Password.c:290
STATIC GUI_VIEW_CONTEXT mPasswordViewContext
Definition Password.c:605
GUI_OBJ_CLICKABLE mPasswordEnter
Definition Password.c:674
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)
Definition Password.c:519
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)
Definition Password.c:408
VOID InternalPasswordBoxFocus(IN CONST GUI_OBJ *This, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOLEAN Focus)
Definition Password.c:358
GUI_OBJ_CHILD mPasswordBoxContainer
Definition Password.c:696
GUI_OBJ_CHILD mPasswordLock
Definition Password.c:641
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)
Definition Password.c:435
STATIC GUI_INTERPOLATION mPasswordIncorrectInterpol
Definition Password.c:55
STATIC GUI_OBJ * mPasswordFocusListMinimal[]
Definition Password.c:76
#define PASSWORD_INTER_DOT_SPACE
Definition Password.c:23
EFI_STATUS PasswordViewInitialize(OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *GuiContext)
Definition Password.c:753
STATIC VOID InternalInitPasswordIncorrectInterpol(IN CONST GUI_DRAWING_CONTEXT *DrawContext, IN UINT64 StartTime)
Definition Password.c:84
#define PASSWORD_BOX_SPACE
Definition Password.c:31
GUI_PASSWORD_BOX mPasswordBox
Definition Password.c:654
STATIC GUI_OBJ * mPasswordFocusList[]
Definition Password.c:64
STATIC GUI_VIEW_CONTEXT mPasswordViewContextReversed
Definition Password.c:617
BOOLEAN InternalPasswordExitLoop(IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *Context)
Definition Password.c:562
STATIC GUI_OBJ_CHILD * mPasswordBoxContainerChildren[]
Definition Password.c:691
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)
Definition Password.c:377
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)
Definition Password.c:462
STATIC GUI_VIEW_CONTEXT mPasswordViewContextMinimal
Definition Password.c:629
#define PASSWORD_FIRST_DOT_SPACE
Definition Password.c:17
STATIC VOID InternalRequestPasswordConfirmation(IN OUT GUI_DRAWING_CONTEXT *DrawContext)
Definition Password.c:273
GUI_KEY_CONTEXT * mKeyContext
Definition OpenCanopy.c:45
STATIC GUI_OBJ_CHILD * mPasswordViewChildren[]
Definition Password.c:594
STATIC GUI_OBJ_CHILD * mPasswordViewChildrenMinimal[]
Definition Password.c:600
VOID PasswordViewDeinitialize(IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN OUT BOOT_PICKER_GUI_CONTEXT *GuiContext)
Definition Password.c:864
BOOLEAN InternalPasswordAnimateIncorrect(IN BOOT_PICKER_GUI_CONTEXT *Context, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN UINT64 CurrentTime)
Definition Password.c:94
#define PASSWORD_LAST_DOT_SPACE
Definition Password.c:22
STATIC GUI_OBJ * mPasswordFocusListReversed[]
Definition Password.c:70
BOOLEAN InternalConfirmPassword(IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN CONST BOOT_PICKER_GUI_CONTEXT *Context)
Definition Password.c:185
STATIC VOID InternalRedrawPaswordBox(VOID)
Definition Password.c:172
STATIC GUI_ANIMATION mPasswordIntroAnimation
Definition Password.c:746
STATIC UINT8 mPasswordNumTries
Definition Password.c:80
#define ASSERT(x)
Definition coder.h:55
#define MAX(a, b)
Definition coder.h:59
#define MIN(a, b)
Definition deflate.c:1673
LIST_ENTRY Link
Definition OpenCanopy.h:100
OC_PICKER_KEY_MAP KeyFilter
Definition OpenCanopy.h:44
GUI_OBJ * Parent
Definition OpenCanopy.h:123
UINT8 ImageState
Definition Common.h:9
GUI_OBJ_CHILD Hdr
Definition Common.h:7
UINT8 ImageId
Definition Common.h:8
INT64 OffsetX
Definition OpenCanopy.h:108
UINT32 Height
Definition OpenCanopy.h:111
UINT8 Opacity
Definition OpenCanopy.h:112
INT64 OffsetY
Definition OpenCanopy.h:109
UINT32 Width
Definition OpenCanopy.h:110
GUI_PASSWORD_INFO PasswordInfo
Definition Password.c:40
UINT8 MaxPasswordDots
Definition Password.c:42
GUI_OBJ_CHILD Hdr
Definition Password.c:39
BOOLEAN RequestConfirm
Definition Password.c:41
CHAR8 Password[OC_PASSWORD_MAX_LEN]
Definition Password.c:34