Fix a timing attack

The HMAC validation code early-exits on mismatch, which would allow an attacker to reconstruct the hash one byte at a time.  With this attack, you can get arbitrary messages accepted pretty easily (SSL doesn't help since you can just create new connections and brute-force the HMAC).  Note that this doesn't expose the authcode directly.