import crypto from 'crypto';
function verifySignature(rawBody, signatureHeader, secret) {
const parts = {};
signatureHeader.split(',').forEach(p => {
const [key, value] = p.split('=');
parts[key] = value;
});
const timestamp = parts['t'];
const signature = parts['v1'];
// Protection replay (5 min)
const now = Math.floor(Date.now() / 1000);
if (Math.abs(now - parseInt(timestamp)) > 300) {
return false;
}
// Vérifier signature
const payload = `${timestamp}.${rawBody}`;
const expected = crypto
.createHmac('sha256', secret)
.update(payload)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expected)
);
}