Files
eden/scripts/generate-keys.ts
T

15 lines
1.1 KiB
TypeScript

import { generateKeyPair, exportPKCS8, exportJWK } from 'jose';
import { randomBytes } from 'node:crypto';
import { writeFile } from 'node:fs/promises';
const { privateKey, publicKey } = await generateKeyPair('RS256', { extractable: true, modulusLength: 2048 });
const publicJwk = { ...await exportJWK(publicKey), kid: 'app-v1', alg: 'RS256', use: 'sig' };
const values = {
TOKEN_ENCRYPTION_KEY: randomBytes(32).toString('base64'),
CONVEX_BRIDGE_SECRET: randomBytes(32).toString('base64url'),
CONVEX_SYNC_WORKER_SECRET: randomBytes(32).toString('base64url'),
APP_AUTH_PRIVATE_KEY: Buffer.from(await exportPKCS8(privateKey)).toString('base64'),
APP_AUTH_JWKS: `data:application/json;base64,${Buffer.from(JSON.stringify({ keys: [publicJwk] })).toString('base64')}`
};
await writeFile('.env.keys', Object.entries(values).map(([k, v]) => `${k}='${v}'`).join('\n') + '\n', { flag: 'wx', mode: 0o600 });
console.log('Wrote .env.keys (0600). Import its five values into your Infisical project (dev, /), or a private .env for standalone setup. Never commit it. Existing files are not overwritten.');