UNPKG

@better-auth/utils

Version:

A collection of utilities for better-auth

30 lines (27 loc) 1.01 kB
import { base64Url, base64 } from './base64.mjs'; import { getWebcryptoSubtle } from './index.mjs'; function createHash(algorithm, encoding) { return { digest: async (input) => { const encoder = new TextEncoder(); const data = typeof input === "string" ? encoder.encode(input) : input; const hashBuffer = await getWebcryptoSubtle().digest(algorithm, data); if (encoding === "hex") { const hashArray = Array.from(new Uint8Array(hashBuffer)); const hashHex = hashArray.map((b) => b.toString(16).padStart(2, "0")).join(""); return hashHex; } if (encoding === "base64" || encoding === "base64url" || encoding === "base64urlnopad") { if (encoding.includes("url")) { return base64Url.encode(hashBuffer, { padding: encoding !== "base64urlnopad" }); } const hashBase64 = base64.encode(hashBuffer); return hashBase64; } return hashBuffer; } }; } export { createHash };