Sample code for 30+ languages & platforms
Delphi ActiveX

Sign a JWS with an HMAC Key from BinData

See more JSON Web Signatures (JWS) Examples

Demonstrates Jws.SetMacKeyBd, which sets the symmetric MAC key for a signature from the raw bytes in a BinData.

Background. This is the in-memory equivalent of SetMacKey, for when the key material is already available as bytes.

Chilkat Delphi ActiveX Downloads

Delphi ActiveX
var
success: Integer;
jws: TChilkatJws;
header: TChilkatJsonObject;
bIncludeBom: Integer;
bdKey: TChilkatBinData;
jwsCompact: WideString;

begin
success := 0;

jws := TChilkatJws.Create(Self);

//  Protected header specifying HMAC-SHA256.
header := TChilkatJsonObject.Create(Self);
header.UpdateString('alg','HS256');
success := jws.SetProtectedHeader(0,header.ControlInterface);
if (success = 0) then
  begin
    Memo1.Lines.Add(jws.LastErrorText);
    Exit;
  end;

bIncludeBom := 0;
success := jws.SetPayload('This is the content to sign.','utf-8',bIncludeBom);
if (success = 0) then
  begin
    Memo1.Lines.Add(jws.LastErrorText);
    Exit;
  end;

//  Set the symmetric MAC key for signature 0 from the raw bytes in a BinData.  In production, obtain
//  the key material from a secure source.
bdKey := TChilkatBinData.Create(Self);
bdKey.AppendEncoded('YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU=','base64');
success := jws.SetMacKeyBd(0,bdKey.ControlInterface);
if (success = 0) then
  begin
    Memo1.Lines.Add(jws.LastErrorText);
    Exit;
  end;

jwsCompact := jws.CreateJws();
if (jws.LastMethodSuccess = 0) then
  begin
    Memo1.Lines.Add(jws.LastErrorText);
    Exit;
  end;
Memo1.Lines.Add(jwsCompact);