import { createHash, randomBytes } from "node:crypto"; export interface PkcePair { verifier: string; challenge: string; } /** Generate a PKCE verifier and its S256 challenge (RFC 7636). */ export function generatePkce(): PkcePair { const verifier = randomBytes(32).toString("base64url"); const challenge = createHash("sha256").update(verifier).digest("base64url"); return { verifier, challenge }; }