fn equal(mac1 byte, mac2 byte) bool
equal compares 2 MACs for equality, without leaking timing info.
NB: if the lengths of the 2 MACs are different, probably a completely different hash function was used to generate them => no useful timing information.
fn new(key byte, data byte, hash_func fn (byte) byte, blocksize int) byte
new returns a HMAC byte array, depending on the hash algorithm used.