UNPKG

pkce-js

Version:

Generate PKCE verifier and code_challenge in a simple way.

28 lines (21 loc) 735 B
import sha256 from 'crypto-js/sha256'; import base64 from 'crypto-js/enc-base64'; //@ts-ignore import secureRandom from 'secure-random'; export function randomString(length: number): string { let rs = ''; const mask = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~'; const bytes = secureRandom(length); const scale = 256 / mask.length; // 256 = 0 to 0xFF (randomBytes) for (let i = 0; i < length; i++) { rs += mask.charAt(Math.floor(bytes[i] / scale)); } return rs; } export function b64Sha256Hash(str: string): string { return base64.stringify(sha256(str)); } export function base64Url(str: string): string { return str.replace(/=/g, '').replace(/\+/g, '-').replace(/\//g, '_'); }