| 12345678910111213141516171819202122232425 |
- import crypto from 'node:crypto';
- /**
- * Generate a PKCE S256 code challenge from a code verifier.
- * @param {string} codeVerifier
- * @returns {string}
- */
- export function generateCodeChallenge(codeVerifier) {
- const hash = crypto.createHash('sha256').update(codeVerifier).digest();
- return hash.toString('base64url');
- }
- /**
- * Verify a PKCE S256 code challenge against a code verifier.
- * @param {string} verifier
- * @param {string} challenge
- * @returns {boolean}
- */
- export function verifyCodeChallenge(verifier, challenge) {
- const regenerated = generateCodeChallenge(verifier);
- const a = Buffer.from(regenerated);
- const b = Buffer.from(challenge);
- if (a.length !== b.length) return false;
- return crypto.timingSafeEqual(a, b);
- }
|