keygentoolshed
Version:
Key generation utilities for cryptographic operations. QUANTUM ENCRYPTION FOLDER UPDATE!!! See its folder for all <3
39 lines (33 loc) • 1.32 kB
JavaScript
import { generateKeyPair, exportJWK } from 'jose';
import { program } from 'commander';
import fs from 'fs';
async function generateJwk(keyType, keySize, keyId) {
let keyPair;
if (keyType === 'RSA') {
keyPair = await generateKeyPair('RS256', { modulusLength: keySize });
} else if (keyType === 'EC') {
keyPair = await generateKeyPair('ES256', { crv: keySize });
} else {
throw new Error('Unsupported key type. Use RSA or EC.');
}
const jwk = await exportJWK(keyPair.publicKey);
jwk.kid = keyId;
jwk.use = 'sig';
return jwk;
}
program
.version('1.0.0')
.description('Generate a JSON Web Key (JWK)')
.requiredOption('-t, --type <type>', 'Key type (RSA or EC)')
.requiredOption('-s, --size <size>', 'Key size (e.g., 2048 for RSA, P-256 for EC)')
.requiredOption('-i, --id <id>', 'Key ID')
.action(async (options) => {
try {
const jwk = await generateJwk(options.type, options.size, options.id);
fs.writeFileSync('./jwk.json', JSON.stringify(jwk, null, 4));
console.log('JWK generated and saved to jwk.json');
} catch (error) {
console.error('Error generating JWK:', error.message);
}
});
program.parse(process.argv);