Sifa professional network API (Fastify, AT Protocol, Jetstream)
sifa.id/
1import * as jose from 'jose';
2import { writeFileSync, mkdirSync } from 'node:fs';
3
4async function generateKeys() {
5 mkdirSync('./keys', { recursive: true });
6 const { publicKey, privateKey } = await jose.generateKeyPair('ES256', { extractable: true });
7 const publicJwk = await jose.exportJWK(publicKey);
8 const privateJwk = await jose.exportJWK(privateKey);
9 const kid = await jose.calculateJwkThumbprint(publicJwk);
10
11 const jwks = {
12 keys: [{ ...publicJwk, kid, use: 'sig', alg: 'ES256' }],
13 };
14
15 writeFileSync('./keys/jwks.json', JSON.stringify(jwks, null, 2));
16 writeFileSync(
17 './keys/private-key.json',
18 JSON.stringify({ ...privateJwk, kid, use: 'sig', alg: 'ES256' }, null, 2),
19 );
20
21 console.log('Keys generated in ./keys/');
22}
23
24generateKeys();