Delphi DLL Requires Chilkat v11.0.0+
Delphi DLL
Workaround for the deprecated Crypt2.MacBytes method
Shows how to replace the deprecated MacBytes method. (Chilkat is moving away from the use of CkByteData.)Chilkat Delphi DLL Downloads
var
success: Boolean;
crypt: HCkCrypt2;
keyHex: PWideChar;
path: PWideChar;
inData: HCkByteData;
outData: HCkByteData;
bdIn: HCkBinData;
mac_base64: PWideChar;
begin
success := False;
crypt := CkCrypt2_Create();
// Do HMAC using SHA-256.
CkCrypt2_putMacAlgorithm(crypt,'hmac');
CkCrypt2_putHashAlgorithm(crypt,'sha256');
keyHex := '000102030405060708090A0B0C0D0E0F';
success := CkCrypt2_SetMacKeyEncoded(crypt,keyHex,'hex');
path := 'c:/someDir/example.dat';
// ------------------------------------------------------------------------
// The MacBytes method is deprecated:
inData := CkByteData_Create();
CkByteData_loadFile(inData,path);
outData := CkByteData_Create();
success := CkCrypt2_MacBytes(crypt,inData,outData);
// ------------------------------------------------------------------------
// Workaround.
// (Chilkat is moving away from using CkByteData)
bdIn := CkBinData_Create();
CkBinData_LoadFile(bdIn,path);
// Set to any supported Chilkat encoding: base64, hex, base64url, hex_lower, etc.
CkCrypt2_putEncodingMode(crypt,'base64');
mac_base64 := CkCrypt2__macBdENC(crypt,bdIn);
Memo1.Lines.Add(mac_base64);
CkCrypt2_Dispose(crypt);
CkByteData_Dispose(inData);
CkByteData_Dispose(outData);
CkBinData_Dispose(bdIn);