using System.Security.Cryptography;
public static void Main()
const string sentPayload = @"{""attempt"":5,""eventLogId"":""bec12db7-a2a7-4a47-a349-64108c0c979a"",""event"":""acceptance-check-created"",""acceptanceCheckId"":""ZZJE""}";
const string signatureSecretSetInWebhookEditPage = "403f4169f406423297454a028accb81d";
const string signatureSentInHeader = "o7GTfXOGUcpCLszmq4Mu4o7YMkhzL7mPTiEI9koisvg=";
var calculatedSignatureByWebhookCallReceiver = CreateSignatureToken(sentPayload, signatureSecretSetInWebhookEditPage);
var isValidSignature = signatureSentInHeader.Equals(calculatedSignatureByWebhookCallReceiver);
Console.WriteLine("Signature Is valid: {0}", isValidSignature);
private static string CreateSignatureToken(string payload, string verificationSignature)
var secretBytes = Encoding.UTF8.GetBytes(verificationSignature);
using (var hasher = new HMACSHA256(secretBytes))
var data = Encoding.UTF8.GetBytes(payload);
var signatureBytes = hasher.ComputeHash(data);
var token = Convert.ToBase64String(signatureBytes);