UNPKG

@pedwise/next-firebase-auth-edge

Version:

Next.js 13 Firebase Authentication for Edge and server runtimes. Dedicated for Next 13 server components. Compatible with Next.js middleware.

30 lines 1.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.sign = void 0; const utils_1 = require("./utils"); const consts_1 = require("./consts"); function getKeyData(options) { if (options.secret) { return (0, utils_1.base64StringToArrayBuffer)(options.secret); } if (options.privateKey) { return (0, utils_1.pemToArrayBuffer)(options.privateKey); } return (0, utils_1.base64StringToArrayBuffer)(""); } async function sign({ payload, privateKey, secret, keyId, format = "pkcs8", algorithm = "RS256", extractable = false, keyUsages = ["sign"], }) { const keyData = getKeyData({ privateKey, secret }); const key = await crypto.subtle.importKey(format, keyData, consts_1.ALGORITHMS[algorithm], extractable, keyUsages); const header = { typ: "JWT", alg: algorithm, }; const encodedHeader = (0, utils_1.objectToBase64)(keyId ? Object.assign(Object.assign({}, header), { kid: keyId }) : header); const encodedPayload = (0, utils_1.objectToBase64)(payload); const data = (0, utils_1.stringToArrayBuffer)(`${encodedHeader}.${encodedPayload}`); const signature = await crypto.subtle.sign(consts_1.ALGORITHMS[algorithm], key, data); const encodedSignature = (0, utils_1.arrayBufferToBase64)(signature); return `${encodedHeader}.${encodedPayload}.${encodedSignature}`; } exports.sign = sign; //# sourceMappingURL=sign.js.map