Files
lazarus-ccr/components/onguard/examples/regdemo/uni_regcommon.pas

77 lines
2.4 KiB
ObjectPascal

unit uni_RegCommon;
{$mode objfpc}{$H+}
interface
uses
OnGuard, OgUtil, Classes;
var
MachineModifier : longint;
MachineKey : TKey;
Expires : TDateTime;
RegistrationInfo : TStringList;
function IsReleaseCodeValid (ReleaseCodeString: string; const SerialNumber : longint) : boolean;
procedure SaveRegistrationInformation (const ReleaseCodeString: string; const SerialNumber : longint);
procedure GetRegistrationInformation (var ReleaseCodeString: string; var SerialNumber : longint);
implementation
uses
SysUtils;
const
RegistrationFile = 'REGISTRATION.DAT';
function IsReleaseCodeValid (ReleaseCodeString: string; const SerialNumber : longint) : boolean;
var
CalculatedReleaseCode : TCode;
begin
// Remove spaces from the Release code
while pos(' ', ReleaseCodeString) > 0 do
System.Delete(ReleaseCodeString, pos(' ', ReleaseCodeString), 1);
// Calculate the release code based on the serial number and the calculated machine modifier
InitSerialNumberCode(MachineKey, SerialNumber, Expires, CalculatedReleaseCode);
// Compare the two release codes
result := AnsiUpperCase(ReleaseCodeString) = AnsiUpperCase(BufferToHex(CalculatedReleaseCode, sizeof(CalculatedReleaseCode)));
end;
procedure SaveRegistrationInformation (const ReleaseCodeString: string; const SerialNumber : longint);
begin
// Save the information for the application
RegistrationInfo := TStringList.Create;
RegistrationInfo.Add(format('%d',[SerialNumber]));
RegistrationInfo.Add(ANSIUpperCase(ReleaseCodeString));
RegistrationInfo.SaveToFile(RegistrationFile);
RegistrationInfo.Free;
end;
procedure GetRegistrationInformation (var ReleaseCodeString: string; var SerialNumber : longint);
begin
// Save the information for the application
if FileExists(RegistrationFile) then begin
RegistrationInfo := TStringList.Create;
RegistrationInfo.LoadFromFile(RegistrationFile);
SerialNumber := StrToInt(RegistrationInfo[0]);
ReleaseCodeString := RegistrationInfo[1];
RegistrationInfo.Free;
end else begin
SerialNumber := 0;
ReleaseCodeString := '';
end;
end;
const
Key : TKey = ($3E,$C9,$18,$78,$7D,$AC,$AF,$D3,$64,$E0,$BC,$0A,$43,$68,$2C,$F2);
initialization
Expires := 0;
MachineKey := Key;
MachineModifier := ABS(CreateMachineID([midUser, midSystem, {midNetwork,} midDrives]));
ApplyModifierToKeyPrim(MachineModifier,MachineKey,sizeof(MachineKey));
end.