// lib/transcoder-auth.ts // Timing-safe Bearer token verification for transcoder API endpoints. import { createHash, timingSafeEqual } from "crypto"; /** * Verifies the incoming request carries the correct TRANSCODER_SECRET * via an "Authorization: Bearer " header. * * Uses HMAC-SHA256 hashes and timingSafeEqual to prevent timing attacks. */ export function verifyTranscoderToken(request: Request): boolean { const secret = process.env.TRANSCODER_SECRET; if (!secret) return false; const auth = request.headers.get("authorization") ?? ""; if (!auth.startsWith("Bearer ")) return false; const token = auth.slice(7); try { const a = createHash("sha256").update(token).digest(); const b = createHash("sha256").update(secret).digest(); return timingSafeEqual(a, b); } catch { return false; } }