HMAC Signing
If a webhook is signed with HMAC-SHA256, the signature must be sent via HTTP header. The header name can be configured.
The following formats are supported:
Signature as hex-encoded string
X-Signature: 4643978965ffcec6e6d73b36a39ae43ceb15f7ef8131b8307862ebc560e7f988
X-Signature: v1=4643978965ffcec6e6d73b36a39ae43ceb15f7ef8131b8307862ebc560e7f988
In the second code example, 'v1' is the name of the key. The name does not have to be v1.
Signature as base64-encoded string
X-Signature: BourgoxXQMpz6EBBm8AC12IeK+axMUIjFYkT5T8lt38=
Signature and Timestamp, both in their own header
Signature
X-Signature: <hex-encoded or base64>
Timestamp
The Timestamp should only be specified if it is used in the HMAC-SHA256 hash of the webhook.
X-Timestamp: 1772201257
-
The timestamp must be a unix timestamp represented as the number of seconds since January 1, 1970.
-
To compute the HMAC the following calculation is used:
{timestamp}.{payload}The delimiter between {timestamp} and {payload} (".") can not be configured.
Signature and Timestamp in one header
Example 1
X-Signature: t=1772201257,v1=750d48166fc4c314a5a3c9bf825677fd582ec3e7291e9b8666c5e0fae8acb781
Example 2
X-Signature: t=1772201257,sha256=750d48166fc4c314a5a3c9bf825677fd582ec3e7291e9b8666c5e0fae8acb781
The names for the keys (here: 'v1', 't', 'sha256) can be chosen freely.
-
In this form, a base64-encoded hash is not supported.
-
The timestamp must be a unix timestamp.
-
When using this form the 'Timestamp Header' field in the webhook configuration should be left empty.