UNPKG

authvisage-sdk

Version:
34 lines 1.32 kB
/** * Utility class for handling PKCE authentication */ export class PKCEHandler { /** * Generates a PKCE challenge pair */ static async _sha256Base64UrlEncode(inputStr) { const encoder = new TextEncoder(); const data = encoder.encode(inputStr); const hash = await crypto.subtle.digest("SHA-256", data); const base64 = Buffer.from(hash).toString("base64"); // Convert to base64url by replacing chars and removing padding return base64.replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, ""); } static async _storeCodeVerifier(codeVerifier) { localStorage.setItem(this.PKCE_STORAGE_KEY, codeVerifier); } static async getCodeVerifier() { const codeVerifier = localStorage.getItem(this.PKCE_STORAGE_KEY); if (!codeVerifier) { throw new Error("Code verifier not found in local storage."); } return codeVerifier; } static async generate() { const codeVerifier = crypto.randomUUID(); const codeChallenge = await this._sha256Base64UrlEncode(codeVerifier); await this._storeCodeVerifier(codeVerifier); return { codeVerifier, codeChallenge }; } } PKCEHandler.PKCE_STORAGE_KEY = "authVisage:pkce_verifier"; //# sourceMappingURL=pkceHandler.js.map