78 lines
1.7 KiB
Plaintext
78 lines
1.7 KiB
Plaintext
unit DUninstallPW;
|
|
|
|
interface
|
|
|
|
uses
|
|
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
|
|
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
|
|
|
|
type
|
|
TDlgUninstallPW = class(TForm)
|
|
Label1: TLabel;
|
|
edPass: TEdit;
|
|
btnOk: TButton;
|
|
btnCancel: TButton;
|
|
procedure btnOkClick(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
public
|
|
{ Public declarations }
|
|
end;
|
|
|
|
var
|
|
DlgUninstallPW: TDlgUninstallPW;
|
|
|
|
implementation
|
|
|
|
uses
|
|
ManagerService, Tocsg.Hash, Tocsg.Safe, EM.Tocsg.hash, Soap.EncdDecd;
|
|
|
|
resourcestring
|
|
RS_InputPass = '비밀번호를 입력해 주십시오.';
|
|
RS_WrongPass = '비밀번호가 맞지 않습니다.';
|
|
|
|
{$R *.dfm}
|
|
|
|
procedure TDlgUninstallPW.btnOkClick(Sender: TObject);
|
|
var
|
|
sha: TSHA256Hash;
|
|
s256d: TSHA256Digest;
|
|
sHash: String;
|
|
begin
|
|
edPass.Text := Trim(edPass.Text);
|
|
|
|
if edPass.Text = '' then
|
|
begin
|
|
MessageBox(Handle, PChar(RS_InputPass), PChar(Caption), MB_ICONWARNING or MB_OK);
|
|
edPass.SetFocus;
|
|
exit;
|
|
end;
|
|
|
|
if gMgSvc.PrefModel.UninstallPW[1] = ':' then
|
|
begin
|
|
Guard(sha, TSHA256Hash.Create);
|
|
sha.SetBuffer(@AnsiString(edPass.Text)[1], Length(edPass.Text));
|
|
sha.WorkFinalToDigest(s256d);
|
|
sHash := ':' + EncodeBase64(@s256d, SizeOf(s256d));
|
|
|
|
if (gMgSvc = nil) or
|
|
(sHash <> gMgSvc.PrefModel.UninstallPW) then
|
|
begin
|
|
MessageBox(Handle, PChar(RS_WrongPass), PChar(Caption), MB_ICONWARNING or MB_OK);
|
|
edPass.SetFocus;
|
|
exit;
|
|
end;
|
|
end else
|
|
if (gMgSvc = nil) or
|
|
(gMgSvc.PrefModel.UninstallPW <> edPass.Text) then
|
|
begin
|
|
MessageBox(Handle, PChar(RS_WrongPass), PChar(Caption), MB_ICONWARNING or MB_OK);
|
|
edPass.SetFocus;
|
|
exit;
|
|
end;
|
|
|
|
ModalResult := mrOk;
|
|
end;
|
|
|
|
end.
|