Files
freeCodeCamp/api/src/utils/index.ts
Naomi Carrigan 0aa1ad0d09 feat: require JSDoc in new api (#50429)
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
2023-08-03 21:50:54 +05:30

22 lines
562 B
TypeScript

import { randomBytes, createHash } from 'crypto';
/**
* Utility to encode a buffer to a base64 URI.
*
* @param buf The buffer to encode.
* @returns The encoded string.
*/
export function base64URLEncode(buf: Buffer): string {
return buf
.toString('base64')
.replace(/\+/g, '-')
.replace(/\//g, '_')
.replace(/=/g, '');
}
export const verifier = base64URLEncode(randomBytes(32));
function sha256(buf: Buffer) {
return createHash('sha256').update(buf).digest();
}
export const challenge = base64URLEncode(sha256(Buffer.from(verifier)));