From ec6f858cf2f97c34834e49e1d465406ef5524187 Mon Sep 17 00:00:00 2001 From: cirroskais Date: Mon, 18 Mar 2024 21:56:37 -0400 Subject: [PATCH] oh lord --- bun.lockb | Bin 3124 -> 3165 bytes package.json | 3 ++- src/env.d.ts | 2 ++ src/index.ts | 8 ++++++++ src/lib/encryption.ts | 37 +++++++++++++++++++++++++++++++++++++ src/routes/negotiate.ts | 3 +++ src/routes/token.ts | 5 +++++ 7 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 src/lib/encryption.ts create mode 100644 src/routes/negotiate.ts diff --git a/bun.lockb b/bun.lockb index 8591e2fc319f309481f18d8dbdab51a432d8006e..8cc0a35c10dcff16155ce3b65195fb6a273f8aef 100755 GIT binary patch delta 559 zcmdlYaaUr3ALH4H{+1rH3=9n13=9oPK$-_ga{*}}Zg>KuIf1kWBZLNW!Qv7g8{O}8 zE*H5-&v}b%fxe_R3 z$T)cyqa9=6+jLh^*7@kbt%OQ!O z6DV(Fpl4{PXABGf#iwUf&d<7(36!zWGu1ORV33{6%_+&b0%$x4yqN6H=?L-w5KQji zG>}XMx)BtiEf%I{7%TYxNq}M&2#!v^$Z0JS2Ql8r(xIfXAhlROFFz%9ass#X;i%y8Ia>TpfYxo6M-@v943sOlRt7uGWJg9=9H9%1>EA(Gb-n2UCLx)th3NF z)iX3;=$&lODX9z#NLXM2R3)3@<6@34G lKvm3{{E^dovICdW { + const pwBuf = Buffer.from(password); + scrypt(pwBuf, process.env.ENCRYPTION_SALT, length, (err, key) => { + if (err) return reject(err); + resolve(key); + }); + }); +} + +export async function encrypt(data: string) { + const iv = randomBytes(16); + const cipher = createCipheriv("aes-256-ccm", KEY, iv); + + let encrypted = cipher.update(data, "utf8", "base64url"); + encrypted += cipher.final("base64url"); + + return { encrypted, iv: iv.toString("hex") }; +} + +export async function decrypt(data: string, iv: string) { + const ivBuf = Buffer.from(iv, "hex"); + const decipher = createDecipheriv("aes-256-ccm", KEY, ivBuf); + + let decrypted = decipher.update(data, "base64url", "utf-8"); + try { + decrypted += decipher.final("utf8"); + } catch { + return false; + } + + return { decrypted }; +} diff --git a/src/routes/negotiate.ts b/src/routes/negotiate.ts new file mode 100644 index 0000000..c180ceb --- /dev/null +++ b/src/routes/negotiate.ts @@ -0,0 +1,3 @@ +export default async function (req: Request): Promise { + return new Response(); +} diff --git a/src/routes/token.ts b/src/routes/token.ts index 692bd6e..ddba3c5 100644 --- a/src/routes/token.ts +++ b/src/routes/token.ts @@ -30,6 +30,11 @@ export default async function (req: Request): Promise { }); const { access_token } = (await response.json()) as TokenResponse; + const userResponse = await fetch("https://discord/api/v10/user/@me", { + headers: { Authorization: "Bearer " + access_token }, + }); + + console.log(await userResponse.json()); return new Response(JSON.stringify({ access_token }), { headers: {