@hookflo/tern
Version:
A robust, scalable webhook verification framework supporting multiple platforms and signature algorithms
31 lines (30 loc) • 2.07 kB
TypeScript
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;