BSOne.SFC/eCrmHE/EXE_eCrmHomeEdition/Messages/DUninstallPW.pas

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.