| import { createHash, randomBytes } from 'crypto' | |
| function base64URLEncode(buffer: Buffer): string { | |
| return buffer | |
| .toString('base64') | |
| .replace(/\+/g, '-') | |
| .replace(/\//g, '_') | |
| .replace(/=/g, '') | |
| } | |
| export function generateCodeVerifier(): string { | |
| return base64URLEncode(randomBytes(32)) | |
| } | |
| export function generateCodeChallenge(verifier: string): string { | |
| const hash = createHash('sha256') | |
| hash.update(verifier) | |
| return base64URLEncode(hash.digest()) | |
| } | |
| export function generateState(): string { | |
| return base64URLEncode(randomBytes(32)) | |
| } | |