anchor.diff:  begin
     Inherited Create(a_underlyingHash.HashSize, a_underlyingHash.BlockSize);
     Fm_hash := a_underlyingHash;
  +  Fm_blocksize := Fm_hash.BlockSize;
     System.SetLength(Fm_key, 0);
  -  System.SetLength(Fm_ipad, Fm_hash.BlockSize);
  -  System.SetLength(Fm_opad, Fm_hash.BlockSize);
  +  System.SetLength(Fm_ipad, Fm_blocksize);
  +  System.SetLength(Fm_opad, Fm_blocksize);
   end;
   
   function THMACNotBuildInAdapter.GetKey: THashLibByteArray;
  
positive.code:     LKey := Key;
    end;
  
    System.FillChar(Fm_ipad[0], Fm_hash.BlockSize * System.SizeOf(Byte), $36);
    System.FillChar(Fm_opad[0], Fm_hash.BlockSize * System.SizeOf(Byte), $5C);
  
    Idx := 0;
    while (Idx < System.Length(LKey)) and (Idx < Fm_hash.BlockSize) do
    begin
      Fm_ipad[Idx] := Fm_ipad[Idx] xor LKey[Idx];
      Fm_opad[Idx] := Fm_opad[Idx] xor LKey[Idx];
  
negative.code: procedure THMACNotBuildInAdapter.UpdatePads;
  var
    LKey: THashLibByteArray;
    Idx, LBlockSize: Int32;
  begin
    LBlockSize := Fm_hash.BlockSize;
    if (System.Length(Key) > LBlockSize) then
    begin
      LKey := Fm_hash.ComputeBytes(Key).GetBytes();
    end
  