UNPKG

@hookflo/tern

Version:

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

31 lines (30 loc) 2.07 kB
import { WebhookVerifier } from "./base"; import { WebhookVerificationResult, SignatureConfig, WebhookPlatform } from "../types"; export declare abstract class AlgorithmBasedVerifier extends WebhookVerifier { protected config: SignatureConfig; protected platform: WebhookPlatform; constructor(secret: string, config: SignatureConfig, platform: WebhookPlatform, toleranceInSeconds?: number); abstract verify(request: Request): Promise<WebhookVerificationResult>; protected extractSignature(request: Request): string | null; protected extractTimestamp(request: Request): number | null; protected extractTimestampFromSignature(request: Request): number | null; protected formatPayload(rawBody: string, request: Request): string; protected formatCustomPayload(rawBody: string, request: Request): string; protected verifyHMAC(payload: string, signature: string, algorithm?: string): boolean; protected verifyHMACWithPrefix(payload: string, signature: string, algorithm?: string): boolean; protected verifyHMACWithBase64(payload: string, signature: string, algorithm?: string): boolean; protected extractMetadata(request: Request): Record<string, any>; } export declare class GenericHMACVerifier extends AlgorithmBasedVerifier { verify(request: Request): Promise<WebhookVerificationResult>; } export declare class HMACSHA256Verifier extends GenericHMACVerifier { constructor(secret: string, config: SignatureConfig, platform?: WebhookPlatform, toleranceInSeconds?: number); } export declare class HMACSHA1Verifier extends GenericHMACVerifier { constructor(secret: string, config: SignatureConfig, platform?: WebhookPlatform, toleranceInSeconds?: number); } export declare class HMACSHA512Verifier extends GenericHMACVerifier { constructor(secret: string, config: SignatureConfig, platform?: WebhookPlatform, toleranceInSeconds?: number); } export declare function createAlgorithmVerifier(secret: string, config: SignatureConfig, platform?: WebhookPlatform, toleranceInSeconds?: number): AlgorithmBasedVerifier;