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