I think instead of using HMAC with a key, we want to sign the HMAC with the private key so both the message origin and contents can be verified.