Decrypt one message, the tag kept apart, and hand back the tag this end
computed.
For a caller whose protocol carries the tag separately from the ciphertext,
so that decrypt -- which wants the two together and compares them itself
-- does not fit. Compare the two tags with ==; the Eq instance of
AuthTag is a constant-time comparison, and taking them apart to compare
the bytes is how this goes wrong.
Nothing here says whether the message is authentic. Until the comparison
is made and has come out equal, what this returns is not plaintext, it is
what the ciphertext turns into, and a caller must not act on it.