const crypto = require('crypto');
function verifyWebhookSignature(secretHex, signatureHeader, rawBody) {
try {
const parts = signatureHeader.split(',');
const timestamp = parseInt(parts[1].split('=')[1]);
const providedSignature = parts[2].split('=')[1];
const signedPayload = `${timestamp}.${rawBody}`;
const key = Buffer.from(secretHex, 'hex');
const expectedSignature = crypto
.createHmac('sha256', key)
.update(signedPayload)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(providedSignature, 'hex'),
Buffer.from(expectedSignature, 'hex')
);
} catch {
return false;
}
}