From 549a4f3c2f937dde900672ebff6ed605f8c9043d Mon Sep 17 00:00:00 2001 From: Mounir IDRASSI Date: Thu, 23 Jul 2020 21:06:59 +0200 Subject: Add option "KeyboardInputDelay" in DcsProp to control the minimum delay supported between two key strokes (default is 100 ms) --- Include/Library/PasswordLib.h | 1 + Library/PasswordLib/ConsolePassword.c | 5 +++-- Library/PasswordLib/PicturePassword.c | 1 + Library/VeraCryptLib/DcsVeraCrypt.c | 1 + 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Include/Library/PasswordLib.h b/Include/Library/PasswordLib.h index cc77957..6289763 100644 --- a/Include/Library/PasswordLib.h +++ b/Include/Library/PasswordLib.h @@ -25,6 +25,7 @@ extern UINTN gPasswordPictureCharsLen; extern UINT8 gPasswordVisible; extern UINT8 gPasswordProgress; extern int gPasswordTimeout; +extern UINTN gKeyboardInputDelay; extern int gPasswordShowMark; extern VOID* gPictPwdBmp; diff --git a/Library/PasswordLib/ConsolePassword.c b/Library/PasswordLib/ConsolePassword.c index 8588a19..8270290 100644 --- a/Library/PasswordLib/ConsolePassword.c +++ b/Library/PasswordLib/ConsolePassword.c @@ -50,8 +50,9 @@ AskConsolePwdInt( do { key = GetKey(); - // Remove dirty chars 0.1s - FlushInputDelay(100000); + // Remove dirty chars + if (gKeyboardInputDelay) + FlushInputDelay(gKeyboardInputDelay * 1000); if (key.ScanCode == SCAN_ESC) { *retCode = AskPwdRetCancel; diff --git a/Library/PasswordLib/PicturePassword.c b/Library/PasswordLib/PicturePassword.c index aef71ab..7ce4014 100644 --- a/Library/PasswordLib/PicturePassword.c +++ b/Library/PasswordLib/PicturePassword.c @@ -32,6 +32,7 @@ UINT8 gPasswordVisible = 0; int gPasswordShowMark = 1; UINT8 gPasswordProgress = 1; int gPasswordTimeout = 0; +UINTN gKeyboardInputDelay = 100; int gPlatformLocked = 0; int gTPMLocked = 0; diff --git a/Library/VeraCryptLib/DcsVeraCrypt.c b/Library/VeraCryptLib/DcsVeraCrypt.c index d3eecef..e51c560 100644 --- a/Library/VeraCryptLib/DcsVeraCrypt.c +++ b/Library/VeraCryptLib/DcsVeraCrypt.c @@ -150,6 +150,7 @@ VCAuthLoadConfig() gPasswordVisible = (UINT8)ConfigReadInt("AuthorizeVisible", 0); // show chars gPasswordShowMark = ConfigReadInt("AuthorizeMarkTouch", 1); // show touch points gPasswordTimeout = (UINT8)ConfigReadInt("PasswordTimeout", 180); // If no password for => + gKeyboardInputDelay = (UINTN)ConfigReadInt("KeyboardInputDelay", 100); // minimum number of ms between two valid key strokes, anything between is discarded gDcsBootForce = ConfigReadInt("DcsBootForce", 1); // Ask password even if no USB marked found. -- cgit v1.2.3