From c58cf7471a009119db58d6847497d8639bc70a12 Mon Sep 17 00:00:00 2001 From: Tomek Marciniak Date: Mon, 19 Feb 2024 13:45:52 +0100 Subject: [PATCH] fix(app): use node included crypto --- bun.lockb | Bin 312262 -> 311922 bytes package.json | 181 ++++++++++++------------- src/routes/api/subscription/+server.ts | 7 +- 3 files changed, 94 insertions(+), 94 deletions(-) diff --git a/bun.lockb b/bun.lockb index d9e36c32d37fe79b0b365bd67f77b6042508b8a2..c95276b0455d0a56cf14146267e0c745b550f760 100755 GIT binary patch delta 33377 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 TO>T{kgU>#Zd$fDR;Q{{#uC_2X delta 32855 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 C3(q+K diff --git a/package.json b/package.json index 3648fd3..aca9638 100644 --- a/package.json +++ b/package.json @@ -1,93 +1,92 @@ { - "name": "supso", - "version": "0.0.1", - "private": true, - "scripts": { - "dev": "bunx --bun vite dev", - "build": "bunx vite build", - "preview": "bunx vite preview", - "start": "npm run db:migrate && node build/index.js", - "test": "bun run test:integration && bun run test:unit", - "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", - "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", - "lint": "prettier --check . && eslint .", - "format": "prettier --write .", - "test:integration": "playwright test", - "test:unit": "vitest", - "db:generate": "npx drizzle-kit generate:sqlite", - "db:push": "bunx --bun drizzle-kit push:sqlite", - "db:migrate": "bun ./scripts/migrate.ts" - }, - "devDependencies": { - "@playwright/test": "^1.28.1", - "@sveltejs/adapter-node": "^2.0.2", - "@sveltejs/kit": "^2.0.0", - "@sveltejs/vite-plugin-svelte": "^3.0.0", - "@types/eslint": "8.56.0", - "@types/pg": "^8.10.9", - "@types/swagger-jsdoc": "^6.0.4", - "@typescript-eslint/eslint-plugin": "^6.0.0", - "@typescript-eslint/parser": "^6.0.0", - "autoprefixer": "^10.4.16", - "dotenv": "^16.3.1", - "drizzle-kit": "^0.20.13", - "esbuild": "^0.19.12", - "eslint": "^8.56.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-svelte": "^2.35.1", - "postcss": "^8.4.32", - "postcss-load-config": "^5.0.2", - "prettier": "^3.1.1", - "prettier-plugin-svelte": "^3.1.2", - "prettier-plugin-tailwindcss": "^0.5.9", - "sass": "^1.70.0", - "svelte": "^4.2.8", - "svelte-check": "^3.6.0", - "tailwindcss": "^3.3.6", - "tslib": "^2.4.1", - "typescript": "^5.0.0", - "vite": "^5.0.3", - "vitest": "^1.0.0" - }, - "type": "module", - "dependencies": { - "@carbon/charts-svelte": "^1.13.18", - "@cartamd/plugin-code": "^3.0.1", - "@cartamd/plugin-emoji": "^3.1.0", - "@cartamd/plugin-slash": "^3.1.0", - "@internationalized/date": "^3.5.1", - "@libsql/client": "^0.3.6", - "@lucia-auth/adapter-drizzle": "^1.0.1", - "bits-ui": "^0.13.0", - "carta-md": "^3.5.0", - "clsx": "^2.1.0", - "cmdk-sv": "^0.0.12", - "crypto": "^1.0.1", - "date-fns": "^3.0.6", - "dedent": "^1.5.1", - "drizzle-orm": "^0.29.2", - "drizzle-zod": "^0.5.1", - "feed": "^4.2.2", - "formsnap": "^0.4.2", - "isomorphic-dompurify": "^2.3.0", - "lemonsqueezy.ts": "^0.1.7", - "lucia": "^3.0.1", - "lucide-svelte": "^0.303.0", - "mode-watcher": "^0.1.2", - "rambda": "^8.6.0", - "shiki": "^1.0.0", - "sse.js": "^2.2.0", - "superjson": "^2.2.1", - "svelte-dnd-list": "^0.1.8", - "svelte-highlight": "^7.4.7", - "svelte-sonner": "^0.3.11", - "sveltekit-superforms": "^1.13.1", - "swagger-jsdoc": "^6.2.8", - "tailwind-merge": "^2.2.0", - "tailwind-variants": "^0.1.19", - "tsx": "^4.7.0", - "ua-parser-js": "2.0.0-beta.1", - "unique-names-generator": "^4.7.1", - "zod": "^3.22.4" - } + "name": "supso", + "version": "0.0.1", + "private": true, + "scripts": { + "dev": "bunx --bun vite dev", + "build": "bunx vite build", + "preview": "bunx vite preview", + "start": "npm run db:migrate && node build/index.js", + "test": "bun run test:integration && bun run test:unit", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "lint": "prettier --check . && eslint .", + "format": "prettier --write .", + "test:integration": "playwright test", + "test:unit": "vitest", + "db:generate": "npx drizzle-kit generate:sqlite", + "db:push": "bunx --bun drizzle-kit push:sqlite", + "db:migrate": "bun ./scripts/migrate.ts" + }, + "devDependencies": { + "@playwright/test": "^1.28.1", + "@sveltejs/adapter-node": "^2.0.2", + "@sveltejs/kit": "^2.0.0", + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "@types/eslint": "8.56.0", + "@types/pg": "^8.10.9", + "@types/swagger-jsdoc": "^6.0.4", + "@typescript-eslint/eslint-plugin": "^6.0.0", + "@typescript-eslint/parser": "^6.0.0", + "autoprefixer": "^10.4.16", + "dotenv": "^16.3.1", + "drizzle-kit": "^0.20.13", + "esbuild": "^0.19.12", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-svelte": "^2.35.1", + "postcss": "^8.4.32", + "postcss-load-config": "^5.0.2", + "prettier": "^3.1.1", + "prettier-plugin-svelte": "^3.1.2", + "prettier-plugin-tailwindcss": "^0.5.9", + "sass": "^1.70.0", + "svelte": "^4.2.8", + "svelte-check": "^3.6.0", + "tailwindcss": "^3.3.6", + "tslib": "^2.4.1", + "typescript": "^5.0.0", + "vite": "^5.0.3", + "vitest": "^1.0.0" + }, + "type": "module", + "dependencies": { + "@carbon/charts-svelte": "^1.13.18", + "@cartamd/plugin-code": "^3.0.1", + "@cartamd/plugin-emoji": "^3.1.0", + "@cartamd/plugin-slash": "^3.1.0", + "@internationalized/date": "^3.5.1", + "@libsql/client": "^0.3.6", + "@lucia-auth/adapter-drizzle": "^1.0.1", + "bits-ui": "^0.13.0", + "carta-md": "^3.5.0", + "clsx": "^2.1.0", + "cmdk-sv": "^0.0.12", + "date-fns": "^3.0.6", + "dedent": "^1.5.1", + "drizzle-orm": "^0.29.2", + "drizzle-zod": "^0.5.1", + "feed": "^4.2.2", + "formsnap": "^0.4.2", + "isomorphic-dompurify": "^2.3.0", + "lemonsqueezy.ts": "^0.1.7", + "lucia": "^3.0.1", + "lucide-svelte": "^0.303.0", + "mode-watcher": "^0.1.2", + "rambda": "^8.6.0", + "shiki": "^1.0.0", + "sse.js": "^2.2.0", + "superjson": "^2.2.1", + "svelte-dnd-list": "^0.1.8", + "svelte-highlight": "^7.4.7", + "svelte-sonner": "^0.3.11", + "sveltekit-superforms": "^1.13.1", + "swagger-jsdoc": "^6.2.8", + "tailwind-merge": "^2.2.0", + "tailwind-variants": "^0.1.19", + "tsx": "^4.7.0", + "ua-parser-js": "2.0.0-beta.1", + "unique-names-generator": "^4.7.1", + "zod": "^3.22.4" + } } diff --git a/src/routes/api/subscription/+server.ts b/src/routes/api/subscription/+server.ts index f2229bd..8d460df 100644 --- a/src/routes/api/subscription/+server.ts +++ b/src/routes/api/subscription/+server.ts @@ -1,4 +1,4 @@ -import crypto from 'crypto'; +import crypto from 'node:crypto'; import type { RequestHandler } from './$types'; import { type LemonsqueezySubscription } from 'lemonsqueezy.ts'; import { db } from '$lib/db'; @@ -19,10 +19,11 @@ type SubscriptionBody = { }; export const POST: RequestHandler = async ({ request }) => { - const hmac = crypto.createHmac('sha256', envPrivate.SECRET_LS_WEBHOOK_KEY); const bodyRaw = await request.text(); + const hmac = crypto.createHmac('sha256', envPrivate.SECRET_LS_WEBHOOK_KEY ?? ''); const digest = Buffer.from(hmac.update(bodyRaw).digest('hex'), 'utf8'); - const signature = Buffer.from(request.headers.get('X-Signature') || '', 'utf8'); + const signature = Buffer.from(request.headers.get('x-signature') as string, 'utf8'); + if (!crypto.timingSafeEqual(digest, signature)) { return Response.json({ error: true }, { status: 400 }); }