Explorar el Código

Disabling clear text when asking password

https://github.com/PascalCoin/PascalCoin/issues/163
PascalCoin hace 6 años
padre
commit
8d7262a4f2

+ 2 - 2
src/gui-classic/UFRMOperation.pas

@@ -183,7 +183,7 @@ implementation
 
 uses
   UECIES, UConst, UOpTransaction, UFRMNewPrivateKeyType, UAES, UFRMWalletKeys,
-  UCommon;
+  UCommon, UGUIUtils;
 
 {$IFnDEF FPC}
   {$R *.dfm}
@@ -446,7 +446,7 @@ begin
   end else begin
     s := '';
     Repeat
-      if Not InputQuery('Wallet password','Enter wallet password',s) then exit;
+      if Not InputQueryPassword('Wallet password','Enter wallet password',s) then exit;
       FWalletKeys.WalletPassword := s;
     Until FWalletKeys.IsValidPassword;
     SetWalletKeys(WalletKeys);

+ 2 - 8
src/gui-classic/UFRMPascalCoinWalletConfig.dfm

@@ -131,9 +131,8 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
     Top = 475
     Width = 75
     Height = 25
-    DoubleBuffered = True
     Kind = bkOK
-    ParentDoubleBuffered = False
+    NumGlyphs = 2
     TabOrder = 16
     OnClick = bbOkClick
   end
@@ -142,9 +141,8 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
     Top = 475
     Width = 75
     Height = 25
-    DoubleBuffered = True
     Kind = bkCancel
-    ParentDoubleBuffered = False
+    NumGlyphs = 2
     TabOrder = 17
   end
   object udInternetServerPort: TUpDown
@@ -174,7 +172,6 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
     Width = 336
     Height = 38
     Caption = 'Wallet Password'
-    DoubleBuffered = True
     Font.Charset = DEFAULT_CHARSET
     Font.Color = clWindowText
     Font.Height = -13
@@ -233,7 +230,6 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
       9191EFF6E1C9C8CDD9CC91919191919191919191919191919191C9EDF9F3F3EB
       DC91919191919191919191919191919191919191CBE0E1CF9191919191919191
       9191919191919191919191919191919191919191919191919191}
-    ParentDoubleBuffered = False
     ParentFont = False
     TabOrder = 0
     OnClick = bbUpdatePasswordClick
@@ -329,7 +325,6 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
     Width = 120
     Height = 25
     Caption = 'Open Data folder'
-    DoubleBuffered = True
     Glyph.Data = {
       36030000424D3603000000000000360000002800000010000000100000000100
       18000000000000030000120B0000120B00000000000000000000FF00FF078DBE
@@ -357,7 +352,6 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
       FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
       FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
       00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
-    ParentDoubleBuffered = False
     TabOrder = 15
     OnClick = bbOpenDataFolderClick
   end

+ 4 - 4
src/gui-classic/UFRMPascalCoinWalletConfig.pas

@@ -91,7 +91,7 @@ type
 
 implementation
 
-uses UConst, UAccounts, ULog, UCrypto, UFolderHelper, USettings;
+uses UConst, UAccounts, ULog, UCrypto, UFolderHelper, USettings, UGUIUtils;
 
 {$IFnDEF FPC}
   {$R *.dfm}
@@ -153,16 +153,16 @@ begin
   if Not FWalletKeys.IsValidPassword then begin
     s := '';
     Repeat
-      if Not InputQuery('Wallet Password','Insert Wallet Password',s) then exit;
+      if Not InputQueryPassword('Wallet Password','Insert Wallet Password',s) then exit;
       FWalletKeys.WalletPassword := s;
       if Not FWalletKeys.IsValidPassword then Application.MessageBox(PChar('Invalid password'),PChar(Application.Title),MB_ICONERROR+MB_OK);
     Until FWalletKeys.IsValidPassword;
   end;
   if FWalletKeys.IsValidPassword then begin
     s := ''; s2 := '';
-    if Not InputQuery('Change password','Type new password',s) then exit;
+    if Not InputQueryPassword('Change password','Type new password',s) then exit;
     if trim(s)<>s then raise Exception.Create('Password cannot start or end with a space character');
-    if Not InputQuery('Change password','Type new password again',s2) then exit;
+    if Not InputQueryPassword('Change password','Type new password again',s2) then exit;
     if s<>s2 then raise Exception.Create('Two passwords are different!');
 
     FWalletKeys.WalletPassword := s;

+ 0 - 22
src/gui-classic/UFRMWalletKeys.dfm

@@ -83,7 +83,6 @@ object FRMWalletKeys: TFRMWalletKeys
     Width = 159
     Height = 36
     Caption = 'Export Private key'
-    DoubleBuffered = True
     Glyph.Data = {
       76060000424D7606000000000000360400002800000018000000180000000100
       0800000000004002000000000000000000000001000000010000FF00FF005251
@@ -137,7 +136,6 @@ object FRMWalletKeys: TFRMWalletKeys
       8E79736F6F6F6F6D442B0D00000000000000000012279D9D908E796F6F6F6F6F
       691E0D000000000000000000001214333363615F3B3A2F2F0E0D000000000000
       0000000000000014121212121212121200000000000000000000}
-    ParentDoubleBuffered = False
     TabOrder = 4
     OnClick = bbExportPrivateKeyClick
   end
@@ -169,8 +167,6 @@ object FRMWalletKeys: TFRMWalletKeys
     Width = 81
     Height = 25
     Caption = 'Change Name'
-    DoubleBuffered = True
-    ParentDoubleBuffered = False
     TabOrder = 8
     OnClick = bbChangeNameClick
   end
@@ -180,7 +176,6 @@ object FRMWalletKeys: TFRMWalletKeys
     Width = 159
     Height = 36
     Caption = 'Import Private key'
-    DoubleBuffered = True
     Glyph.Data = {
       76060000424D7606000000000000360400002800000018000000180000000100
       0800000000004002000000000000000000000001000000010000FF00FF000571
@@ -234,7 +229,6 @@ object FRMWalletKeys: TFRMWalletKeys
       77716B6767676765563E180000000000000000001C387B7C7977716767676767
       612F18000000000000000000001C1F47475C5A58504F42421918000000000000
       000000000000001C1C1C1C1C1C1C1C1C00000000000000000000}
-    ParentDoubleBuffered = False
     TabOrder = 3
     OnClick = bbImportPrivateKeyClick
   end
@@ -244,7 +238,6 @@ object FRMWalletKeys: TFRMWalletKeys
     Width = 159
     Height = 36
     Caption = 'Export Public key'
-    DoubleBuffered = True
     Glyph.Data = {
       F6060000424DF606000000000000360000002800000018000000180000000100
       180000000000C0060000120B0000120B00000000000000000000FF00FFFF00FF
@@ -302,7 +295,6 @@ object FRMWalletKeys: TFRMWalletKeys
       FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFB889
       89B88989B88989B88989B88989B88989B88989B88989B88989FF00FFFF00FFFF
       00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
-    ParentDoubleBuffered = False
     TabOrder = 6
     OnClick = bbExportPublicKeyClick
   end
@@ -312,7 +304,6 @@ object FRMWalletKeys: TFRMWalletKeys
     Width = 159
     Height = 36
     Caption = 'Import Public key'
-    DoubleBuffered = True
     Glyph.Data = {
       F6060000424DF606000000000000360000002800000018000000180000000100
       180000000000C0060000120B0000120B00000000000000000000FF00FFFF00FF
@@ -370,7 +361,6 @@ object FRMWalletKeys: TFRMWalletKeys
       FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
       FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0C85180C85180C85180C85180C
       8518FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
-    ParentDoubleBuffered = False
     TabOrder = 5
     OnClick = bbImportPublicKeyClick
   end
@@ -380,7 +370,6 @@ object FRMWalletKeys: TFRMWalletKeys
     Width = 159
     Height = 36
     Caption = 'Generate a new Key'
-    DoubleBuffered = True
     Glyph.Data = {
       76060000424D7606000000000000360400002800000018000000180000000100
       0800000000004002000000000000000000000001000000010000FF00FF007D33
@@ -434,7 +423,6 @@ object FRMWalletKeys: TFRMWalletKeys
       595656565654422B090000000000000000000D246C6D69675F5656565656501C
       09000000000000000000000D1033334B49473C3B2F2F0A090000000000000000
       00000000000D0D0D0D0D0D0D0D0D000000000000000000000000}
-    ParentDoubleBuffered = False
     TabOrder = 2
     OnClick = bbGenerateNewKeyClick
   end
@@ -444,7 +432,6 @@ object FRMWalletKeys: TFRMWalletKeys
     Width = 159
     Height = 36
     Caption = 'Delete'
-    DoubleBuffered = True
     Glyph.Data = {
       F6060000424DF606000000000000360000002800000018000000180000000100
       180000000000C0060000120B0000120B00000000000000000000FF00FFFF00FF
@@ -502,7 +489,6 @@ object FRMWalletKeys: TFRMWalletKeys
       FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
       FFFF00FFFF00FFFF00FF00009A00009A0105A0020EB1010DB00003A000009A00
       009AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
-    ParentDoubleBuffered = False
     TabOrder = 7
     OnClick = bbDeleteClick
   end
@@ -512,7 +498,6 @@ object FRMWalletKeys: TFRMWalletKeys
     Width = 159
     Height = 38
     Caption = 'Password'
-    DoubleBuffered = True
     Font.Charset = DEFAULT_CHARSET
     Font.Color = clWindowText
     Font.Height = -13
@@ -571,7 +556,6 @@ object FRMWalletKeys: TFRMWalletKeys
       9191EFF6E1C9C8CDD9CC91919191919191919191919191919191C9EDF9F3F3EB
       DC91919191919191919191919191919191919191CBE0E1CF9191919191919191
       9191919191919191919191919191919191919191919191919191}
-    ParentDoubleBuffered = False
     ParentFont = False
     TabOrder = 1
     OnClick = bbUpdatePasswordClick
@@ -582,7 +566,6 @@ object FRMWalletKeys: TFRMWalletKeys
     Width = 201
     Height = 36
     Caption = 'Export all Wallet Keys to a file'
-    DoubleBuffered = True
     Glyph.Data = {
       F6060000424DF606000000000000360000002800000018000000180000000100
       180000000000C0060000120B0000120B00000000000000000000FF00FFFF00FF
@@ -640,7 +623,6 @@ object FRMWalletKeys: TFRMWalletKeys
       FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFB889
       89B88989B88989B88989B88989B88989B88989B88989B88989FF00FFFF00FFFF
       00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
-    ParentDoubleBuffered = False
     TabOrder = 10
     OnClick = bbExportAllWalletKeysClick
   end
@@ -650,7 +632,6 @@ object FRMWalletKeys: TFRMWalletKeys
     Width = 174
     Height = 36
     Caption = 'Import a Wallet Keys File'
-    DoubleBuffered = True
     Glyph.Data = {
       F6060000424DF606000000000000360000002800000018000000180000000100
       180000000000C0060000120B0000120B00000000000000000000FF00FFFF00FF
@@ -708,7 +689,6 @@ object FRMWalletKeys: TFRMWalletKeys
       FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
       FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0C85180C85180C85180C85180C
       8518FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
-    ParentDoubleBuffered = False
     TabOrder = 11
     OnClick = bbImportKeysFileClick
   end
@@ -718,7 +698,6 @@ object FRMWalletKeys: TFRMWalletKeys
     Width = 66
     Height = 36
     Caption = 'Lock'
-    DoubleBuffered = True
     Glyph.Data = {
       76060000424D7606000000000000360400002800000018000000180000000100
       0800000000004002000000000000000000000001000000010000000000000101
@@ -772,7 +751,6 @@ object FRMWalletKeys: TFRMWalletKeys
       8A8A8A8AFFE5E7FD8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A
       8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A
       8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A}
-    ParentDoubleBuffered = False
     TabOrder = 12
     OnClick = bbLockClick
   end

+ 8 - 8
src/gui-classic/UFRMWalletKeys.pas

@@ -95,7 +95,7 @@ uses
 {$ELSE}
   LCLIntf, LCLType,
 {$ENDIF}
-  UCrypto, UAccounts, UFRMNewPrivateKeyType, UAES, UBaseTypes, UCommon;
+  UCrypto, UAccounts, UFRMNewPrivateKeyType, UAES, UBaseTypes, UCommon, UGUIUtils;
 
 {$IFnDEF FPC}
   {$R *.dfm}
@@ -167,8 +167,8 @@ begin
   CheckIsWalletKeyValidPassword;
   if Not GetSelectedWalletKey(wk) then exit;
   if Assigned(wk.PrivateKey) then begin
-    if InputQuery('Export private key','Insert a password to export',pwd1) then begin
-      if InputQuery('Export private key','Repeat the password to export',pwd2) then begin
+    if InputQueryPassword('Export private key','Insert a password to export',pwd1) then begin
+      if InputQueryPassword('Export private key','Repeat the password to export',pwd2) then begin
         if pwd1<>pwd2 then raise Exception.Create('Passwords does not match!');
         enc := TCrypto.ToHexaString( TAESComp.EVP_Encrypt_AES256( wk.PrivateKey.ExportToRaw,pwd1) );
         Clipboard.AsText := enc;
@@ -230,7 +230,7 @@ begin
     if wki.Count<=0 then raise Exception.Create('Wallet file has no valid data');
     pwd := '';
     While (Not wki.IsValidPassword) do begin
-      if Not InputQuery('Import','Enter the wallet file password:',pwd) then exit;
+      if Not InputQueryPassword('Import','Enter the wallet file password:',pwd) then exit;
       wki.WalletPassword := pwd;
       if not wki.IsValidPassword then begin
         If Application.MessageBox(PChar('Password entered is not valid, retry?'),PChar(Application.Title),MB_ICONERROR+MB_YESNO)<>Idyes then exit;
@@ -298,7 +298,7 @@ var s : String;
       Repeat
         s := '';
         desenc := '';
-        if InputQuery('Import private key','Enter the password:',s) then begin
+        if InputQueryPassword('Import private key','Enter the password:',s) then begin
           If (TAESComp.EVP_Decrypt_AES256(enc,s,desenc)) then begin
             if (desenc<>'') then begin
               EC := TECPrivateKey.ImportFromRaw(desenc);
@@ -400,9 +400,9 @@ Var s,s2 : String;
 begin
   if FWalletKeys.IsValidPassword then begin
     s := ''; s2 := '';
-    if Not InputQuery('Change password','Enter new password',s) then exit;
+    if Not InputQueryPassword('Change password','Enter new password',s) then exit;
     if trim(s)<>s then raise Exception.Create('Password cannot start or end with a space character');
-    if Not InputQuery('Change password','Enter new password again',s2) then exit;
+    if Not InputQueryPassword('Change password','Enter new password again',s2) then exit;
     if s<>s2 then raise Exception.Create('Two passwords are different!');
 
     FWalletKeys.WalletPassword := s;
@@ -414,7 +414,7 @@ begin
   end else begin
     s := '';
     Repeat
-      if Not InputQuery('Wallet password','Enter wallet password',s) then exit;
+      if Not InputQueryPassword('Wallet password','Enter wallet password',s) then exit;
       FWalletKeys.WalletPassword := s;
       if Not FWalletKeys.IsValidPassword then Application.MessageBox(PChar('Invalid password'),PChar(Application.Title),MB_ICONERROR+MB_OK);
     Until FWalletKeys.IsValidPassword;

+ 27 - 0
src/gui-classic/UGUIUtils.pas

@@ -0,0 +1,27 @@
+unit UGUIUtils;
+
+{$IFDEF FPC}
+  {$mode delphi}
+{$ENDIF}
+
+interface
+
+uses
+  Classes, SysUtils, Dialogs;
+
+function InputQueryPassword(ACaption, APrompt : String; var defValue : String) : Boolean;
+
+
+implementation
+
+function InputQueryPassword(ACaption, APrompt : String; var defValue : String) : Boolean;
+begin
+  {$IFDEF FPC}
+  Result := InputQuery(ACaption,APrompt,True,defValue);
+  {$ELSE}
+  Result := InputQuery(ACaption,#31+APrompt,defValue);
+  {$ENDIF}
+end;
+
+end.
+