Why HashValue function of TIdHMACSHA256+ (Indy/delphi) always return empty? For example, the code below does not work.
var
  Hash: TIdHMACSHA256 ;
  HashValue: TBytes;
begin
  SetCurrentDir(ExtractFilePath(ParamStr(0)));
  Hash := TIdHMACSHA256 .Create;
  try
    Hash.Key := TEncoding.ASCII.GetBytes('devaee2');
    HashValue := Hash.HashValue(TFile.ReadAllBytes('menu.xml'));
    // HashValue is an empty array, why?
    Tag := Length(HashValue);
    TFile.WriteAllBytes('menu.xml.hash', HashValue);
  finally
    FreeAndNil(Hash);
  end;
end;
The problem is that you have not successfully loaded the OpenSSL libraries that are needed to implement the hash. Call IdSSLOpenSSL.LoadOpenSSLLibrary. You'll also need to make sure that your program can find suitable OpenSSL DLLs.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With