23 lines
873 B
JavaScript
23 lines
873 B
JavaScript
#!/usr/bin/env node
|
|
import crypto from 'crypto';
|
|
import fs from 'fs';
|
|
import path from 'path';
|
|
import { fileURLToPath } from 'url';
|
|
|
|
const ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
|
|
const FILE = path.join(ROOT, 'keypair.json');
|
|
|
|
if (fs.existsSync(FILE)) {
|
|
fs.renameSync(FILE, `${FILE}.bak`);
|
|
console.log('Backed up old keypair.json → keypair.json.bak');
|
|
}
|
|
|
|
const keyPair = crypto.generateKeyPairSync('ec', { namedCurve: 'prime256v1' });
|
|
const saved = {
|
|
privateKey: keyPair.privateKey.export({ type: 'pkcs8', format: 'der' }).toString('base64'),
|
|
publicKey: keyPair.publicKey.export({ type: 'spki', format: 'der' }).toString('base64'),
|
|
};
|
|
fs.writeFileSync(FILE, JSON.stringify(saved, null, 2));
|
|
console.log('Generated new ECDSA keypair → keypair.json');
|
|
console.log('⚠️ Re-authentication (SMS) required after keypair change.');
|