unoffical wafrn mirror wafrn.net
atproto social-network activitypub
at testPDSNotExplode 36 lines 1.0 kB view raw
1import { Job } from 'bullmq' 2import { User } from '../../models/index.js' 3import { generateKeyPairSync } from 'crypto' 4import { logger } from '../logger.js' 5 6// this funcion is cpu expensive, so we generate it asyncronously. 7// I mean this will take a few seconds at best, 8// user wont be ready to be activated and post at that time 9async function generateUserKeyPair(job: Job) { 10 const user = await User.scope('full').findByPk(job.data.userId) 11 if (user) { 12 const { publicKey, privateKey } = generateKeyPairSync('rsa', { 13 modulusLength: 4096, 14 publicKeyEncoding: { 15 type: 'spki', 16 format: 'pem' 17 }, 18 privateKeyEncoding: { 19 type: 'pkcs8', 20 format: 'pem' 21 } 22 }) 23 user.publicKey = publicKey 24 user.privateKey = privateKey 25 26 await user.save() 27 } else { 28 logger.error({ 29 message: `OH NO user not found for generating keys`, 30 user: job.data.userId 31 }) 32 throw new Error('User not found to generate keys!') 33 } 34} 35 36export { generateUserKeyPair }