Thanks for your support .
I have modified your code . It is working for me now . Thanks so much.
function TForm1.Validate(token, secret_key: String; onlySignatureCheck: Boolean; var msg: String): Boolean;
var
LHMAC: IHMAC;
barr: TBytes;
newtoken, s: String;
i: Integer;
sarr: TStringArray;
function Base64ToBase64URL(AValue: string): string;
begin
Result := StringsReplace(AValue, ['+', '/'], ['-', '_'], [rfReplaceAll]);
Result := TrimRightSet(Result, ['=']);
end;
begin
msg := '';
token := Trim(token);
(*
Result := False;
sarr := token.Split(['.'], TStringSplitOptions.ExcludeEmpty);
if Length(sarr) <> 3 then
begin
msg := 'Incorrect token';
exit;
end;
newtoken := sarr[0] + '.' + sarr[1];
LHMAC := THashFactory.THMAC.CreateHMAC(THashFactory.TCrypto.CreateSHA2_256);
LHMAC.Key := TConverters.ConvertStringToBytes(secret_key, TEncoding.UTF8);
barr := LHMAC.ComputeString(newtoken, TEncoding.UTF8).GetBytes();
s := '';
for i := Low(barr) to High(barr) do
s := s + chr(barr);
newtoken := newtoken + '.' + Base64ToBase64URL(EncodeStringBase64(s));
Result := token = newtoken;
*)
//if Result and not onlySignatureCheck then
//begin
newtoken := '';
newtoken := TLazJWT.New
.Token(token)
.SecretJWT(secret_key)
.Token;
try
TLazJWT.New
.Token(newtoken)
.SecretJWT(secret_key)
.ValidateToken;
except
on E: Exception do
begin
msg := E.Message;
Result := False;
end;
end;
//end
//else
end;