import * as jose from "jose"; import { getEnvVariable } from "./env"; import { KnownErrors } from ".."; const STACK_SERVER_SECRET = jose.base64url.decode(getEnvVariable("STACK_SERVER_SECRET")); export async function encryptJWT(payload: any, expirationTime = "5m") { return await new jose.EncryptJWT(payload) .setProtectedHeader({ alg: "dir", enc: "A128CBC-HS256" }) .setIssuedAt() .setExpirationTime(expirationTime) .encrypt(STACK_SERVER_SECRET); } export async function decryptJWT(jwt: string) { if (!jwt) { throw new Error("Provided JWT is empty"); } return (await jose.jwtDecrypt(jwt, STACK_SERVER_SECRET)).payload; }