(buffer: ArrayBuffer)
| 71 | }; |
| 72 | |
| 73 | const base64url = (buffer: ArrayBuffer): string => { |
| 74 | const bytes = new Uint8Array(buffer); |
| 75 | let binary = ""; |
| 76 | for (const byte of bytes) binary += String.fromCharCode(byte); |
| 77 | return btoa(binary).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/g, ""); |
| 78 | }; |
| 79 | |
| 80 | const codeChallengeForVerifier = (verifier: string): Promise<string> => |
| 81 | crypto.subtle.digest("SHA-256", new TextEncoder().encode(verifier)).then(base64url); |