Sign a message with a shared secret.
The usual reason to be here is a webhook signature that will not match. Compare byte for byte — a trailing newline in the payload is the classic culprit.