@hookflo/tern
Version:
A robust, scalable webhook verification framework supporting multiple platforms and signature algorithms
22 lines (21 loc) • 725 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.WebhookVerifier = void 0;
const crypto_1 = require("crypto");
class WebhookVerifier {
constructor(secret, toleranceInSeconds = 300) {
this.secret = secret;
this.toleranceInSeconds = toleranceInSeconds;
}
isTimestampValid(timestamp) {
const now = Math.floor(Date.now() / 1000);
return Math.abs(now - timestamp) <= this.toleranceInSeconds;
}
safeCompare(a, b) {
if (a.length !== b.length) {
return false;
}
return (0, crypto_1.timingSafeEqual)(new TextEncoder().encode(a), new TextEncoder().encode(b));
}
}
exports.WebhookVerifier = WebhookVerifier;