UNPKG

@hookflo/tern

Version:

A robust, scalable webhook verification framework supporting multiple platforms and signature algorithms

22 lines (21 loc) 725 B
"use strict"; 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;